Search in sources :

Example 31 with TypeLiteral

use of com.google.inject.TypeLiteral in project presto by prestodb.

the class PrestoSparkModule method setup.

@Override
protected void setup(Binder binder) {
    // configs
    // TODO: decouple configuration properties that don't make sense on Spark
    configBinder(binder).bindConfig(NodeSchedulerConfig.class);
    configBinder(binder).bindConfig(SimpleTtlNodeSelectorConfig.class);
    configBinder(binder).bindConfig(QueryManagerConfig.class);
    configBinder(binder).bindConfigGlobalDefaults(QueryManagerConfig.class, PrestoSparkSettingsRequirements::setDefaults);
    configBinder(binder).bindConfig(FeaturesConfig.class);
    configBinder(binder).bindConfigGlobalDefaults(FeaturesConfig.class, PrestoSparkSettingsRequirements::setDefaults);
    configBinder(binder).bindConfig(MemoryManagerConfig.class);
    configBinder(binder).bindConfig(TaskManagerConfig.class);
    configBinder(binder).bindConfig(TransactionManagerConfig.class);
    configBinder(binder).bindConfig(NodeMemoryConfig.class);
    configBinder(binder).bindConfig(WarningCollectorConfig.class);
    configBinder(binder).bindConfig(NodeSpillConfig.class);
    configBinder(binder).bindConfig(CompilerConfig.class);
    configBinder(binder).bindConfig(SqlEnvironmentConfig.class);
    configBinder(binder).bindConfig(StaticFunctionNamespaceStoreConfig.class);
    configBinder(binder).bindConfig(PrestoSparkConfig.class);
    configBinder(binder).bindConfig(TracingConfig.class);
    // json codecs
    jsonCodecBinder(binder).bindJsonCodec(ViewDefinition.class);
    jsonCodecBinder(binder).bindJsonCodec(TaskInfo.class);
    jsonCodecBinder(binder).bindJsonCodec(PrestoSparkTaskDescriptor.class);
    jsonCodecBinder(binder).bindJsonCodec(PlanFragment.class);
    jsonCodecBinder(binder).bindJsonCodec(TaskSource.class);
    jsonCodecBinder(binder).bindJsonCodec(TableCommitContext.class);
    jsonCodecBinder(binder).bindJsonCodec(ExplainAnalyzeContext.class);
    jsonCodecBinder(binder).bindJsonCodec(ExecutionFailureInfo.class);
    jsonCodecBinder(binder).bindJsonCodec(StageInfo.class);
    jsonCodecBinder(binder).bindJsonCodec(OperatorStats.class);
    jsonCodecBinder(binder).bindJsonCodec(QueryInfo.class);
    jsonCodecBinder(binder).bindJsonCodec(PrestoSparkQueryStatusInfo.class);
    jsonCodecBinder(binder).bindJsonCodec(PrestoSparkQueryData.class);
    jsonCodecBinder(binder).bindListJsonCodec(TaskMemoryReservationSummary.class);
    // smile codecs
    smileCodecBinder(binder).bindSmileCodec(TaskSource.class);
    smileCodecBinder(binder).bindSmileCodec(TaskInfo.class);
    PrestoSparkConfig prestoSparkConfig = buildConfigObject(PrestoSparkConfig.class);
    if (prestoSparkConfig.isSmileSerializationEnabled()) {
        binder.bind(new TypeLiteral<Codec<TaskSource>>() {
        }).to(new TypeLiteral<SmileCodec<TaskSource>>() {
        }).in(Scopes.SINGLETON);
        binder.bind(new TypeLiteral<Codec<TaskInfo>>() {
        }).to(new TypeLiteral<SmileCodec<TaskInfo>>() {
        }).in(Scopes.SINGLETON);
    } else {
        binder.bind(new TypeLiteral<Codec<TaskSource>>() {
        }).to(new TypeLiteral<JsonCodec<TaskSource>>() {
        }).in(Scopes.SINGLETON);
        binder.bind(new TypeLiteral<Codec<TaskInfo>>() {
        }).to(new TypeLiteral<JsonCodec<TaskInfo>>() {
        }).in(Scopes.SINGLETON);
    }
    // index manager
    binder.bind(IndexManager.class).in(Scopes.SINGLETON);
    // handle resolver
    binder.install(new HandleJsonModule());
    // plugin manager
    configBinder(binder).bindConfig(PluginManagerConfig.class);
    binder.bind(PluginManager.class).in(Scopes.SINGLETON);
    // catalog manager
    binder.bind(StaticCatalogStore.class).in(Scopes.SINGLETON);
    configBinder(binder).bindConfig(StaticCatalogStoreConfig.class);
    // catalog
    binder.bind(ConnectorManager.class).in(Scopes.SINGLETON);
    binder.bind(CatalogManager.class).in(Scopes.SINGLETON);
    // property managers
    binder.bind(SessionPropertyManager.class).toProvider(PrestoSparkSessionPropertyManagerProvider.class).in(Scopes.SINGLETON);
    binder.bind(SystemSessionProperties.class).in(Scopes.SINGLETON);
    binder.bind(PrestoSparkSessionProperties.class).in(Scopes.SINGLETON);
    binder.bind(SessionPropertyDefaults.class).in(Scopes.SINGLETON);
    binder.bind(SchemaPropertyManager.class).in(Scopes.SINGLETON);
    binder.bind(TablePropertyManager.class).in(Scopes.SINGLETON);
    binder.bind(ColumnPropertyManager.class).in(Scopes.SINGLETON);
    binder.bind(AnalyzePropertyManager.class).in(Scopes.SINGLETON);
    binder.bind(QuerySessionSupplier.class).in(Scopes.SINGLETON);
    // block encodings
    binder.bind(BlockEncodingManager.class).in(Scopes.SINGLETON);
    binder.bind(BlockEncodingSerde.class).to(BlockEncodingManager.class).in(Scopes.SINGLETON);
    newSetBinder(binder, BlockEncoding.class);
    jsonBinder(binder).addSerializerBinding(Block.class).to(BlockJsonSerde.Serializer.class);
    jsonBinder(binder).addDeserializerBinding(Block.class).to(BlockJsonSerde.Deserializer.class);
    // metadata
    binder.bind(FunctionAndTypeManager.class).in(Scopes.SINGLETON);
    binder.bind(MetadataManager.class).in(Scopes.SINGLETON);
    binder.bind(Metadata.class).to(MetadataManager.class).in(Scopes.SINGLETON);
    binder.bind(StaticFunctionNamespaceStore.class).in(Scopes.SINGLETON);
    // type
    newSetBinder(binder, Type.class);
    binder.bind(TypeManager.class).to(FunctionAndTypeManager.class).in(Scopes.SINGLETON);
    jsonBinder(binder).addDeserializerBinding(Type.class).to(TypeDeserializer.class);
    // PageSorter
    binder.bind(PageSorter.class).to(PagesIndexPageSorter.class).in(Scopes.SINGLETON);
    // PageIndexer
    binder.bind(PagesIndex.Factory.class).to(PagesIndex.DefaultFactory.class);
    binder.bind(PageIndexerFactory.class).to(GroupByHashPageIndexerFactory.class).in(Scopes.SINGLETON);
    // compilers
    binder.bind(JoinFilterFunctionCompiler.class).in(Scopes.SINGLETON);
    newExporter(binder).export(JoinFilterFunctionCompiler.class).withGeneratedName();
    binder.bind(JoinCompiler.class).in(Scopes.SINGLETON);
    newExporter(binder).export(JoinCompiler.class).withGeneratedName();
    binder.bind(OrderingCompiler.class).in(Scopes.SINGLETON);
    newExporter(binder).export(OrderingCompiler.class).withGeneratedName();
    binder.bind(LookupJoinOperators.class).in(Scopes.SINGLETON);
    binder.bind(DomainTranslator.class).to(RowExpressionDomainTranslator.class).in(Scopes.SINGLETON);
    binder.bind(PredicateCompiler.class).to(RowExpressionPredicateCompiler.class).in(Scopes.SINGLETON);
    binder.bind(DeterminismEvaluator.class).to(RowExpressionDeterminismEvaluator.class).in(Scopes.SINGLETON);
    binder.bind(ExpressionCompiler.class).in(Scopes.SINGLETON);
    binder.bind(PageFunctionCompiler.class).in(Scopes.SINGLETON);
    // split manager
    binder.bind(SplitManager.class).in(Scopes.SINGLETON);
    // partitioning provider manager
    binder.bind(PartitioningProviderManager.class).in(Scopes.SINGLETON);
    // executors
    ExecutorService executor = newCachedThreadPool(daemonThreadsNamed("presto-spark-executor-%s"));
    binder.bind(Executor.class).toInstance(executor);
    binder.bind(ExecutorService.class).toInstance(executor);
    binder.bind(ScheduledExecutorService.class).toInstance(newScheduledThreadPool(0, daemonThreadsNamed("presto-spark-scheduled-executor-%s")));
    // task executor
    binder.bind(EmbedVersion.class).in(Scopes.SINGLETON);
    binder.bind(MultilevelSplitQueue.class).in(Scopes.SINGLETON);
    binder.bind(TaskExecutor.class).in(Scopes.SINGLETON);
    // data stream provider
    binder.bind(PageSourceManager.class).in(Scopes.SINGLETON);
    binder.bind(PageSourceProvider.class).to(PageSourceManager.class).in(Scopes.SINGLETON);
    // connector distributed metadata manager
    binder.bind(ConnectorMetadataUpdaterManager.class).in(Scopes.SINGLETON);
    // page sink provider
    binder.bind(PageSinkManager.class).in(Scopes.SINGLETON);
    binder.bind(PageSinkProvider.class).to(PageSinkManager.class).in(Scopes.SINGLETON);
    // query explainer
    binder.bind(QueryExplainer.class).in(Scopes.SINGLETON);
    // parser
    binder.bind(PlanChecker.class).in(Scopes.SINGLETON);
    binder.bind(SqlParser.class).in(Scopes.SINGLETON);
    binder.bind(SqlParserOptions.class).toInstance(sqlParserOptions);
    // planner
    binder.bind(PlanFragmenter.class).in(Scopes.SINGLETON);
    binder.bind(PlanOptimizers.class).in(Scopes.SINGLETON);
    binder.bind(ConnectorPlanOptimizerManager.class).in(Scopes.SINGLETON);
    binder.bind(LocalExecutionPlanner.class).in(Scopes.SINGLETON);
    configBinder(binder).bindConfig(FileFragmentResultCacheConfig.class);
    binder.bind(FragmentCacheStats.class).in(Scopes.SINGLETON);
    binder.bind(IndexJoinLookupStats.class).in(Scopes.SINGLETON);
    binder.bind(QueryIdGenerator.class).in(Scopes.SINGLETON);
    binder.bind(QueryPreparer.class).in(Scopes.SINGLETON);
    jsonBinder(binder).addKeySerializerBinding(VariableReferenceExpression.class).to(VariableReferenceExpressionSerializer.class);
    jsonBinder(binder).addKeyDeserializerBinding(VariableReferenceExpression.class).to(VariableReferenceExpressionDeserializer.class);
    // statistics calculator / cost calculator
    binder.install(new StatsCalculatorModule());
    binder.bind(CostCalculator.class).to(CostCalculatorUsingExchanges.class).in(Scopes.SINGLETON);
    binder.bind(CostCalculator.class).annotatedWith(CostCalculator.EstimatedExchanges.class).to(CostCalculatorWithEstimatedExchanges.class).in(Scopes.SINGLETON);
    binder.bind(CostComparator.class).in(Scopes.SINGLETON);
    // JMX (Do not export to the real MXBean server, as the Presto context may be created multiple times per JVM)
    binder.bind(MBeanServer.class).toInstance(new TestingMBeanServer());
    binder.bind(MBeanExporter.class).in(Scopes.SINGLETON);
    // spill
    binder.bind(SpillerFactory.class).to(GenericSpillerFactory.class).in(Scopes.SINGLETON);
    binder.bind(SingleStreamSpillerFactory.class).to(TempStorageSingleStreamSpillerFactory.class).in(Scopes.SINGLETON);
    binder.bind(PartitioningSpillerFactory.class).to(GenericPartitioningSpillerFactory.class).in(Scopes.SINGLETON);
    binder.bind(SpillerStats.class).in(Scopes.SINGLETON);
    binder.bind(StandaloneSpillerFactory.class).to(TempStorageStandaloneSpillerFactory.class).in(Scopes.SINGLETON);
    // monitoring
    jsonCodecBinder(binder).bindJsonCodec(OperatorInfo.class);
    binder.bind(QueryMonitor.class).in(Scopes.SINGLETON);
    configBinder(binder).bindConfig(QueryMonitorConfig.class);
    binder.bind(SplitMonitor.class).in(Scopes.SINGLETON);
    // Determine the NodeVersion
    ServerConfig serverConfig = buildConfigObject(ServerConfig.class);
    NodeVersion nodeVersion = new NodeVersion(serverConfig.getPrestoVersion());
    binder.bind(NodeVersion.class).toInstance(nodeVersion);
    // Support DDL statements. Helper class binds DDL statements to DataDefinitionTasks
    PrestoDataDefBindingHelper.bindDDLDefinitionTasks(binder);
    // TODO: Decouple node specific system tables
    binder.bind(QueryManager.class).to(PrestoSparkQueryManager.class).in(Scopes.SINGLETON);
    binder.bind(TaskManager.class).to(PrestoSparkTaskManager.class).in(Scopes.SINGLETON);
    binder.install(new SystemConnectorModule());
    // TODO: support explain analyze for Spark
    binder.bind(new TypeLiteral<Optional<ExplainAnalyzeContext>>() {
    }).toInstance(Optional.of(new ExplainAnalyzeContext((queryId) -> {
        throw new UnsupportedOperationException("explain analyze is not supported");
    })));
    // TODO: support CBO, supply real nodes count
    binder.bind(TaskCountEstimator.class).toInstance(new TaskCountEstimator(() -> 1000));
    // TODO: Decouple and remove: required by ConnectorManager
    binder.bind(InternalNodeManager.class).toInstance(new PrestoSparkInternalNodeManager());
    // TODO: Decouple and remove: required by PluginManager
    binder.bind(InternalResourceGroupManager.class).in(Scopes.SINGLETON);
    binder.bind(ResourceGroupManager.class).to(InternalResourceGroupManager.class);
    binder.bind(new TypeLiteral<ResourceGroupManager<?>>() {
    }).to(new TypeLiteral<InternalResourceGroupManager<?>>() {
    });
    binder.bind(LegacyResourceGroupConfigurationManager.class).in(Scopes.SINGLETON);
    binder.bind(ClusterMemoryPoolManager.class).toInstance(((poolId, listener) -> {
    }));
    binder.bind(QueryPrerequisitesManager.class).in(Scopes.SINGLETON);
    binder.bind(ResourceGroupService.class).to(NoopResourceGroupService.class).in(Scopes.SINGLETON);
    binder.bind(NodeTtlFetcherManager.class).to(ThrowingNodeTtlFetcherManager.class).in(Scopes.SINGLETON);
    binder.bind(ClusterTtlProviderManager.class).to(ThrowingClusterTtlProviderManager.class).in(Scopes.SINGLETON);
    // TODO: Decouple and remove: required by SessionPropertyDefaults, PluginManager, InternalResourceGroupManager, ConnectorManager
    configBinder(binder).bindConfig(NodeConfig.class);
    binder.bind(NodeInfo.class).in(Scopes.SINGLETON);
    // TODO: Decouple and remove: required by LocalExecutionPlanner, PlanFragmenter
    binder.bind(NodePartitioningManager.class).to(PrestoSparkNodePartitioningManager.class).in(Scopes.SINGLETON);
    // TODO: Decouple and remove: required by PluginManager
    install(new ServerSecurityModule());
    // spark specific
    binder.bind(SparkProcessType.class).toInstance(sparkProcessType);
    binder.bind(PrestoSparkExecutionExceptionFactory.class).in(Scopes.SINGLETON);
    binder.bind(PrestoSparkSettingsRequirements.class).in(Scopes.SINGLETON);
    binder.bind(PrestoSparkQueryPlanner.class).in(Scopes.SINGLETON);
    binder.bind(PrestoSparkPlanFragmenter.class).in(Scopes.SINGLETON);
    binder.bind(PrestoSparkRddFactory.class).in(Scopes.SINGLETON);
    binder.bind(PrestoSparkTaskExecutorFactory.class).in(Scopes.SINGLETON);
    binder.bind(PrestoSparkQueryExecutionFactory.class).in(Scopes.SINGLETON);
    binder.bind(PrestoSparkService.class).in(Scopes.SINGLETON);
    binder.bind(PrestoSparkBroadcastTableCacheManager.class).in(Scopes.SINGLETON);
    newSetBinder(binder, PrestoSparkServiceWaitTimeMetrics.class);
    // extra credentials and authenticator for Presto-on-Spark
    newSetBinder(binder, PrestoSparkCredentialsProvider.class);
    newSetBinder(binder, PrestoSparkAuthenticatorProvider.class);
}
Also used : RowExpressionDomainTranslator(com.facebook.presto.sql.relational.RowExpressionDomainTranslator) PrestoSparkBroadcastTableCacheManager(com.facebook.presto.spark.execution.PrestoSparkBroadcastTableCacheManager) PageSourceProvider(com.facebook.presto.split.PageSourceProvider) PluginManagerConfig(com.facebook.presto.server.PluginManagerConfig) QueryExplainer(com.facebook.presto.sql.analyzer.QueryExplainer) ConnectorPlanOptimizerManager(com.facebook.presto.sql.planner.ConnectorPlanOptimizerManager) ColumnPropertyManager(com.facebook.presto.metadata.ColumnPropertyManager) OperatorStats(com.facebook.presto.operator.OperatorStats) StageInfo(com.facebook.presto.execution.StageInfo) InternalNodeManager(com.facebook.presto.metadata.InternalNodeManager) PrestoSparkTaskExecutorFactory(com.facebook.presto.spark.execution.PrestoSparkTaskExecutorFactory) ThrowingNodeTtlFetcherManager(com.facebook.presto.ttl.nodettlfetchermanagers.ThrowingNodeTtlFetcherManager) NoOpFragmentResultCacheManager(com.facebook.presto.operator.NoOpFragmentResultCacheManager) Executors.newScheduledThreadPool(java.util.concurrent.Executors.newScheduledThreadPool) Multibinder.newSetBinder(com.google.inject.multibindings.Multibinder.newSetBinder) QueryManagerConfig(com.facebook.presto.execution.QueryManagerConfig) FragmentResultCacheManager(com.facebook.presto.operator.FragmentResultCacheManager) PageFunctionCompiler(com.facebook.presto.sql.gen.PageFunctionCompiler) TaskCountEstimator(com.facebook.presto.cost.TaskCountEstimator) ServerConfig(com.facebook.presto.server.ServerConfig) ClusterTtlProviderManager(com.facebook.presto.ttl.clusterttlprovidermanagers.ClusterTtlProviderManager) SessionPropertyDefaults(com.facebook.presto.server.SessionPropertyDefaults) EmbedVersion(com.facebook.presto.version.EmbedVersion) PageSinkManager(com.facebook.presto.split.PageSinkManager) GenericPartitioningSpillerFactory(com.facebook.presto.spiller.GenericPartitioningSpillerFactory) StandaloneSpillerFactory(com.facebook.presto.spiller.StandaloneSpillerFactory) DomainTranslator(com.facebook.presto.spi.relation.DomainTranslator) QueryIdGenerator(com.facebook.presto.execution.QueryIdGenerator) FeaturesConfig(com.facebook.presto.sql.analyzer.FeaturesConfig) QueryInfo(com.facebook.presto.execution.QueryInfo) QueryPreparer(com.facebook.presto.execution.QueryPreparer) QuerySessionSupplier(com.facebook.presto.server.QuerySessionSupplier) RowExpressionPredicateCompiler(com.facebook.presto.sql.gen.RowExpressionPredicateCompiler) FragmentCacheStats(com.facebook.presto.operator.FragmentCacheStats) PrestoSparkInternalNodeManager(com.facebook.presto.spark.node.PrestoSparkInternalNodeManager) TaskMemoryReservationSummary(com.facebook.presto.operator.TaskMemoryReservationSummary) InternalResourceGroupManager(com.facebook.presto.execution.resourceGroups.InternalResourceGroupManager) TypeLiteral(com.google.inject.TypeLiteral) SystemSessionProperties(com.facebook.presto.SystemSessionProperties) ViewDefinition(com.facebook.presto.metadata.ViewDefinition) NodeInfo(com.facebook.airlift.node.NodeInfo) TempStorageSingleStreamSpillerFactory(com.facebook.presto.spiller.TempStorageSingleStreamSpillerFactory) VariableReferenceExpressionDeserializer(com.facebook.presto.sql.Serialization.VariableReferenceExpressionDeserializer) ResourceGroupService(com.facebook.presto.resourcemanager.ResourceGroupService) LookupJoinOperators(com.facebook.presto.operator.LookupJoinOperators) NoopResourceGroupService(com.facebook.presto.resourcemanager.NoopResourceGroupService) StaticCatalogStore(com.facebook.presto.metadata.StaticCatalogStore) Binder(com.google.inject.Binder) BlockEncodingManager(com.facebook.presto.common.block.BlockEncodingManager) StaticFunctionNamespaceStoreConfig(com.facebook.presto.metadata.StaticFunctionNamespaceStoreConfig) GenericSpillerFactory(com.facebook.presto.spiller.GenericSpillerFactory) PrestoSparkExecutionExceptionFactory(com.facebook.presto.spark.execution.PrestoSparkExecutionExceptionFactory) ScheduledExecutorService(java.util.concurrent.ScheduledExecutorService) PageSorter(com.facebook.presto.spi.PageSorter) AnalyzePropertyManager(com.facebook.presto.metadata.AnalyzePropertyManager) IndexJoinLookupStats(com.facebook.presto.operator.index.IndexJoinLookupStats) TransactionManager(com.facebook.presto.transaction.TransactionManager) ResourceGroupManager(com.facebook.presto.execution.resourceGroups.ResourceGroupManager) LegacyResourceGroupConfigurationManager(com.facebook.presto.execution.resourceGroups.LegacyResourceGroupConfigurationManager) TableCommitContext(com.facebook.presto.operator.TableCommitContext) ClusterMemoryPoolManager(com.facebook.presto.spi.memory.ClusterMemoryPoolManager) PrestoSparkTaskManager(com.facebook.presto.spark.node.PrestoSparkTaskManager) Executor(java.util.concurrent.Executor) SystemConnectorModule(com.facebook.presto.connector.system.SystemConnectorModule) ServerSecurityModule(com.facebook.presto.server.security.ServerSecurityModule) PrestoSparkNodePartitioningManager(com.facebook.presto.spark.node.PrestoSparkNodePartitioningManager) PrestoSparkRddFactory(com.facebook.presto.spark.planner.PrestoSparkRddFactory) SqlEnvironmentConfig(com.facebook.presto.sql.SqlEnvironmentConfig) PrestoSparkQueryPlanner(com.facebook.presto.spark.planner.PrestoSparkQueryPlanner) MultilevelSplitQueue(com.facebook.presto.execution.executor.MultilevelSplitQueue) StaticCatalogStoreConfig(com.facebook.presto.metadata.StaticCatalogStoreConfig) TracingConfig(com.facebook.presto.tracing.TracingConfig) QueryMonitor(com.facebook.presto.event.QueryMonitor) StaticFunctionNamespaceStore(com.facebook.presto.metadata.StaticFunctionNamespaceStore) InMemoryTransactionManager(com.facebook.presto.transaction.InMemoryTransactionManager) ThrowingClusterTtlProviderManager(com.facebook.presto.ttl.clusterttlprovidermanagers.ThrowingClusterTtlProviderManager) SpillerFactory(com.facebook.presto.spiller.SpillerFactory) TaskInfo(com.facebook.presto.execution.TaskInfo) Metadata(com.facebook.presto.metadata.Metadata) PartitioningProviderManager(com.facebook.presto.sql.planner.PartitioningProviderManager) FunctionAndTypeManager(com.facebook.presto.metadata.FunctionAndTypeManager) PartitioningSpillerFactory(com.facebook.presto.spiller.PartitioningSpillerFactory) LocalExecutionPlanner(com.facebook.presto.sql.planner.LocalExecutionPlanner) JsonCodec(com.facebook.airlift.json.JsonCodec) TablePropertyManager(com.facebook.presto.metadata.TablePropertyManager) SqlParserOptions(com.facebook.presto.sql.parser.SqlParserOptions) CostCalculatorWithEstimatedExchanges(com.facebook.presto.cost.CostCalculatorWithEstimatedExchanges) MetadataManager(com.facebook.presto.metadata.MetadataManager) TestingMBeanServer(org.weakref.jmx.testing.TestingMBeanServer) BlockEncoding(com.facebook.presto.common.block.BlockEncoding) VariableReferenceExpression(com.facebook.presto.spi.relation.VariableReferenceExpression) NodeVersion(com.facebook.presto.client.NodeVersion) TaskManagerConfig(com.facebook.presto.execution.TaskManagerConfig) PagesIndex(com.facebook.presto.operator.PagesIndex) TempStorageStandaloneSpillerFactory(com.facebook.presto.spiller.TempStorageStandaloneSpillerFactory) PlanFragment(com.facebook.presto.sql.planner.PlanFragment) WarningCollectorConfig(com.facebook.presto.execution.warnings.WarningCollectorConfig) AbstractConfigurationAwareModule(com.facebook.airlift.configuration.AbstractConfigurationAwareModule) ConnectorManager(com.facebook.presto.connector.ConnectorManager) PrestoSparkPlanFragmenter(com.facebook.presto.spark.planner.PrestoSparkPlanFragmenter) ExportBinder.newExporter(org.weakref.jmx.guice.ExportBinder.newExporter) HandleJsonModule(com.facebook.presto.metadata.HandleJsonModule) PageIndexerFactory(com.facebook.presto.spi.PageIndexerFactory) OperatorInfo(com.facebook.presto.operator.OperatorInfo) ConnectorMetadataUpdaterManager(com.facebook.presto.metadata.ConnectorMetadataUpdaterManager) FileFragmentResultCacheManager(com.facebook.presto.operator.FileFragmentResultCacheManager) NodeMemoryConfig(com.facebook.presto.memory.NodeMemoryConfig) CostCalculatorUsingExchanges(com.facebook.presto.cost.CostCalculatorUsingExchanges) CostCalculator(com.facebook.presto.cost.CostCalculator) JsonBinder.jsonBinder(com.facebook.airlift.json.JsonBinder.jsonBinder) NodeSpillConfig(com.facebook.presto.spiller.NodeSpillConfig) SplitManager(com.facebook.presto.split.SplitManager) SchemaPropertyManager(com.facebook.presto.metadata.SchemaPropertyManager) Codec(com.facebook.airlift.json.Codec) NodeConfig(com.facebook.airlift.node.NodeConfig) SqlParser(com.facebook.presto.sql.parser.SqlParser) PrestoSparkQueryManager(com.facebook.presto.spark.node.PrestoSparkQueryManager) Threads.daemonThreadsNamed(com.facebook.airlift.concurrent.Threads.daemonThreadsNamed) TransactionManagerConfig(com.facebook.presto.transaction.TransactionManagerConfig) NodeTtlFetcherManager(com.facebook.presto.ttl.nodettlfetchermanagers.NodeTtlFetcherManager) TaskExecutor(com.facebook.presto.execution.executor.TaskExecutor) Optional(java.util.Optional) PredicateCompiler(com.facebook.presto.spi.relation.PredicateCompiler) PluginManager(com.facebook.presto.server.PluginManager) ExpressionCompiler(com.facebook.presto.sql.gen.ExpressionCompiler) NodeSchedulerConfig(com.facebook.presto.execution.scheduler.NodeSchedulerConfig) DeterminismEvaluator(com.facebook.presto.spi.relation.DeterminismEvaluator) VariableReferenceExpressionSerializer(com.facebook.presto.sql.Serialization.VariableReferenceExpressionSerializer) SpillerStats(com.facebook.presto.spiller.SpillerStats) QueryPrerequisitesManager(com.facebook.presto.dispatcher.QueryPrerequisitesManager) PrestoDataDefBindingHelper(com.facebook.presto.util.PrestoDataDefBindingHelper) SimpleTtlNodeSelectorConfig(com.facebook.presto.execution.scheduler.nodeSelection.SimpleTtlNodeSelectorConfig) PageSinkProvider(com.facebook.presto.split.PageSinkProvider) RowExpressionDeterminismEvaluator(com.facebook.presto.sql.relational.RowExpressionDeterminismEvaluator) ExecutionFailureInfo(com.facebook.presto.execution.ExecutionFailureInfo) QueryManager(com.facebook.presto.execution.QueryManager) Singleton(javax.inject.Singleton) JsonCodecBinder.jsonCodecBinder(com.facebook.airlift.json.JsonCodecBinder.jsonCodecBinder) BlockJsonSerde(com.facebook.presto.block.BlockJsonSerde) BlockEncodingSerde(com.facebook.presto.common.block.BlockEncodingSerde) StatsCalculatorModule(com.facebook.presto.cost.StatsCalculatorModule) PlanOptimizers(com.facebook.presto.sql.planner.PlanOptimizers) PageSourceManager(com.facebook.presto.split.PageSourceManager) OrderingCompiler(com.facebook.presto.sql.gen.OrderingCompiler) PlanChecker(com.facebook.presto.sql.planner.sanity.PlanChecker) SmileCodec(com.facebook.airlift.json.smile.SmileCodec) TypeManager(com.facebook.presto.common.type.TypeManager) TaskManager(com.facebook.presto.execution.TaskManager) FileFragmentResultCacheConfig(com.facebook.presto.operator.FileFragmentResultCacheConfig) MBeanServer(javax.management.MBeanServer) Objects.requireNonNull(java.util.Objects.requireNonNull) ExplainAnalyzeContext(com.facebook.presto.execution.ExplainAnalyzeContext) IndexManager(com.facebook.presto.index.IndexManager) MemoryManagerConfig(com.facebook.presto.memory.MemoryManagerConfig) SingleStreamSpillerFactory(com.facebook.presto.spiller.SingleStreamSpillerFactory) SessionPropertyManager(com.facebook.presto.metadata.SessionPropertyManager) PlanFragmenter(com.facebook.presto.sql.planner.PlanFragmenter) Type(com.facebook.presto.common.type.Type) ExecutorService(java.util.concurrent.ExecutorService) PagesIndexPageSorter(com.facebook.presto.PagesIndexPageSorter) NodePartitioningManager(com.facebook.presto.sql.planner.NodePartitioningManager) SplitMonitor(com.facebook.presto.event.SplitMonitor) TaskSource(com.facebook.presto.execution.TaskSource) JoinFilterFunctionCompiler(com.facebook.presto.sql.gen.JoinFilterFunctionCompiler) SparkProcessType(com.facebook.presto.spark.classloader_interface.SparkProcessType) Scopes(com.google.inject.Scopes) Executors.newFixedThreadPool(java.util.concurrent.Executors.newFixedThreadPool) CatalogManager(com.facebook.presto.metadata.CatalogManager) CompilerConfig(com.facebook.presto.sql.planner.CompilerConfig) SmileCodecBinder.smileCodecBinder(com.facebook.airlift.json.smile.SmileCodecBinder.smileCodecBinder) TypeDeserializer(com.facebook.presto.type.TypeDeserializer) Provides(com.google.inject.Provides) QueryMonitorConfig(com.facebook.presto.event.QueryMonitorConfig) Executors.newCachedThreadPool(java.util.concurrent.Executors.newCachedThreadPool) CostComparator(com.facebook.presto.cost.CostComparator) ConfigBinder.configBinder(com.facebook.airlift.configuration.ConfigBinder.configBinder) GroupByHashPageIndexerFactory(com.facebook.presto.GroupByHashPageIndexerFactory) Block(com.facebook.presto.common.block.Block) MBeanExporter(org.weakref.jmx.MBeanExporter) JoinCompiler(com.facebook.presto.sql.gen.JoinCompiler) PrestoSparkPlanFragmenter(com.facebook.presto.spark.planner.PrestoSparkPlanFragmenter) RowExpressionPredicateCompiler(com.facebook.presto.sql.gen.RowExpressionPredicateCompiler) PrestoSparkQueryManager(com.facebook.presto.spark.node.PrestoSparkQueryManager) PrestoSparkTaskExecutorFactory(com.facebook.presto.spark.execution.PrestoSparkTaskExecutorFactory) PluginManager(com.facebook.presto.server.PluginManager) NodeVersion(com.facebook.presto.client.NodeVersion) JsonCodec(com.facebook.airlift.json.JsonCodec) Codec(com.facebook.airlift.json.Codec) SmileCodec(com.facebook.airlift.json.smile.SmileCodec) FunctionAndTypeManager(com.facebook.presto.metadata.FunctionAndTypeManager) QueryMonitor(com.facebook.presto.event.QueryMonitor) TestingMBeanServer(org.weakref.jmx.testing.TestingMBeanServer) MBeanServer(javax.management.MBeanServer) PrestoSparkRddFactory(com.facebook.presto.spark.planner.PrestoSparkRddFactory) JoinCompiler(com.facebook.presto.sql.gen.JoinCompiler) GenericPartitioningSpillerFactory(com.facebook.presto.spiller.GenericPartitioningSpillerFactory) QueryExplainer(com.facebook.presto.sql.analyzer.QueryExplainer) SessionPropertyDefaults(com.facebook.presto.server.SessionPropertyDefaults) StaticFunctionNamespaceStore(com.facebook.presto.metadata.StaticFunctionNamespaceStore) SparkProcessType(com.facebook.presto.spark.classloader_interface.SparkProcessType) BlockJsonSerde(com.facebook.presto.block.BlockJsonSerde) NoopResourceGroupService(com.facebook.presto.resourcemanager.NoopResourceGroupService) MultilevelSplitQueue(com.facebook.presto.execution.executor.MultilevelSplitQueue) NodeInfo(com.facebook.airlift.node.NodeInfo) PlanOptimizers(com.facebook.presto.sql.planner.PlanOptimizers) CostCalculatorWithEstimatedExchanges(com.facebook.presto.cost.CostCalculatorWithEstimatedExchanges) ClusterMemoryPoolManager(com.facebook.presto.spi.memory.ClusterMemoryPoolManager) PrestoSparkPlanFragmenter(com.facebook.presto.spark.planner.PrestoSparkPlanFragmenter) PlanFragmenter(com.facebook.presto.sql.planner.PlanFragmenter) TempStorageStandaloneSpillerFactory(com.facebook.presto.spiller.TempStorageStandaloneSpillerFactory) PagesIndex(com.facebook.presto.operator.PagesIndex) PrestoSparkBroadcastTableCacheManager(com.facebook.presto.spark.execution.PrestoSparkBroadcastTableCacheManager) Executor(java.util.concurrent.Executor) TaskExecutor(com.facebook.presto.execution.executor.TaskExecutor) InternalNodeManager(com.facebook.presto.metadata.InternalNodeManager) PrestoSparkInternalNodeManager(com.facebook.presto.spark.node.PrestoSparkInternalNodeManager) TypeLiteral(com.google.inject.TypeLiteral) ServerSecurityModule(com.facebook.presto.server.security.ServerSecurityModule) SystemConnectorModule(com.facebook.presto.connector.system.SystemConnectorModule) CostCalculatorUsingExchanges(com.facebook.presto.cost.CostCalculatorUsingExchanges) EmbedVersion(com.facebook.presto.version.EmbedVersion) ExplainAnalyzeContext(com.facebook.presto.execution.ExplainAnalyzeContext) PrestoSparkQueryPlanner(com.facebook.presto.spark.planner.PrestoSparkQueryPlanner) LookupJoinOperators(com.facebook.presto.operator.LookupJoinOperators) PageSinkManager(com.facebook.presto.split.PageSinkManager) StatsCalculatorModule(com.facebook.presto.cost.StatsCalculatorModule) CostComparator(com.facebook.presto.cost.CostComparator) TaskCountEstimator(com.facebook.presto.cost.TaskCountEstimator) RowExpressionDeterminismEvaluator(com.facebook.presto.sql.relational.RowExpressionDeterminismEvaluator) ConnectorPlanOptimizerManager(com.facebook.presto.sql.planner.ConnectorPlanOptimizerManager) JoinFilterFunctionCompiler(com.facebook.presto.sql.gen.JoinFilterFunctionCompiler) RowExpressionDomainTranslator(com.facebook.presto.sql.relational.RowExpressionDomainTranslator) TempStorageSingleStreamSpillerFactory(com.facebook.presto.spiller.TempStorageSingleStreamSpillerFactory) ConnectorManager(com.facebook.presto.connector.ConnectorManager) CatalogManager(com.facebook.presto.metadata.CatalogManager) Type(com.facebook.presto.common.type.Type) SparkProcessType(com.facebook.presto.spark.classloader_interface.SparkProcessType) ConnectorMetadataUpdaterManager(com.facebook.presto.metadata.ConnectorMetadataUpdaterManager) TablePropertyManager(com.facebook.presto.metadata.TablePropertyManager) TaskSource(com.facebook.presto.execution.TaskSource) PrestoSparkTaskManager(com.facebook.presto.spark.node.PrestoSparkTaskManager) QueryIdGenerator(com.facebook.presto.execution.QueryIdGenerator) PageSourceManager(com.facebook.presto.split.PageSourceManager) TaskInfo(com.facebook.presto.execution.TaskInfo) PagesIndexPageSorter(com.facebook.presto.PagesIndexPageSorter) QueryPreparer(com.facebook.presto.execution.QueryPreparer) ServerConfig(com.facebook.presto.server.ServerConfig) PrestoSparkNodePartitioningManager(com.facebook.presto.spark.node.PrestoSparkNodePartitioningManager) OrderingCompiler(com.facebook.presto.sql.gen.OrderingCompiler) LegacyResourceGroupConfigurationManager(com.facebook.presto.execution.resourceGroups.LegacyResourceGroupConfigurationManager) SqlParserOptions(com.facebook.presto.sql.parser.SqlParserOptions) ScheduledExecutorService(java.util.concurrent.ScheduledExecutorService) TestingMBeanServer(org.weakref.jmx.testing.TestingMBeanServer) QueryPrerequisitesManager(com.facebook.presto.dispatcher.QueryPrerequisitesManager) StaticCatalogStore(com.facebook.presto.metadata.StaticCatalogStore) IndexJoinLookupStats(com.facebook.presto.operator.index.IndexJoinLookupStats) SplitMonitor(com.facebook.presto.event.SplitMonitor) MBeanExporter(org.weakref.jmx.MBeanExporter) SqlParser(com.facebook.presto.sql.parser.SqlParser) InternalResourceGroupManager(com.facebook.presto.execution.resourceGroups.InternalResourceGroupManager) ResourceGroupManager(com.facebook.presto.execution.resourceGroups.ResourceGroupManager) ThrowingNodeTtlFetcherManager(com.facebook.presto.ttl.nodettlfetchermanagers.ThrowingNodeTtlFetcherManager) SpillerStats(com.facebook.presto.spiller.SpillerStats) IndexManager(com.facebook.presto.index.IndexManager) TaskExecutor(com.facebook.presto.execution.executor.TaskExecutor) BlockEncodingManager(com.facebook.presto.common.block.BlockEncodingManager) PlanChecker(com.facebook.presto.sql.planner.sanity.PlanChecker) VariableReferenceExpression(com.facebook.presto.spi.relation.VariableReferenceExpression) Block(com.facebook.presto.common.block.Block) ExpressionCompiler(com.facebook.presto.sql.gen.ExpressionCompiler) GroupByHashPageIndexerFactory(com.facebook.presto.GroupByHashPageIndexerFactory) ThrowingClusterTtlProviderManager(com.facebook.presto.ttl.clusterttlprovidermanagers.ThrowingClusterTtlProviderManager) ColumnPropertyManager(com.facebook.presto.metadata.ColumnPropertyManager) PageFunctionCompiler(com.facebook.presto.sql.gen.PageFunctionCompiler) PartitioningProviderManager(com.facebook.presto.sql.planner.PartitioningProviderManager) PrestoSparkTaskExecutorFactory(com.facebook.presto.spark.execution.PrestoSparkTaskExecutorFactory) GenericPartitioningSpillerFactory(com.facebook.presto.spiller.GenericPartitioningSpillerFactory) StandaloneSpillerFactory(com.facebook.presto.spiller.StandaloneSpillerFactory) TempStorageSingleStreamSpillerFactory(com.facebook.presto.spiller.TempStorageSingleStreamSpillerFactory) GenericSpillerFactory(com.facebook.presto.spiller.GenericSpillerFactory) PrestoSparkExecutionExceptionFactory(com.facebook.presto.spark.execution.PrestoSparkExecutionExceptionFactory) PrestoSparkRddFactory(com.facebook.presto.spark.planner.PrestoSparkRddFactory) SpillerFactory(com.facebook.presto.spiller.SpillerFactory) PartitioningSpillerFactory(com.facebook.presto.spiller.PartitioningSpillerFactory) TempStorageStandaloneSpillerFactory(com.facebook.presto.spiller.TempStorageStandaloneSpillerFactory) PageIndexerFactory(com.facebook.presto.spi.PageIndexerFactory) SingleStreamSpillerFactory(com.facebook.presto.spiller.SingleStreamSpillerFactory) GroupByHashPageIndexerFactory(com.facebook.presto.GroupByHashPageIndexerFactory) HandleJsonModule(com.facebook.presto.metadata.HandleJsonModule) InternalResourceGroupManager(com.facebook.presto.execution.resourceGroups.InternalResourceGroupManager) SchemaPropertyManager(com.facebook.presto.metadata.SchemaPropertyManager) FragmentCacheStats(com.facebook.presto.operator.FragmentCacheStats) GenericSpillerFactory(com.facebook.presto.spiller.GenericSpillerFactory) AnalyzePropertyManager(com.facebook.presto.metadata.AnalyzePropertyManager) LocalExecutionPlanner(com.facebook.presto.sql.planner.LocalExecutionPlanner) PrestoSparkExecutionExceptionFactory(com.facebook.presto.spark.execution.PrestoSparkExecutionExceptionFactory) PrestoSparkInternalNodeManager(com.facebook.presto.spark.node.PrestoSparkInternalNodeManager) SplitManager(com.facebook.presto.split.SplitManager) CostCalculator(com.facebook.presto.cost.CostCalculator) QuerySessionSupplier(com.facebook.presto.server.QuerySessionSupplier) MetadataManager(com.facebook.presto.metadata.MetadataManager) ScheduledExecutorService(java.util.concurrent.ScheduledExecutorService) ExecutorService(java.util.concurrent.ExecutorService) SystemSessionProperties(com.facebook.presto.SystemSessionProperties)

Example 32 with TypeLiteral

use of com.google.inject.TypeLiteral in project guice by google.

the class MoreTypes method canonicalizeForKey.

/**
 * Returns an type that's appropriate for use in a key.
 *
 * <p>If the raw type of {@code typeLiteral} is a {@code javax.inject.Provider}, this returns a
 * {@code com.google.inject.Provider} with the same type parameters.
 *
 * <p>If the type is a primitive, the corresponding wrapper type will be returned.
 *
 * @throws ConfigurationException if {@code type} contains a type variable
 */
public static <T> TypeLiteral<T> canonicalizeForKey(TypeLiteral<T> typeLiteral) {
    Type type = typeLiteral.getType();
    if (!isFullySpecified(type)) {
        Errors errors = new Errors().keyNotFullySpecified(typeLiteral);
        throw new ConfigurationException(errors.getMessages());
    }
    if (typeLiteral.getRawType() == javax.inject.Provider.class) {
        ParameterizedType parameterizedType = (ParameterizedType) type;
        // the following casts are generally unsafe, but com.google.inject.Provider extends
        // javax.inject.Provider and is covariant
        @SuppressWarnings("unchecked") TypeLiteral<T> guiceProviderType = (TypeLiteral<T>) TypeLiteral.get(Types.providerOf(getSharedTypeArguments(parameterizedType)[0]));
        return guiceProviderType;
    }
    @SuppressWarnings("unchecked") TypeLiteral<T> wrappedPrimitives = (TypeLiteral<T>) PRIMITIVE_TO_WRAPPER.get(typeLiteral);
    if (wrappedPrimitives != null) {
        return wrappedPrimitives;
    }
    // If we know this isn't a subclass, return as-is.
    if (typeLiteral.getClass() == TypeLiteral.class) {
        return typeLiteral;
    }
    // recreate the TypeLiteral to avoid anonymous TypeLiterals from holding refs to their
    // surrounding classes.
    @SuppressWarnings("unchecked") TypeLiteral<T> recreated = (TypeLiteral<T>) TypeLiteral.get(typeLiteral.getType());
    return recreated;
}
Also used : ParameterizedType(java.lang.reflect.ParameterizedType) GenericArrayType(java.lang.reflect.GenericArrayType) WildcardType(java.lang.reflect.WildcardType) ParameterizedType(java.lang.reflect.ParameterizedType) Type(java.lang.reflect.Type) TypeLiteral(com.google.inject.TypeLiteral) ConfigurationException(com.google.inject.ConfigurationException)

Example 33 with TypeLiteral

use of com.google.inject.TypeLiteral in project guice by google.

the class RealMultibinder method setOfExtendsOf.

@SuppressWarnings("unchecked")
static <T> TypeLiteral<Set<? extends T>> setOfExtendsOf(TypeLiteral<T> elementType) {
    Type extendsType = Types.subtypeOf(elementType.getType());
    Type setOfExtendsType = Types.setOf(extendsType);
    return (TypeLiteral<Set<? extends T>>) TypeLiteral.get(setOfExtendsType);
}
Also used : Type(java.lang.reflect.Type) TypeLiteral(com.google.inject.TypeLiteral)

Example 34 with TypeLiteral

use of com.google.inject.TypeLiteral in project guice by google.

the class RealMultibinder method collectionOfProvidersOf.

@SuppressWarnings("unchecked")
static <T> TypeLiteral<Collection<Provider<T>>> collectionOfProvidersOf(TypeLiteral<T> elementType) {
    Type providerType = Types.providerOf(elementType.getType());
    Type type = Types.collectionOf(providerType);
    return (TypeLiteral<Collection<Provider<T>>>) TypeLiteral.get(type);
}
Also used : Type(java.lang.reflect.Type) TypeLiteral(com.google.inject.TypeLiteral) Provider(com.google.inject.Provider)

Example 35 with TypeLiteral

use of com.google.inject.TypeLiteral in project guice by google.

the class TypeConverterBindingProcessor method prepareBuiltInConverters.

/**
 * Installs default converters for primitives, enums, and class literals.
 */
static void prepareBuiltInConverters(InjectorImpl injector) {
    // Configure type converters.
    convertToPrimitiveType(injector, int.class, Integer.class);
    convertToPrimitiveType(injector, long.class, Long.class);
    convertToPrimitiveType(injector, boolean.class, Boolean.class);
    convertToPrimitiveType(injector, byte.class, Byte.class);
    convertToPrimitiveType(injector, short.class, Short.class);
    convertToPrimitiveType(injector, float.class, Float.class);
    convertToPrimitiveType(injector, double.class, Double.class);
    convertToClass(injector, Character.class, new TypeConverter() {

        @Override
        public Object convert(String value, TypeLiteral<?> toType) {
            value = value.trim();
            if (value.length() != 1) {
                throw new RuntimeException("Length != 1.");
            }
            return value.charAt(0);
        }

        @Override
        public String toString() {
            return "TypeConverter<Character>";
        }
    });
    convertToClasses(injector, Matchers.subclassesOf(Enum.class), new TypeConverter() {

        // Unavoidable, only way to use Enum.valueOf
        @SuppressWarnings("rawtypes")
        @Override
        public Object convert(String value, TypeLiteral<?> toType) {
            return Enum.valueOf((Class) toType.getRawType(), value);
        }

        @Override
        public String toString() {
            return "TypeConverter<E extends Enum<E>>";
        }
    });
    internalConvertToTypes(injector, new AbstractMatcher<TypeLiteral<?>>() {

        @Override
        public boolean matches(TypeLiteral<?> typeLiteral) {
            return typeLiteral.getRawType() == Class.class;
        }

        @Override
        public String toString() {
            return "Class<?>";
        }
    }, new TypeConverter() {

        @Override
        public Object convert(String value, TypeLiteral<?> toType) {
            try {
                return Class.forName(value);
            } catch (ClassNotFoundException e) {
                throw new RuntimeException(e.getMessage());
            }
        }

        @Override
        public String toString() {
            return "TypeConverter<Class<?>>";
        }
    });
}
Also used : TypeConverter(com.google.inject.spi.TypeConverter) TypeLiteral(com.google.inject.TypeLiteral)

Aggregations

TypeLiteral (com.google.inject.TypeLiteral)195 Injector (com.google.inject.Injector)69 AbstractModule (com.google.inject.AbstractModule)56 Module (com.google.inject.Module)29 Test (org.junit.Test)28 Binder (com.google.inject.Binder)20 Key (com.google.inject.Key)18 Map (java.util.Map)18 Set (java.util.Set)18 Method (java.lang.reflect.Method)15 ParameterizedType (java.lang.reflect.ParameterizedType)15 ImmutableSet (com.google.common.collect.ImmutableSet)14 InjectionPoint (com.google.inject.spi.InjectionPoint)14 Provider (com.google.inject.Provider)12 Annotation (java.lang.annotation.Annotation)12 List (java.util.List)12 Type (java.lang.reflect.Type)11 ArrayList (java.util.ArrayList)11 HashMap (java.util.HashMap)11 HashSet (java.util.HashSet)11