This is an automated email from the ASF dual-hosted git repository. collado pushed a commit to branch mcollado-hk2-di in repository https://gitbox.apache.org/repos/asf/polaris.git
commit d3b77f4da6db99f24d01740ea29848702cfa91dd Author: Michael Collado <collado.m...@gmail.com> AuthorDate: Mon Nov 25 14:55:11 2024 -0800 Remove dependency on HK2 from core module --- polaris-core/build.gradle.kts | 2 +- .../core/persistence/MetaStoreManagerFactory.java | 15 +------------ .../apache/polaris/service/PolarisApplication.java | 26 ++++++++++++++++++---- .../service}/context/RealmScopeContext.java | 5 ++++- .../persistence/cache/EntityCacheFactory.java | 3 ++- 5 files changed, 30 insertions(+), 21 deletions(-) diff --git a/polaris-core/build.gradle.kts b/polaris-core/build.gradle.kts index 9bd8888d..1099f7d3 100644 --- a/polaris-core/build.gradle.kts +++ b/polaris-core/build.gradle.kts @@ -68,7 +68,7 @@ dependencies { implementation(libs.swagger.annotations) implementation(libs.swagger.jaxrs) implementation(libs.jakarta.validation.api) - implementation("org.glassfish.hk2:hk2-api:3.0.6") + implementation("jakarta.inject:jakarta.inject-api:2.0.1") implementation("org.apache.iceberg:iceberg-aws") implementation(platform(libs.awssdk.bom)) diff --git a/polaris-core/src/main/java/org/apache/polaris/core/persistence/MetaStoreManagerFactory.java b/polaris-core/src/main/java/org/apache/polaris/core/persistence/MetaStoreManagerFactory.java index 52e60419..5ca642c2 100644 --- a/polaris-core/src/main/java/org/apache/polaris/core/persistence/MetaStoreManagerFactory.java +++ b/polaris-core/src/main/java/org/apache/polaris/core/persistence/MetaStoreManagerFactory.java @@ -23,18 +23,15 @@ import java.util.List; import java.util.Map; import java.util.function.Supplier; import org.apache.polaris.core.auth.PolarisSecretsManager.PrincipalSecretsResult; -import org.apache.polaris.core.context.CallContext; import org.apache.polaris.core.context.RealmContext; -import org.apache.polaris.core.context.RealmScope; import org.apache.polaris.core.storage.cache.StorageCredentialCache; -import org.glassfish.hk2.api.Factory; /** * Configuration interface for configuring the {@link PolarisMetaStoreManager} via Dropwizard * configuration */ @JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "type") -public interface MetaStoreManagerFactory extends Factory<PolarisMetaStoreManager> { +public interface MetaStoreManagerFactory { PolarisMetaStoreManager getOrCreateMetaStoreManager(RealmContext realmContext); @@ -44,16 +41,6 @@ public interface MetaStoreManagerFactory extends Factory<PolarisMetaStoreManager Map<String, PrincipalSecretsResult> bootstrapRealms(List<String> realms); - @RealmScope - @Override - default PolarisMetaStoreManager provide() { - RealmContext realmContext = CallContext.getCurrentContext().getRealmContext(); - return getOrCreateMetaStoreManager(realmContext); - } - - @Override - default void dispose(PolarisMetaStoreManager instance) {} - /** Purge all metadata for the realms provided */ void purgeRealms(List<String> realms); } diff --git a/polaris-service/src/main/java/org/apache/polaris/service/PolarisApplication.java b/polaris-service/src/main/java/org/apache/polaris/service/PolarisApplication.java index d9e04408..41d8ff9c 100644 --- a/polaris-service/src/main/java/org/apache/polaris/service/PolarisApplication.java +++ b/polaris-service/src/main/java/org/apache/polaris/service/PolarisApplication.java @@ -87,12 +87,11 @@ import org.apache.polaris.core.auth.PolarisAuthorizer; import org.apache.polaris.core.auth.PolarisAuthorizerImpl; import org.apache.polaris.core.context.CallContext; import org.apache.polaris.core.context.RealmContext; -import org.apache.polaris.core.context.RealmScopeContext; +import org.apache.polaris.core.context.RealmScope; import org.apache.polaris.core.monitor.PolarisMetricRegistry; import org.apache.polaris.core.persistence.MetaStoreManagerFactory; import org.apache.polaris.core.persistence.PolarisMetaStoreManager; import org.apache.polaris.core.persistence.cache.EntityCache; -import org.apache.polaris.core.persistence.cache.EntityCacheFactory; import org.apache.polaris.core.storage.PolarisStorageIntegrationProvider; import org.apache.polaris.service.admin.PolarisServiceImpl; import org.apache.polaris.service.admin.api.PolarisCatalogsApi; @@ -118,11 +117,13 @@ import org.apache.polaris.service.context.CallContextCatalogFactory; import org.apache.polaris.service.context.CallContextResolver; import org.apache.polaris.service.context.PolarisCallContextCatalogFactory; import org.apache.polaris.service.context.RealmContextResolver; +import org.apache.polaris.service.context.RealmScopeContext; import org.apache.polaris.service.exception.IcebergExceptionMapper; import org.apache.polaris.service.exception.IcebergJerseyViolationExceptionMapper; import org.apache.polaris.service.exception.IcebergJsonProcessingExceptionMapper; import org.apache.polaris.service.exception.PolarisExceptionMapper; import org.apache.polaris.service.persistence.InMemoryPolarisMetaStoreManagerFactory; +import org.apache.polaris.service.persistence.cache.EntityCacheFactory; import org.apache.polaris.service.ratelimiter.RateLimiter; import org.apache.polaris.service.ratelimiter.RateLimiterFilter; import org.apache.polaris.service.storage.PolarisStorageIntegrationProviderImpl; @@ -134,6 +135,7 @@ import org.apache.polaris.service.task.TaskFileIOSupplier; import org.apache.polaris.service.throttling.StreamReadConstraintsExceptionMapper; import org.apache.polaris.service.tracing.TracingFilter; import org.eclipse.jetty.servlets.CrossOriginFilter; +import org.glassfish.hk2.api.Factory; import org.glassfish.hk2.api.ServiceLocator; import org.glassfish.hk2.utilities.ServiceLocatorUtilities; import org.glassfish.hk2.utilities.binding.AbstractBinder; @@ -217,8 +219,10 @@ public class PolarisApplication extends Application<PolarisApplicationConfig> { protected void configure() { bind(RealmScopeContext.class).in(Singleton.class); bind(configuration.getMetaStoreManagerFactory()).to(MetaStoreManagerFactory.class); - bindFactory(configuration.getMetaStoreManagerFactory()) - .to(PolarisMetaStoreManager.class); + bindFactory(PolarisMetaStoreManagerFactory.class) + .to(PolarisMetaStoreManager.class) + .in(RealmScope.class); + bind(configuration.getConfigurationStore()).to(PolarisConfigurationStore.class); bind(configuration.getFileIOFactory()).to(FileIOFactory.class); bind(configuration.getPolarisAuthenticator()).to(Authenticator.class); @@ -488,4 +492,18 @@ public class PolarisApplication extends Application<PolarisApplicationConfig> { } } } + + private static class PolarisMetaStoreManagerFactory implements Factory<PolarisMetaStoreManager> { + @Inject MetaStoreManagerFactory metaStoreManagerFactory; + + @RealmScope + @Override + public PolarisMetaStoreManager provide() { + RealmContext realmContext = CallContext.getCurrentContext().getRealmContext(); + return metaStoreManagerFactory.getOrCreateMetaStoreManager(realmContext); + } + + @Override + public void dispose(PolarisMetaStoreManager instance) {} + } } diff --git a/polaris-core/src/main/java/org/apache/polaris/core/context/RealmScopeContext.java b/polaris-service/src/main/java/org/apache/polaris/service/context/RealmScopeContext.java similarity index 93% rename from polaris-core/src/main/java/org/apache/polaris/core/context/RealmScopeContext.java rename to polaris-service/src/main/java/org/apache/polaris/service/context/RealmScopeContext.java index 6326f958..a60c9575 100644 --- a/polaris-core/src/main/java/org/apache/polaris/core/context/RealmScopeContext.java +++ b/polaris-service/src/main/java/org/apache/polaris/service/context/RealmScopeContext.java @@ -16,13 +16,16 @@ * specific language governing permissions and limitations * under the License. */ -package org.apache.polaris.core.context; +package org.apache.polaris.service.context; import jakarta.inject.Singleton; import java.lang.annotation.Annotation; import java.util.HashMap; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; +import org.apache.polaris.core.context.CallContext; +import org.apache.polaris.core.context.RealmContext; +import org.apache.polaris.core.context.RealmScope; import org.glassfish.hk2.api.ActiveDescriptor; import org.glassfish.hk2.api.Context; import org.glassfish.hk2.api.ServiceHandle; diff --git a/polaris-core/src/main/java/org/apache/polaris/core/persistence/cache/EntityCacheFactory.java b/polaris-service/src/main/java/org/apache/polaris/service/persistence/cache/EntityCacheFactory.java similarity index 91% rename from polaris-core/src/main/java/org/apache/polaris/core/persistence/cache/EntityCacheFactory.java rename to polaris-service/src/main/java/org/apache/polaris/service/persistence/cache/EntityCacheFactory.java index 4d92d5d2..8dc46674 100644 --- a/polaris-core/src/main/java/org/apache/polaris/core/persistence/cache/EntityCacheFactory.java +++ b/polaris-service/src/main/java/org/apache/polaris/service/persistence/cache/EntityCacheFactory.java @@ -16,11 +16,12 @@ * specific language governing permissions and limitations * under the License. */ -package org.apache.polaris.core.persistence.cache; +package org.apache.polaris.service.persistence.cache; import jakarta.inject.Inject; import org.apache.polaris.core.context.RealmScope; import org.apache.polaris.core.persistence.PolarisMetaStoreManager; +import org.apache.polaris.core.persistence.cache.EntityCache; import org.glassfish.hk2.api.Factory; public class EntityCacheFactory implements Factory<EntityCache> {