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> {

Reply via email to