eric-maynard commented on code in PR #2301:
URL: https://github.com/apache/polaris/pull/2301#discussion_r2271081822


##########
runtime/service/src/main/java/org/apache/polaris/service/catalog/iceberg/IcebergCatalogHandler.java:
##########
@@ -220,42 +218,27 @@ protected void initializeCatalog() {
       ConnectionType connectionType =
           
ConnectionType.fromCode(connectionConfigInfoDpo.getConnectionTypeCode());
 
+      // Use the unified factory pattern for all external catalog types
+      String factoryIdentifier;
       switch (connectionType) {
         case ICEBERG_REST:
-          SessionCatalog.SessionContext context = 
SessionCatalog.SessionContext.createEmpty();
-          federatedCatalog =
-              new RESTCatalog(
-                  context,
-                  (config) ->
-                      HTTPClient.builder(config)
-                          
.uri(config.get(org.apache.iceberg.CatalogProperties.URI))
-                          .build());
-          federatedCatalog.initialize(
-              ((IcebergRestConnectionConfigInfoDpo) 
connectionConfigInfoDpo).getRemoteCatalogName(),
-              
connectionConfigInfoDpo.asIcebergCatalogProperties(getUserSecretsManager()));
-          break;
         case HADOOP:
-          // Currently, Polaris supports Hadoop federation only via IMPLICIT 
authentication.
-          // Hence, prior to initializing the configuration, ensure that the 
catalog uses
-          // IMPLICIT authentication.
-          AuthenticationParametersDpo authenticationParametersDpo =
-              connectionConfigInfoDpo.getAuthenticationParameters();
-          if (authenticationParametersDpo.getAuthenticationTypeCode()
-              != AuthenticationType.IMPLICIT.getCode()) {
-            throw new IllegalStateException(
-                "Hadoop federation only supports IMPLICIT authentication.");
-          }
-          Configuration conf = new Configuration();
-          String warehouse =
-              ((HadoopConnectionConfigInfoDpo) 
connectionConfigInfoDpo).getWarehouse();
-          federatedCatalog = new HadoopCatalog(conf, warehouse);
-          federatedCatalog.initialize(
-              warehouse,
-              
connectionConfigInfoDpo.asIcebergCatalogProperties(getUserSecretsManager()));
+          factoryIdentifier = connectionType.getFactoryIdentifier();
           break;
         default:
-          throw new UnsupportedOperationException(
-              "Connection type not supported: " + connectionType);
+          throw new UnsupportedOperationException("Unsupported connection 
type: " + connectionType);

Review Comment:
   Sorry to keep asking for changes here, but it looks like the `switch` is 
basically not needed anymore. Can we try to remove the `switch`, add error 
handling to `getFactoryIdentifier` and use something like:
   ```java
   Instance<ExternalCatalogFactory> externalCatalogFactory =
             externalCatalogFactoryRegistry.select(connectionType. 
getFactoryIdentifier())
   ```
   



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@polaris.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to