diff --git a/lib/trino-plugin-toolkit/src/main/java/io/trino/plugin/base/jmx/ConnectorObjectNameGeneratorModule.java b/lib/trino-plugin-toolkit/src/main/java/io/trino/plugin/base/jmx/ConnectorObjectNameGeneratorModule.java index f98e61946c8b..d269bdc5a391 100644 --- a/lib/trino-plugin-toolkit/src/main/java/io/trino/plugin/base/jmx/ConnectorObjectNameGeneratorModule.java +++ b/lib/trino-plugin-toolkit/src/main/java/io/trino/plugin/base/jmx/ConnectorObjectNameGeneratorModule.java @@ -17,6 +17,7 @@ import com.google.inject.Binder; import com.google.inject.Module; import com.google.inject.Provides; +import io.trino.plugin.base.CatalogName; import org.weakref.jmx.ObjectNameBuilder; import org.weakref.jmx.ObjectNameGenerator; @@ -29,13 +30,11 @@ public class ConnectorObjectNameGeneratorModule implements Module { - private final String catalogName; private final String packageName; private final String defaultDomainBase; - public ConnectorObjectNameGeneratorModule(String catalogName, String packageName, String defaultDomainBase) + public ConnectorObjectNameGeneratorModule(String packageName, String defaultDomainBase) { - this.catalogName = requireNonNull(catalogName, "catalogName is null"); this.packageName = requireNonNull(packageName, "packageName is null"); this.defaultDomainBase = requireNonNull(defaultDomainBase, "defaultDomainBase is null"); } @@ -47,10 +46,10 @@ public void configure(Binder binder) } @Provides - ObjectNameGenerator createPrefixObjectNameGenerator(ObjectNameGeneratorConfig config) + ObjectNameGenerator createPrefixObjectNameGenerator(CatalogName catalogName, ObjectNameGeneratorConfig config) { String domainBase = firstNonNull(config.getDomainBase(), defaultDomainBase); - return new ConnectorObjectNameGenerator(packageName, domainBase, catalogName); + return new ConnectorObjectNameGenerator(packageName, domainBase, catalogName.toString()); } public static final class ConnectorObjectNameGenerator diff --git a/plugin/trino-base-jdbc/src/main/java/io/trino/plugin/jdbc/JdbcConnectorFactory.java b/plugin/trino-base-jdbc/src/main/java/io/trino/plugin/jdbc/JdbcConnectorFactory.java index 835b05a2b909..25a69c899b7e 100644 --- a/plugin/trino-base-jdbc/src/main/java/io/trino/plugin/jdbc/JdbcConnectorFactory.java +++ b/plugin/trino-base-jdbc/src/main/java/io/trino/plugin/jdbc/JdbcConnectorFactory.java @@ -16,6 +16,7 @@ import com.google.inject.Injector; import com.google.inject.Module; import io.airlift.bootstrap.Bootstrap; +import io.trino.plugin.base.CatalogName; import io.trino.spi.NodeManager; import io.trino.spi.VersionEmbedder; import io.trino.spi.connector.Connector; @@ -34,23 +35,13 @@ public class JdbcConnectorFactory implements ConnectorFactory { private final String name; - private final JdbcModuleProvider moduleProvider; + private final Module module; public JdbcConnectorFactory(String name, Module module) - { - this(name, catalogName -> module); - } - - /** - * @deprecated Prefer {@link JdbcConnectorFactory#JdbcConnectorFactory(String, Module)} instead. - * Notice that {@link io.trino.plugin.base.CatalogName} is available in guice context. - */ - @Deprecated - public JdbcConnectorFactory(String name, JdbcModuleProvider moduleProvider) { checkArgument(!isNullOrEmpty(name), "name is null or empty"); this.name = name; - this.moduleProvider = requireNonNull(moduleProvider, "moduleProvider is null"); + this.module = module; } @Override @@ -63,14 +54,16 @@ public String getName() public Connector create(String catalogName, Map requiredConfig, ConnectorContext context) { requireNonNull(requiredConfig, "requiredConfig is null"); + requireNonNull(module, "module is null"); checkSpiVersion(context, this); Bootstrap app = new Bootstrap( binder -> binder.bind(TypeManager.class).toInstance(context.getTypeManager()), binder -> binder.bind(NodeManager.class).toInstance(context.getNodeManager()), binder -> binder.bind(VersionEmbedder.class).toInstance(context.getVersionEmbedder()), - new JdbcModule(catalogName), - moduleProvider.getModule(catalogName)); + binder -> binder.bind(CatalogName.class).toInstance(new CatalogName(catalogName)), + new JdbcModule(), + module); Injector injector = app .doNotInitializeLogging() @@ -79,14 +72,4 @@ public Connector create(String catalogName, Map requiredConfig, return injector.getInstance(JdbcConnector.class); } - - /** - * @deprecated Prefer {@link JdbcConnectorFactory#JdbcConnectorFactory(String, Module)} instead. - * Notice that {@link io.trino.plugin.base.CatalogName} is available in guice context. - */ - @Deprecated - public interface JdbcModuleProvider - { - Module getModule(String catalogName); - } } diff --git a/plugin/trino-base-jdbc/src/main/java/io/trino/plugin/jdbc/JdbcModule.java b/plugin/trino-base-jdbc/src/main/java/io/trino/plugin/jdbc/JdbcModule.java index 4c1f6902465c..42a578380160 100644 --- a/plugin/trino-base-jdbc/src/main/java/io/trino/plugin/jdbc/JdbcModule.java +++ b/plugin/trino-base-jdbc/src/main/java/io/trino/plugin/jdbc/JdbcModule.java @@ -39,23 +39,14 @@ import static com.google.inject.multibindings.OptionalBinder.newOptionalBinder; import static io.airlift.configuration.ConditionalModule.conditionalModule; import static io.airlift.configuration.ConfigBinder.configBinder; -import static java.util.Objects.requireNonNull; import static org.weakref.jmx.guice.ExportBinder.newExporter; public class JdbcModule extends AbstractConfigurationAwareModule { - private final String catalogName; - - public JdbcModule(String catalogName) - { - this.catalogName = requireNonNull(catalogName, "catalogName is null"); - } - @Override public void setup(Binder binder) { - binder.bind(CatalogName.class).toInstance(new CatalogName(catalogName)); install(new JdbcDiagnosticModule()); install(new IdentifierMappingModule()); @@ -85,8 +76,9 @@ public void setup(Binder binder) bindSessionPropertiesProvider(binder, JdbcDynamicFilteringSessionProperties.class); binder.bind(DynamicFilteringStats.class).in(Scopes.SINGLETON); + Provider catalogName = binder.getProvider(CatalogName.class); newExporter(binder).export(DynamicFilteringStats.class) - .as(generator -> generator.generatedNameOf(DynamicFilteringStats.class, catalogName)); + .as(generator -> generator.generatedNameOf(DynamicFilteringStats.class, catalogName.get().toString())); binder.bind(CachingJdbcClient.class).in(Scopes.SINGLETON); binder.bind(JdbcClient.class).to(Key.get(CachingJdbcClient.class)).in(Scopes.SINGLETON); diff --git a/plugin/trino-delta-lake/src/main/java/io/trino/plugin/deltalake/InternalDeltaLakeConnectorFactory.java b/plugin/trino-delta-lake/src/main/java/io/trino/plugin/deltalake/InternalDeltaLakeConnectorFactory.java index 3184c3c84d68..a1243163e572 100644 --- a/plugin/trino-delta-lake/src/main/java/io/trino/plugin/deltalake/InternalDeltaLakeConnectorFactory.java +++ b/plugin/trino-delta-lake/src/main/java/io/trino/plugin/deltalake/InternalDeltaLakeConnectorFactory.java @@ -79,7 +79,7 @@ public static Connector createConnector( Bootstrap app = new Bootstrap( new EventModule(), new MBeanModule(), - new ConnectorObjectNameGeneratorModule(catalogName, "io.trino.plugin.deltalake", "trino.plugin.deltalake"), + new ConnectorObjectNameGeneratorModule("io.trino.plugin.deltalake", "trino.plugin.deltalake"), new JsonModule(), new MBeanServerModule(), new HdfsModule(), diff --git a/plugin/trino-elasticsearch/src/main/java/io/trino/plugin/elasticsearch/ElasticsearchConnectorFactory.java b/plugin/trino-elasticsearch/src/main/java/io/trino/plugin/elasticsearch/ElasticsearchConnectorFactory.java index edcb1d32e438..a7f745f31d8e 100644 --- a/plugin/trino-elasticsearch/src/main/java/io/trino/plugin/elasticsearch/ElasticsearchConnectorFactory.java +++ b/plugin/trino-elasticsearch/src/main/java/io/trino/plugin/elasticsearch/ElasticsearchConnectorFactory.java @@ -16,6 +16,7 @@ import com.google.inject.Injector; import io.airlift.bootstrap.Bootstrap; import io.airlift.json.JsonModule; +import io.trino.plugin.base.CatalogName; import io.trino.plugin.base.TypeDeserializerModule; import io.trino.plugin.base.jmx.ConnectorObjectNameGeneratorModule; import io.trino.plugin.base.jmx.MBeanServerModule; @@ -51,12 +52,13 @@ public Connector create(String catalogName, Map config, Connecto Bootstrap app = new Bootstrap( new MBeanModule(), new MBeanServerModule(), - new ConnectorObjectNameGeneratorModule(catalogName, "io.trino.plugin.elasticsearch", "trino.plugin.elasticsearch"), + new ConnectorObjectNameGeneratorModule("io.trino.plugin.elasticsearch", "trino.plugin.elasticsearch"), new JsonModule(), new TypeDeserializerModule(context.getTypeManager()), new ElasticsearchConnectorModule(), binder -> { binder.bind(NodeManager.class).toInstance(context.getNodeManager()); + binder.bind(CatalogName.class).toInstance(new CatalogName(catalogName)); }); Injector injector = app diff --git a/plugin/trino-hive/src/main/java/io/trino/plugin/hive/InternalHiveConnectorFactory.java b/plugin/trino-hive/src/main/java/io/trino/plugin/hive/InternalHiveConnectorFactory.java index 5f876fa3cbfc..0631707d7cd2 100644 --- a/plugin/trino-hive/src/main/java/io/trino/plugin/hive/InternalHiveConnectorFactory.java +++ b/plugin/trino-hive/src/main/java/io/trino/plugin/hive/InternalHiveConnectorFactory.java @@ -26,6 +26,7 @@ import io.trino.filesystem.hdfs.HdfsFileSystemModule; import io.trino.hdfs.HdfsModule; import io.trino.hdfs.authentication.HdfsAuthenticationModule; +import io.trino.plugin.base.CatalogName; import io.trino.plugin.base.CatalogNameModule; import io.trino.plugin.base.TypeDeserializerModule; import io.trino.plugin.base.classloader.ClassLoaderSafeConnectorAccessControl; @@ -103,7 +104,7 @@ public static Connector createConnector( new CatalogNameModule(catalogName), new EventModule(), new MBeanModule(), - new ConnectorObjectNameGeneratorModule(catalogName, "io.trino.plugin.hive", "trino.plugin.hive"), + new ConnectorObjectNameGeneratorModule("io.trino.plugin.hive", "trino.plugin.hive"), new JsonModule(), new TypeDeserializerModule(context.getTypeManager()), new HiveModule(), @@ -128,6 +129,7 @@ public static Connector createConnector( binder.bind(MetadataProvider.class).toInstance(context.getMetadataProvider()); binder.bind(PageIndexerFactory.class).toInstance(context.getPageIndexerFactory()); binder.bind(PageSorter.class).toInstance(context.getPageSorter()); + binder.bind(CatalogName.class).toInstance(new CatalogName(catalogName)); }, binder -> newSetBinder(binder, EventListener.class), binder -> bindSessionPropertiesProvider(binder, HiveSessionProperties.class), diff --git a/plugin/trino-iceberg/src/main/java/io/trino/plugin/iceberg/InternalIcebergConnectorFactory.java b/plugin/trino-iceberg/src/main/java/io/trino/plugin/iceberg/InternalIcebergConnectorFactory.java index 825cfe1c0ce4..44947a090c49 100644 --- a/plugin/trino-iceberg/src/main/java/io/trino/plugin/iceberg/InternalIcebergConnectorFactory.java +++ b/plugin/trino-iceberg/src/main/java/io/trino/plugin/iceberg/InternalIcebergConnectorFactory.java @@ -80,7 +80,7 @@ public static Connector createConnector( Bootstrap app = new Bootstrap( new EventModule(), new MBeanModule(), - new ConnectorObjectNameGeneratorModule(catalogName, "io.trino.plugin.iceberg", "trino.plugin.iceberg"), + new ConnectorObjectNameGeneratorModule("io.trino.plugin.iceberg", "trino.plugin.iceberg"), new JsonModule(), new IcebergModule(), new IcebergSecurityModule(), diff --git a/plugin/trino-raptor-legacy/src/main/java/io/trino/plugin/raptor/legacy/RaptorConnectorFactory.java b/plugin/trino-raptor-legacy/src/main/java/io/trino/plugin/raptor/legacy/RaptorConnectorFactory.java index d7242eb7047b..675b965750a6 100644 --- a/plugin/trino-raptor-legacy/src/main/java/io/trino/plugin/raptor/legacy/RaptorConnectorFactory.java +++ b/plugin/trino-raptor-legacy/src/main/java/io/trino/plugin/raptor/legacy/RaptorConnectorFactory.java @@ -18,6 +18,7 @@ import com.google.inject.Module; import io.airlift.bootstrap.Bootstrap; import io.airlift.json.JsonModule; +import io.trino.plugin.base.CatalogName; import io.trino.plugin.base.CatalogNameModule; import io.trino.plugin.base.jmx.ConnectorObjectNameGeneratorModule; import io.trino.plugin.base.jmx.MBeanServerModule; @@ -69,12 +70,13 @@ public Connector create(String catalogName, Map config, Connecto new CatalogNameModule(catalogName), new JsonModule(), new MBeanModule(), - new ConnectorObjectNameGeneratorModule(catalogName, "io.trino.plugin.raptor.legacy", "trino.plugin.raptor.legacy"), + new ConnectorObjectNameGeneratorModule("io.trino.plugin.raptor.legacy", "trino.plugin.raptor.legacy"), new MBeanServerModule(), binder -> { binder.bind(NodeManager.class).toInstance(context.getNodeManager()); binder.bind(PageSorter.class).toInstance(context.getPageSorter()); binder.bind(TypeManager.class).toInstance(context.getTypeManager()); + binder.bind(CatalogName.class).toInstance(new CatalogName(catalogName)); }, metadataModule, new BackupModule(backupProviders), diff --git a/plugin/trino-thrift/src/main/java/io/trino/plugin/thrift/ThriftConnectorFactory.java b/plugin/trino-thrift/src/main/java/io/trino/plugin/thrift/ThriftConnectorFactory.java index 7058e3c7dffa..c459f1a7060c 100644 --- a/plugin/trino-thrift/src/main/java/io/trino/plugin/thrift/ThriftConnectorFactory.java +++ b/plugin/trino-thrift/src/main/java/io/trino/plugin/thrift/ThriftConnectorFactory.java @@ -17,6 +17,7 @@ import com.google.inject.Module; import io.airlift.bootstrap.Bootstrap; import io.airlift.drift.transport.netty.client.DriftNettyClientModule; +import io.trino.plugin.base.CatalogName; import io.trino.plugin.base.jmx.ConnectorObjectNameGeneratorModule; import io.trino.plugin.base.jmx.MBeanServerModule; import io.trino.spi.connector.Connector; @@ -56,10 +57,11 @@ public Connector create(String catalogName, Map config, Connecto Bootstrap app = new Bootstrap( new MBeanModule(), new MBeanServerModule(), - new ConnectorObjectNameGeneratorModule(catalogName, "io.trino.plugin.thrift", "trino.plugin.thrift"), + new ConnectorObjectNameGeneratorModule("io.trino.plugin.thrift", "trino.plugin.thrift"), new DriftNettyClientModule(), binder -> { binder.bind(TypeManager.class).toInstance(context.getTypeManager()); + binder.bind(CatalogName.class).toInstance(new CatalogName(catalogName)); }, locationModule, new ThriftModule());