From 54c4f7631402d78c87a4c27764e45d2cc889685e Mon Sep 17 00:00:00 2001 From: Krzysztof Sobolewski Date: Wed, 24 Apr 2024 14:38:09 +0200 Subject: [PATCH] Replace uses of newParameterizedType This uses the "well known" trick, used already elsewhere in the code, to use the anonymous inner class to force reification of type parameters, so that `Key` can get the exact type parameter information via reflection. This saves us a utility method and an unchecked cast. --- .../src/main/java/io/trino/server/Server.java | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/core/trino-main/src/main/java/io/trino/server/Server.java b/core/trino-main/src/main/java/io/trino/server/Server.java index 13b797fd67ba..68ff9d8040f8 100644 --- a/core/trino-main/src/main/java/io/trino/server/Server.java +++ b/core/trino-main/src/main/java/io/trino/server/Server.java @@ -20,7 +20,6 @@ import com.google.inject.Key; import com.google.inject.Module; import com.google.inject.TypeLiteral; -import com.google.inject.util.Types; import io.airlift.bootstrap.ApplicationConfigurationException; import io.airlift.bootstrap.Bootstrap; import io.airlift.discovery.client.Announcer; @@ -148,7 +147,7 @@ private void doStart(String trinoVersion) injector.getInstance(PluginInstaller.class).loadPlugins(); - var catalogStoreManager = injector.getInstance(optionalKey(CatalogStoreManager.class)); + var catalogStoreManager = injector.getInstance(Key.get(new TypeLiteral>() {})); if (catalogStoreManager.isPresent()) { catalogStoreManager.get().loadConfiguredCatalogStore(); } @@ -173,16 +172,17 @@ private void doStart(String trinoVersion) injector.getInstance(SessionPropertyDefaults.class).loadConfigurationManager(); injector.getInstance(ResourceGroupManager.class).loadConfigurationManager(); injector.getInstance(AccessControlManager.class).loadSystemAccessControl(); - injector.getInstance(optionalKey(PasswordAuthenticatorManager.class)) + injector.getInstance(Key.get(new TypeLiteral>() {})) .ifPresent(PasswordAuthenticatorManager::loadPasswordAuthenticator); injector.getInstance(EventListenerManager.class).loadEventListeners(); injector.getInstance(GroupProviderManager.class).loadConfiguredGroupProvider(); injector.getInstance(ExchangeManagerRegistry.class).loadExchangeManager(); injector.getInstance(CertificateAuthenticatorManager.class).loadCertificateAuthenticator(); - injector.getInstance(optionalKey(HeaderAuthenticatorManager.class)) + injector.getInstance(Key.get(new TypeLiteral>() {})) .ifPresent(HeaderAuthenticatorManager::loadHeaderAuthenticator); - injector.getInstance(optionalKey(OAuth2Client.class)).ifPresent(OAuth2Client::load); + injector.getInstance(Key.get(new TypeLiteral>() {})) + .ifPresent(OAuth2Client::load); injector.getInstance(Announcer.class).start(); @@ -225,12 +225,6 @@ public static void addConnectorEventListeners( .forEach(eventListenerManager::addEventListener); } - @SuppressWarnings("unchecked") - private static Key> optionalKey(Class type) - { - return Key.get((TypeLiteral>) TypeLiteral.get(Types.newParameterizedType(Optional.class, type))); - } - private static void addMessages(StringBuilder output, String type, List messages) { if (messages.isEmpty()) {