From 8f02a3a242fd80087d16d5aabfcd9825698632b5 Mon Sep 17 00:00:00 2001 From: adnanhemani Date: Fri, 22 Aug 2025 13:05:39 -0700 Subject: [PATCH 1/7] Add Delegator to all API Implementations --- .../service/admin/ApiBusinessLogic.java | 37 ++ .../admin/PolarisServiceDefaultDelegator.java | 333 ++++++++++++++++++ .../service/admin/PolarisServiceImpl.java | 1 + .../generic/GenericTableCatalogAdapter.java | 2 + ...icTableCatalogAdapterDefaultDelegator.java | 85 +++++ .../iceberg/IcebergCatalogAdapter.java | 2 + ...IcebergCatalogAdapterDefaultDelegator.java | 309 ++++++++++++++++ .../catalog/policy/PolicyCatalogAdapter.java | 2 + .../PolicyCatalogAdapterDefaultDelegator.java | 136 +++++++ 9 files changed, 907 insertions(+) create mode 100644 runtime/service/src/main/java/org/apache/polaris/service/admin/ApiBusinessLogic.java create mode 100644 runtime/service/src/main/java/org/apache/polaris/service/admin/PolarisServiceDefaultDelegator.java create mode 100644 runtime/service/src/main/java/org/apache/polaris/service/catalog/generic/GenericTableCatalogAdapterDefaultDelegator.java create mode 100644 runtime/service/src/main/java/org/apache/polaris/service/catalog/iceberg/IcebergCatalogAdapterDefaultDelegator.java create mode 100644 runtime/service/src/main/java/org/apache/polaris/service/catalog/policy/PolicyCatalogAdapterDefaultDelegator.java diff --git a/runtime/service/src/main/java/org/apache/polaris/service/admin/ApiBusinessLogic.java b/runtime/service/src/main/java/org/apache/polaris/service/admin/ApiBusinessLogic.java new file mode 100644 index 0000000000..a8288a1906 --- /dev/null +++ b/runtime/service/src/main/java/org/apache/polaris/service/admin/ApiBusinessLogic.java @@ -0,0 +1,37 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.polaris.service.admin; + +import jakarta.inject.Qualifier; + +import java.lang.annotation.Retention; +import java.lang.annotation.Target; + +import static java.lang.annotation.ElementType.FIELD; +import static java.lang.annotation.ElementType.METHOD; +import static java.lang.annotation.ElementType.PARAMETER; +import static java.lang.annotation.ElementType.TYPE; +import static java.lang.annotation.RetentionPolicy.RUNTIME; + +@Qualifier +@Retention(RUNTIME) +@Target({TYPE, METHOD, FIELD, PARAMETER}) +public @interface ApiBusinessLogic { +} diff --git a/runtime/service/src/main/java/org/apache/polaris/service/admin/PolarisServiceDefaultDelegator.java b/runtime/service/src/main/java/org/apache/polaris/service/admin/PolarisServiceDefaultDelegator.java new file mode 100644 index 0000000000..90c129112b --- /dev/null +++ b/runtime/service/src/main/java/org/apache/polaris/service/admin/PolarisServiceDefaultDelegator.java @@ -0,0 +1,333 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.polaris.service.admin; + +import jakarta.annotation.Priority; +import jakarta.enterprise.context.RequestScoped; +import jakarta.enterprise.inject.Alternative; +import jakarta.inject.Inject; +import jakarta.ws.rs.core.Response; +import jakarta.ws.rs.core.SecurityContext; +import org.apache.polaris.core.admin.model.AddGrantRequest; +import org.apache.polaris.core.admin.model.CreateCatalogRequest; +import org.apache.polaris.core.admin.model.CreateCatalogRoleRequest; +import org.apache.polaris.core.admin.model.CreatePrincipalRequest; +import org.apache.polaris.core.admin.model.CreatePrincipalRoleRequest; +import org.apache.polaris.core.admin.model.GrantCatalogRoleRequest; +import org.apache.polaris.core.admin.model.GrantPrincipalRoleRequest; +import org.apache.polaris.core.admin.model.RevokeGrantRequest; +import org.apache.polaris.core.admin.model.UpdateCatalogRequest; +import org.apache.polaris.core.admin.model.UpdateCatalogRoleRequest; +import org.apache.polaris.core.admin.model.UpdatePrincipalRequest; +import org.apache.polaris.core.admin.model.UpdatePrincipalRoleRequest; +import org.apache.polaris.core.context.RealmContext; +import org.apache.polaris.service.admin.api.PolarisCatalogsApiService; +import org.apache.polaris.service.admin.api.PolarisPrincipalRolesApiService; +import org.apache.polaris.service.admin.api.PolarisPrincipalsApiService; + + +@RequestScoped +@Alternative +@Priority(1000) // Will allow vendor-specific delegators to be added and used +public class PolarisServiceDefaultDelegator implements PolarisCatalogsApiService, PolarisPrincipalsApiService, PolarisPrincipalRolesApiService { + private final PolarisServiceImpl delegate; + + @Inject + public PolarisServiceDefaultDelegator(@ApiBusinessLogic PolarisServiceImpl polarisService) { + this.delegate = polarisService; + } + + /** From PolarisCatalogsApiService */ + @Override + public Response createCatalog( + CreateCatalogRequest request, RealmContext realmContext, SecurityContext securityContext) { + return delegate.createCatalog(request, realmContext, securityContext); + } + + /** From PolarisCatalogsApiService */ + @Override + public Response deleteCatalog( + String catalogName, RealmContext realmContext, SecurityContext securityContext) { + return delegate.deleteCatalog(catalogName, realmContext, securityContext); + } + + /** From PolarisCatalogsApiService */ + @Override + public Response getCatalog( + String catalogName, RealmContext realmContext, SecurityContext securityContext) { + return delegate.getCatalog(catalogName, realmContext, securityContext); + } + + /** From PolarisCatalogsApiService */ + @Override + public Response updateCatalog( + String catalogName, + UpdateCatalogRequest updateRequest, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.updateCatalog(catalogName, updateRequest, realmContext, securityContext); + } + + /** From PolarisCatalogsApiService */ + @Override + public Response listCatalogs(RealmContext realmContext, SecurityContext securityContext) { + return delegate.listCatalogs(realmContext, securityContext); + } + + /** From PolarisPrincipalsApiService */ + @Override + public Response createPrincipal( + CreatePrincipalRequest request, RealmContext realmContext, SecurityContext securityContext) { + return delegate.createPrincipal(request, realmContext, securityContext); + } + + /** From PolarisPrincipalsApiService */ + @Override + public Response deletePrincipal( + String principalName, RealmContext realmContext, SecurityContext securityContext) { + return delegate.deletePrincipal(principalName, realmContext, securityContext); + } + + /** From PolarisPrincipalsApiService */ + @Override + public Response getPrincipal( + String principalName, RealmContext realmContext, SecurityContext securityContext) { + return delegate.getPrincipal(principalName, realmContext, securityContext); + } + + /** From PolarisPrincipalsApiService */ + @Override + public Response updatePrincipal( + String principalName, + UpdatePrincipalRequest updateRequest, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.updatePrincipal(principalName, updateRequest, realmContext, securityContext); + } + + /** From PolarisPrincipalsApiService */ + @Override + public Response rotateCredentials( + String principalName, RealmContext realmContext, SecurityContext securityContext) { + return delegate.rotateCredentials(principalName, realmContext, securityContext); + } + + /** From PolarisPrincipalsApiService */ + @Override + public Response listPrincipals(RealmContext realmContext, SecurityContext securityContext) { + return delegate.listPrincipals(realmContext, securityContext); + } + + /** From PolarisPrincipalRolesApiService */ + @Override + public Response createPrincipalRole( + CreatePrincipalRoleRequest request, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.createPrincipalRole(request, realmContext, securityContext); + } + + /** From PolarisPrincipalRolesApiService */ + @Override + public Response deletePrincipalRole( + String principalRoleName, RealmContext realmContext, SecurityContext securityContext) { + return delegate.deletePrincipalRole(principalRoleName, realmContext, securityContext); + } + + /** From PolarisPrincipalRolesApiService */ + @Override + public Response getPrincipalRole( + String principalRoleName, RealmContext realmContext, SecurityContext securityContext) { + return delegate.getPrincipalRole(principalRoleName, realmContext, securityContext); + } + + /** From PolarisPrincipalRolesApiService */ + @Override + public Response updatePrincipalRole( + String principalRoleName, + UpdatePrincipalRoleRequest updateRequest, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.updatePrincipalRole(principalRoleName, updateRequest, realmContext, securityContext); + } + + /** From PolarisPrincipalRolesApiService */ + @Override + public Response listPrincipalRoles(RealmContext realmContext, SecurityContext securityContext) { + return delegate.listPrincipalRoles(realmContext, securityContext); + } + + /** From PolarisCatalogsApiService */ + @Override + public Response createCatalogRole( + String catalogName, + CreateCatalogRoleRequest request, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.createCatalogRole(catalogName, request, realmContext, securityContext); + } + + /** From PolarisCatalogsApiService */ + @Override + public Response deleteCatalogRole( + String catalogName, + String catalogRoleName, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.deleteCatalogRole(catalogName, catalogRoleName, realmContext, securityContext); + } + + /** From PolarisCatalogsApiService */ + @Override + public Response getCatalogRole( + String catalogName, + String catalogRoleName, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.getCatalogRole(catalogName, catalogRoleName, realmContext, securityContext); + } + + /** From PolarisCatalogsApiService */ + @Override + public Response updateCatalogRole( + String catalogName, + String catalogRoleName, + UpdateCatalogRoleRequest updateRequest, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.updateCatalogRole(catalogName, catalogRoleName, updateRequest, realmContext, securityContext); + } + + /** From PolarisCatalogsApiService */ + @Override + public Response listCatalogRoles( + String catalogName, RealmContext realmContext, SecurityContext securityContext) { + return delegate.listCatalogRoles(catalogName, realmContext, securityContext); + } + + /** From PolarisPrincipalsApiService */ + @Override + public Response assignPrincipalRole( + String principalName, + GrantPrincipalRoleRequest request, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.assignPrincipalRole(principalName, request, realmContext, securityContext); + } + + /** From PolarisPrincipalsApiService */ + @Override + public Response revokePrincipalRole( + String principalName, + String principalRoleName, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.revokePrincipalRole(principalName, principalRoleName, realmContext, securityContext); + } + + /** From PolarisPrincipalsApiService */ + @Override + public Response listPrincipalRolesAssigned( + String principalName, RealmContext realmContext, SecurityContext securityContext) { + return delegate.listPrincipalRolesAssigned(principalName, realmContext, securityContext); + } + + /** From PolarisPrincipalRolesApiService */ + @Override + public Response assignCatalogRoleToPrincipalRole( + String principalRoleName, + String catalogName, + GrantCatalogRoleRequest request, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.assignCatalogRoleToPrincipalRole(principalRoleName, catalogName, request, realmContext, securityContext); + } + + /** From PolarisPrincipalRolesApiService */ + @Override + public Response revokeCatalogRoleFromPrincipalRole( + String principalRoleName, + String catalogName, + String catalogRoleName, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.revokeCatalogRoleFromPrincipalRole(principalRoleName, catalogName, catalogRoleName, realmContext, securityContext); + } + + /** From PolarisPrincipalRolesApiService */ + @Override + public Response listAssigneePrincipalsForPrincipalRole( + String principalRoleName, RealmContext realmContext, SecurityContext securityContext) { + return delegate.listAssigneePrincipalsForPrincipalRole(principalRoleName, realmContext, securityContext); + } + + /** From PolarisPrincipalRolesApiService */ + @Override + public Response listCatalogRolesForPrincipalRole( + String principalRoleName, + String catalogName, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.listCatalogRolesForPrincipalRole(principalRoleName, catalogName, realmContext, securityContext); + } + + /** From PolarisCatalogsApiService */ + @Override + public Response addGrantToCatalogRole( + String catalogName, + String catalogRoleName, + AddGrantRequest grantRequest, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.addGrantToCatalogRole(catalogName, catalogRoleName, grantRequest, realmContext, securityContext); + } + + /** From PolarisCatalogsApiService */ + @Override + public Response revokeGrantFromCatalogRole( + String catalogName, + String catalogRoleName, + Boolean cascade, + RevokeGrantRequest grantRequest, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.revokeGrantFromCatalogRole(catalogName, catalogRoleName, cascade, grantRequest, realmContext, securityContext); + } + + /** From PolarisCatalogsApiService */ + @Override + public Response listAssigneePrincipalRolesForCatalogRole( + String catalogName, + String catalogRoleName, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.listAssigneePrincipalRolesForCatalogRole(catalogName, catalogRoleName, realmContext, securityContext); + } + + /** From PolarisCatalogsApiService */ + @Override + public Response listGrantsForCatalogRole( + String catalogName, + String catalogRoleName, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.listGrantsForCatalogRole(catalogName, catalogRoleName, realmContext, securityContext); + } +} diff --git a/runtime/service/src/main/java/org/apache/polaris/service/admin/PolarisServiceImpl.java b/runtime/service/src/main/java/org/apache/polaris/service/admin/PolarisServiceImpl.java index 806289da08..492a28f20b 100644 --- a/runtime/service/src/main/java/org/apache/polaris/service/admin/PolarisServiceImpl.java +++ b/runtime/service/src/main/java/org/apache/polaris/service/admin/PolarisServiceImpl.java @@ -89,6 +89,7 @@ /** Concrete implementation of the Polaris API services */ @RequestScoped +@ApiBusinessLogic public class PolarisServiceImpl implements PolarisCatalogsApiService, PolarisPrincipalsApiService, diff --git a/runtime/service/src/main/java/org/apache/polaris/service/catalog/generic/GenericTableCatalogAdapter.java b/runtime/service/src/main/java/org/apache/polaris/service/catalog/generic/GenericTableCatalogAdapter.java index befe9907fb..25bbf65642 100644 --- a/runtime/service/src/main/java/org/apache/polaris/service/catalog/generic/GenericTableCatalogAdapter.java +++ b/runtime/service/src/main/java/org/apache/polaris/service/catalog/generic/GenericTableCatalogAdapter.java @@ -34,6 +34,7 @@ import org.apache.polaris.core.persistence.PolarisMetaStoreManager; import org.apache.polaris.core.persistence.resolver.ResolutionManifestFactory; import org.apache.polaris.core.secrets.UserSecretsManager; +import org.apache.polaris.service.admin.ApiBusinessLogic; import org.apache.polaris.service.catalog.CatalogPrefixParser; import org.apache.polaris.service.catalog.api.PolarisCatalogGenericTableApiService; import org.apache.polaris.service.catalog.common.CatalogAdapter; @@ -45,6 +46,7 @@ import org.slf4j.LoggerFactory; @RequestScoped +@ApiBusinessLogic public class GenericTableCatalogAdapter implements PolarisCatalogGenericTableApiService, CatalogAdapter { diff --git a/runtime/service/src/main/java/org/apache/polaris/service/catalog/generic/GenericTableCatalogAdapterDefaultDelegator.java b/runtime/service/src/main/java/org/apache/polaris/service/catalog/generic/GenericTableCatalogAdapterDefaultDelegator.java new file mode 100644 index 0000000000..3cc864c11d --- /dev/null +++ b/runtime/service/src/main/java/org/apache/polaris/service/catalog/generic/GenericTableCatalogAdapterDefaultDelegator.java @@ -0,0 +1,85 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.polaris.service.catalog.generic; + +import jakarta.annotation.Priority; +import jakarta.enterprise.context.RequestScoped; +import jakarta.enterprise.inject.Alternative; +import jakarta.inject.Inject; +import jakarta.ws.rs.core.Response; +import jakarta.ws.rs.core.SecurityContext; +import org.apache.polaris.core.context.RealmContext; +import org.apache.polaris.service.admin.ApiBusinessLogic; +import org.apache.polaris.service.catalog.api.PolarisCatalogGenericTableApiService; +import org.apache.polaris.service.catalog.common.CatalogAdapter; +import org.apache.polaris.service.types.CreateGenericTableRequest; + +@RequestScoped +@Alternative +@Priority(1000) // Will allow vendor-specific delegators to be added and used +public class GenericTableCatalogAdapterDefaultDelegator implements PolarisCatalogGenericTableApiService, CatalogAdapter { + private final GenericTableCatalogAdapter delegate; + + @Inject + public GenericTableCatalogAdapterDefaultDelegator(@ApiBusinessLogic GenericTableCatalogAdapter delegate) { + this.delegate = delegate; + } + + @Override + public Response createGenericTable( + String prefix, + String namespace, + CreateGenericTableRequest createGenericTableRequest, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.createGenericTable(prefix, namespace, createGenericTableRequest, realmContext, securityContext); + } + + @Override + public Response dropGenericTable( + String prefix, + String namespace, + String genericTable, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.dropGenericTable(prefix, namespace, genericTable, realmContext, securityContext); + } + + @Override + public Response listGenericTables( + String prefix, + String namespace, + String pageToken, + Integer pageSize, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.listGenericTables(prefix, namespace, pageToken, pageSize, realmContext, securityContext); + } + + @Override + public Response loadGenericTable( + String prefix, + String namespace, + String genericTable, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.loadGenericTable(prefix, namespace, genericTable, realmContext, securityContext); + } +} diff --git a/runtime/service/src/main/java/org/apache/polaris/service/catalog/iceberg/IcebergCatalogAdapter.java b/runtime/service/src/main/java/org/apache/polaris/service/catalog/iceberg/IcebergCatalogAdapter.java index 76401582a9..332bdebe0d 100644 --- a/runtime/service/src/main/java/org/apache/polaris/service/catalog/iceberg/IcebergCatalogAdapter.java +++ b/runtime/service/src/main/java/org/apache/polaris/service/catalog/iceberg/IcebergCatalogAdapter.java @@ -76,6 +76,7 @@ import org.apache.polaris.core.persistence.resolver.ResolverStatus; import org.apache.polaris.core.rest.PolarisEndpoints; import org.apache.polaris.core.secrets.UserSecretsManager; +import org.apache.polaris.service.admin.ApiBusinessLogic; import org.apache.polaris.service.catalog.AccessDelegationMode; import org.apache.polaris.service.catalog.CatalogPrefixParser; import org.apache.polaris.service.catalog.api.IcebergRestCatalogApiService; @@ -96,6 +97,7 @@ * `IcebergCatalogHandler`. */ @RequestScoped +@ApiBusinessLogic public class IcebergCatalogAdapter implements IcebergRestCatalogApiService, IcebergRestConfigurationApiService, CatalogAdapter { diff --git a/runtime/service/src/main/java/org/apache/polaris/service/catalog/iceberg/IcebergCatalogAdapterDefaultDelegator.java b/runtime/service/src/main/java/org/apache/polaris/service/catalog/iceberg/IcebergCatalogAdapterDefaultDelegator.java new file mode 100644 index 0000000000..6bac74c93f --- /dev/null +++ b/runtime/service/src/main/java/org/apache/polaris/service/catalog/iceberg/IcebergCatalogAdapterDefaultDelegator.java @@ -0,0 +1,309 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.polaris.service.catalog.iceberg; + +import jakarta.annotation.Priority; +import jakarta.enterprise.context.RequestScoped; +import jakarta.enterprise.inject.Alternative; +import jakarta.inject.Inject; +import jakarta.ws.rs.core.Response; +import jakarta.ws.rs.core.SecurityContext; +import org.apache.iceberg.rest.requests.CommitTransactionRequest; +import org.apache.iceberg.rest.requests.CreateNamespaceRequest; +import org.apache.iceberg.rest.requests.CreateTableRequest; +import org.apache.iceberg.rest.requests.CreateViewRequest; +import org.apache.iceberg.rest.requests.RegisterTableRequest; +import org.apache.iceberg.rest.requests.RenameTableRequest; +import org.apache.iceberg.rest.requests.ReportMetricsRequest; +import org.apache.iceberg.rest.requests.UpdateNamespacePropertiesRequest; +import org.apache.polaris.core.context.RealmContext; +import org.apache.polaris.service.admin.ApiBusinessLogic; +import org.apache.polaris.service.catalog.api.IcebergRestCatalogApiService; +import org.apache.polaris.service.catalog.api.IcebergRestConfigurationApiService; +import org.apache.polaris.service.catalog.common.CatalogAdapter; +import org.apache.polaris.service.types.CommitTableRequest; +import org.apache.polaris.service.types.CommitViewRequest; +import org.apache.polaris.service.types.NotificationRequest; + + +@RequestScoped +@Alternative +@Priority(1000) // Will allow vendor-specific delegators to be added and used +public class IcebergCatalogAdapterDefaultDelegator implements IcebergRestCatalogApiService, IcebergRestConfigurationApiService, CatalogAdapter { + private final IcebergCatalogAdapter delegate; + + @Inject + public IcebergCatalogAdapterDefaultDelegator(@ApiBusinessLogic IcebergCatalogAdapter catalogAdapter) { + this.delegate = catalogAdapter; + } + + @Override + public Response createNamespace( + String prefix, + CreateNamespaceRequest createNamespaceRequest, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.createNamespace(prefix, createNamespaceRequest, realmContext, securityContext); + } + + @Override + public Response listNamespaces( + String prefix, + String pageToken, + Integer pageSize, + String parent, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.listNamespaces(prefix, pageToken, pageSize, parent, realmContext, securityContext); + } + + @Override + public Response loadNamespaceMetadata( + String prefix, String namespace, RealmContext realmContext, SecurityContext securityContext) { + return delegate.loadNamespaceMetadata(prefix, namespace, realmContext, securityContext); + } + + @Override + public Response namespaceExists( + String prefix, String namespace, RealmContext realmContext, SecurityContext securityContext) { + return delegate.namespaceExists(prefix, namespace, realmContext, securityContext); + } + + @Override + public Response dropNamespace( + String prefix, String namespace, RealmContext realmContext, SecurityContext securityContext) { + return delegate.dropNamespace(prefix, namespace, realmContext, securityContext); + } + + @Override + public Response updateProperties( + String prefix, + String namespace, + UpdateNamespacePropertiesRequest updateNamespacePropertiesRequest, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.updateProperties(prefix, namespace, updateNamespacePropertiesRequest, realmContext, securityContext); + } + + @Override + public Response createTable( + String prefix, + String namespace, + CreateTableRequest createTableRequest, + String accessDelegationMode, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.createTable(prefix, namespace, createTableRequest, accessDelegationMode, realmContext, securityContext); + } + + @Override + public Response listTables( + String prefix, + String namespace, + String pageToken, + Integer pageSize, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.listTables(prefix, namespace, pageToken, pageSize, realmContext, securityContext); + } + + @Override + public Response loadTable( + String prefix, + String namespace, + String table, + String accessDelegationMode, + String ifNoneMatchString, + String snapshots, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.loadTable(prefix, namespace, table, accessDelegationMode, ifNoneMatchString, snapshots, realmContext, securityContext); + } + + @Override + public Response tableExists( + String prefix, + String namespace, + String table, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.tableExists(prefix, namespace, table, realmContext, securityContext); + } + + @Override + public Response dropTable( + String prefix, + String namespace, + String table, + Boolean purgeRequested, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.dropTable(prefix, namespace, table, purgeRequested, realmContext, securityContext); + } + + @Override + public Response registerTable( + String prefix, + String namespace, + RegisterTableRequest registerTableRequest, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.registerTable(prefix, namespace, registerTableRequest, realmContext, securityContext); + } + + @Override + public Response renameTable( + String prefix, + RenameTableRequest renameTableRequest, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.renameTable(prefix, renameTableRequest, realmContext, securityContext); + } + + @Override + public Response updateTable( + String prefix, + String namespace, + String table, + CommitTableRequest commitTableRequest, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.updateTable(prefix, namespace, table, commitTableRequest, realmContext, securityContext); + } + + @Override + public Response createView( + String prefix, + String namespace, + CreateViewRequest createViewRequest, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.createView(prefix, namespace, createViewRequest, realmContext, securityContext); + } + + @Override + public Response listViews( + String prefix, + String namespace, + String pageToken, + Integer pageSize, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.listViews(prefix, namespace, pageToken, pageSize, realmContext, securityContext); + } + + @Override + public Response loadCredentials( + String prefix, + String namespace, + String table, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.loadCredentials(prefix, namespace, table, realmContext, securityContext); + } + + @Override + public Response loadView( + String prefix, + String namespace, + String view, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.loadView(prefix, namespace, view, realmContext, securityContext); + } + + @Override + public Response viewExists( + String prefix, + String namespace, + String view, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.viewExists(prefix, namespace, view, realmContext, securityContext); + } + + @Override + public Response dropView( + String prefix, + String namespace, + String view, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.dropView(prefix, namespace, view, realmContext, securityContext); + } + + @Override + public Response renameView( + String prefix, + RenameTableRequest renameTableRequest, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.renameView(prefix, renameTableRequest, realmContext, securityContext); + } + + @Override + public Response replaceView( + String prefix, + String namespace, + String view, + CommitViewRequest commitViewRequest, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.replaceView(prefix, namespace, view, commitViewRequest, realmContext, securityContext); + } + + @Override + public Response commitTransaction( + String prefix, + CommitTransactionRequest commitTransactionRequest, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.commitTransaction(prefix, commitTransactionRequest, realmContext, securityContext); + } + + @Override + public Response reportMetrics( + String prefix, + String namespace, + String table, + ReportMetricsRequest reportMetricsRequest, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.reportMetrics(prefix, namespace, table, reportMetricsRequest, realmContext, securityContext); + } + + @Override + public Response sendNotification( + String prefix, + String namespace, + String table, + NotificationRequest notificationRequest, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.sendNotification(prefix, namespace, table, notificationRequest, realmContext, securityContext); + } + + /** From IcebergRestConfigurationApiService. */ + @Override + public Response getConfig( + String warehouse, RealmContext realmContext, SecurityContext securityContext) { + return delegate.getConfig(warehouse, realmContext, securityContext); + } +} diff --git a/runtime/service/src/main/java/org/apache/polaris/service/catalog/policy/PolicyCatalogAdapter.java b/runtime/service/src/main/java/org/apache/polaris/service/catalog/policy/PolicyCatalogAdapter.java index b2fa94f493..38ed518935 100644 --- a/runtime/service/src/main/java/org/apache/polaris/service/catalog/policy/PolicyCatalogAdapter.java +++ b/runtime/service/src/main/java/org/apache/polaris/service/catalog/policy/PolicyCatalogAdapter.java @@ -36,6 +36,7 @@ import org.apache.polaris.core.persistence.resolver.ResolutionManifestFactory; import org.apache.polaris.core.policy.PolicyType; import org.apache.polaris.core.secrets.UserSecretsManager; +import org.apache.polaris.service.admin.ApiBusinessLogic; import org.apache.polaris.service.catalog.CatalogPrefixParser; import org.apache.polaris.service.catalog.api.PolarisCatalogPolicyApiService; import org.apache.polaris.service.catalog.common.CatalogAdapter; @@ -51,6 +52,7 @@ import org.slf4j.LoggerFactory; @RequestScoped +@ApiBusinessLogic public class PolicyCatalogAdapter implements PolarisCatalogPolicyApiService, CatalogAdapter { private static final Logger LOGGER = LoggerFactory.getLogger(PolicyCatalogAdapter.class); diff --git a/runtime/service/src/main/java/org/apache/polaris/service/catalog/policy/PolicyCatalogAdapterDefaultDelegator.java b/runtime/service/src/main/java/org/apache/polaris/service/catalog/policy/PolicyCatalogAdapterDefaultDelegator.java new file mode 100644 index 0000000000..266e8e3616 --- /dev/null +++ b/runtime/service/src/main/java/org/apache/polaris/service/catalog/policy/PolicyCatalogAdapterDefaultDelegator.java @@ -0,0 +1,136 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.polaris.service.catalog.policy; + +import jakarta.annotation.Priority; +import jakarta.enterprise.context.RequestScoped; +import jakarta.enterprise.inject.Alternative; +import jakarta.inject.Inject; +import jakarta.ws.rs.core.Response; +import jakarta.ws.rs.core.SecurityContext; +import org.apache.polaris.core.context.RealmContext; +import org.apache.polaris.service.admin.ApiBusinessLogic; +import org.apache.polaris.service.catalog.api.PolarisCatalogPolicyApiService; +import org.apache.polaris.service.catalog.common.CatalogAdapter; +import org.apache.polaris.service.types.AttachPolicyRequest; +import org.apache.polaris.service.types.CreatePolicyRequest; +import org.apache.polaris.service.types.DetachPolicyRequest; +import org.apache.polaris.service.types.UpdatePolicyRequest; + +@RequestScoped +@Alternative +@Priority(1000) // Will allow vendor-specific delegators to be added and used +public class PolicyCatalogAdapterDefaultDelegator implements PolarisCatalogPolicyApiService, CatalogAdapter { + private final PolicyCatalogAdapter delegate; + + @Inject + public PolicyCatalogAdapterDefaultDelegator(@ApiBusinessLogic PolicyCatalogAdapter delegate) { + this.delegate = delegate; + } + + @Override + public Response createPolicy( + String prefix, + String namespace, + CreatePolicyRequest createPolicyRequest, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.createPolicy(prefix, namespace, createPolicyRequest, realmContext, securityContext); + } + + @Override + public Response listPolicies( + String prefix, + String namespace, + String pageToken, + Integer pageSize, + String policyType, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.listPolicies(prefix, namespace, pageToken, pageSize, policyType, realmContext, securityContext); + } + + @Override + public Response loadPolicy( + String prefix, + String namespace, + String policyName, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.loadPolicy(prefix, namespace, policyName, realmContext, securityContext); + } + + @Override + public Response updatePolicy( + String prefix, + String namespace, + String policyName, + UpdatePolicyRequest updatePolicyRequest, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.updatePolicy(prefix, namespace, policyName, updatePolicyRequest, realmContext, securityContext); + } + + @Override + public Response dropPolicy( + String prefix, + String namespace, + String policyName, + Boolean detachAll, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.dropPolicy(prefix, namespace, policyName, detachAll, realmContext, securityContext); + } + + @Override + public Response attachPolicy( + String prefix, + String namespace, + String policyName, + AttachPolicyRequest attachPolicyRequest, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.attachPolicy(prefix, namespace, policyName, attachPolicyRequest, realmContext, securityContext); + } + + @Override + public Response detachPolicy( + String prefix, + String namespace, + String policyName, + DetachPolicyRequest detachPolicyRequest, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.detachPolicy(prefix, namespace, policyName, detachPolicyRequest, realmContext, securityContext); + } + + @Override + public Response getApplicablePolicies( + String prefix, + String pageToken, + Integer pageSize, + String namespace, + String targetName, + String policyType, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.getApplicablePolicies(prefix, pageToken, pageSize, namespace, targetName, policyType, realmContext, securityContext); + } +} From f7f9cbc91817f5fac056edc7bbb8bcb265833958 Mon Sep 17 00:00:00 2001 From: adnanhemani Date: Sat, 23 Aug 2025 00:57:44 -0700 Subject: [PATCH 2/7] Review comments from @dimas-b --- ...sLogic.java => ApiBaseImplementation.java} | 12 +- .../admin/PolarisServiceDefaultDelegator.java | 585 +++++++++--------- .../service/admin/PolarisServiceImpl.java | 2 +- .../generic/GenericTableCatalogAdapter.java | 4 +- ...icTableCatalogAdapterDefaultDelegator.java | 96 +-- .../iceberg/IcebergCatalogAdapter.java | 4 +- ...IcebergCatalogAdapterDefaultDelegator.java | 493 ++++++++------- .../catalog/policy/PolicyCatalogAdapter.java | 4 +- .../PolicyCatalogAdapterDefaultDelegator.java | 194 +++--- 9 files changed, 724 insertions(+), 670 deletions(-) rename runtime/service/src/main/java/org/apache/polaris/service/admin/{ApiBusinessLogic.java => ApiBaseImplementation.java} (96%) diff --git a/runtime/service/src/main/java/org/apache/polaris/service/admin/ApiBusinessLogic.java b/runtime/service/src/main/java/org/apache/polaris/service/admin/ApiBaseImplementation.java similarity index 96% rename from runtime/service/src/main/java/org/apache/polaris/service/admin/ApiBusinessLogic.java rename to runtime/service/src/main/java/org/apache/polaris/service/admin/ApiBaseImplementation.java index a8288a1906..47be57bc2b 100644 --- a/runtime/service/src/main/java/org/apache/polaris/service/admin/ApiBusinessLogic.java +++ b/runtime/service/src/main/java/org/apache/polaris/service/admin/ApiBaseImplementation.java @@ -19,19 +19,17 @@ package org.apache.polaris.service.admin; -import jakarta.inject.Qualifier; - -import java.lang.annotation.Retention; -import java.lang.annotation.Target; - import static java.lang.annotation.ElementType.FIELD; import static java.lang.annotation.ElementType.METHOD; import static java.lang.annotation.ElementType.PARAMETER; import static java.lang.annotation.ElementType.TYPE; import static java.lang.annotation.RetentionPolicy.RUNTIME; +import jakarta.inject.Qualifier; +import java.lang.annotation.Retention; +import java.lang.annotation.Target; + @Qualifier @Retention(RUNTIME) @Target({TYPE, METHOD, FIELD, PARAMETER}) -public @interface ApiBusinessLogic { -} +public @interface ApiBaseImplementation {} diff --git a/runtime/service/src/main/java/org/apache/polaris/service/admin/PolarisServiceDefaultDelegator.java b/runtime/service/src/main/java/org/apache/polaris/service/admin/PolarisServiceDefaultDelegator.java index 90c129112b..480791e3ee 100644 --- a/runtime/service/src/main/java/org/apache/polaris/service/admin/PolarisServiceDefaultDelegator.java +++ b/runtime/service/src/main/java/org/apache/polaris/service/admin/PolarisServiceDefaultDelegator.java @@ -42,292 +42,305 @@ import org.apache.polaris.service.admin.api.PolarisPrincipalRolesApiService; import org.apache.polaris.service.admin.api.PolarisPrincipalsApiService; - @RequestScoped @Alternative -@Priority(1000) // Will allow vendor-specific delegators to be added and used -public class PolarisServiceDefaultDelegator implements PolarisCatalogsApiService, PolarisPrincipalsApiService, PolarisPrincipalRolesApiService { - private final PolarisServiceImpl delegate; - - @Inject - public PolarisServiceDefaultDelegator(@ApiBusinessLogic PolarisServiceImpl polarisService) { - this.delegate = polarisService; - } - - /** From PolarisCatalogsApiService */ - @Override - public Response createCatalog( - CreateCatalogRequest request, RealmContext realmContext, SecurityContext securityContext) { - return delegate.createCatalog(request, realmContext, securityContext); - } - - /** From PolarisCatalogsApiService */ - @Override - public Response deleteCatalog( - String catalogName, RealmContext realmContext, SecurityContext securityContext) { - return delegate.deleteCatalog(catalogName, realmContext, securityContext); - } - - /** From PolarisCatalogsApiService */ - @Override - public Response getCatalog( - String catalogName, RealmContext realmContext, SecurityContext securityContext) { - return delegate.getCatalog(catalogName, realmContext, securityContext); - } - - /** From PolarisCatalogsApiService */ - @Override - public Response updateCatalog( - String catalogName, - UpdateCatalogRequest updateRequest, - RealmContext realmContext, - SecurityContext securityContext) { - return delegate.updateCatalog(catalogName, updateRequest, realmContext, securityContext); - } - - /** From PolarisCatalogsApiService */ - @Override - public Response listCatalogs(RealmContext realmContext, SecurityContext securityContext) { - return delegate.listCatalogs(realmContext, securityContext); - } - - /** From PolarisPrincipalsApiService */ - @Override - public Response createPrincipal( - CreatePrincipalRequest request, RealmContext realmContext, SecurityContext securityContext) { - return delegate.createPrincipal(request, realmContext, securityContext); - } - - /** From PolarisPrincipalsApiService */ - @Override - public Response deletePrincipal( - String principalName, RealmContext realmContext, SecurityContext securityContext) { - return delegate.deletePrincipal(principalName, realmContext, securityContext); - } - - /** From PolarisPrincipalsApiService */ - @Override - public Response getPrincipal( - String principalName, RealmContext realmContext, SecurityContext securityContext) { - return delegate.getPrincipal(principalName, realmContext, securityContext); - } - - /** From PolarisPrincipalsApiService */ - @Override - public Response updatePrincipal( - String principalName, - UpdatePrincipalRequest updateRequest, - RealmContext realmContext, - SecurityContext securityContext) { - return delegate.updatePrincipal(principalName, updateRequest, realmContext, securityContext); - } - - /** From PolarisPrincipalsApiService */ - @Override - public Response rotateCredentials( - String principalName, RealmContext realmContext, SecurityContext securityContext) { - return delegate.rotateCredentials(principalName, realmContext, securityContext); - } - - /** From PolarisPrincipalsApiService */ - @Override - public Response listPrincipals(RealmContext realmContext, SecurityContext securityContext) { - return delegate.listPrincipals(realmContext, securityContext); - } - - /** From PolarisPrincipalRolesApiService */ - @Override - public Response createPrincipalRole( - CreatePrincipalRoleRequest request, - RealmContext realmContext, - SecurityContext securityContext) { - return delegate.createPrincipalRole(request, realmContext, securityContext); - } - - /** From PolarisPrincipalRolesApiService */ - @Override - public Response deletePrincipalRole( - String principalRoleName, RealmContext realmContext, SecurityContext securityContext) { - return delegate.deletePrincipalRole(principalRoleName, realmContext, securityContext); - } - - /** From PolarisPrincipalRolesApiService */ - @Override - public Response getPrincipalRole( - String principalRoleName, RealmContext realmContext, SecurityContext securityContext) { - return delegate.getPrincipalRole(principalRoleName, realmContext, securityContext); - } - - /** From PolarisPrincipalRolesApiService */ - @Override - public Response updatePrincipalRole( - String principalRoleName, - UpdatePrincipalRoleRequest updateRequest, - RealmContext realmContext, - SecurityContext securityContext) { - return delegate.updatePrincipalRole(principalRoleName, updateRequest, realmContext, securityContext); - } - - /** From PolarisPrincipalRolesApiService */ - @Override - public Response listPrincipalRoles(RealmContext realmContext, SecurityContext securityContext) { - return delegate.listPrincipalRoles(realmContext, securityContext); - } - - /** From PolarisCatalogsApiService */ - @Override - public Response createCatalogRole( - String catalogName, - CreateCatalogRoleRequest request, - RealmContext realmContext, - SecurityContext securityContext) { - return delegate.createCatalogRole(catalogName, request, realmContext, securityContext); - } - - /** From PolarisCatalogsApiService */ - @Override - public Response deleteCatalogRole( - String catalogName, - String catalogRoleName, - RealmContext realmContext, - SecurityContext securityContext) { - return delegate.deleteCatalogRole(catalogName, catalogRoleName, realmContext, securityContext); - } - - /** From PolarisCatalogsApiService */ - @Override - public Response getCatalogRole( - String catalogName, - String catalogRoleName, - RealmContext realmContext, - SecurityContext securityContext) { - return delegate.getCatalogRole(catalogName, catalogRoleName, realmContext, securityContext); - } - - /** From PolarisCatalogsApiService */ - @Override - public Response updateCatalogRole( - String catalogName, - String catalogRoleName, - UpdateCatalogRoleRequest updateRequest, - RealmContext realmContext, - SecurityContext securityContext) { - return delegate.updateCatalogRole(catalogName, catalogRoleName, updateRequest, realmContext, securityContext); - } - - /** From PolarisCatalogsApiService */ - @Override - public Response listCatalogRoles( - String catalogName, RealmContext realmContext, SecurityContext securityContext) { - return delegate.listCatalogRoles(catalogName, realmContext, securityContext); - } - - /** From PolarisPrincipalsApiService */ - @Override - public Response assignPrincipalRole( - String principalName, - GrantPrincipalRoleRequest request, - RealmContext realmContext, - SecurityContext securityContext) { - return delegate.assignPrincipalRole(principalName, request, realmContext, securityContext); - } - - /** From PolarisPrincipalsApiService */ - @Override - public Response revokePrincipalRole( - String principalName, - String principalRoleName, - RealmContext realmContext, - SecurityContext securityContext) { - return delegate.revokePrincipalRole(principalName, principalRoleName, realmContext, securityContext); - } - - /** From PolarisPrincipalsApiService */ - @Override - public Response listPrincipalRolesAssigned( - String principalName, RealmContext realmContext, SecurityContext securityContext) { - return delegate.listPrincipalRolesAssigned(principalName, realmContext, securityContext); - } - - /** From PolarisPrincipalRolesApiService */ - @Override - public Response assignCatalogRoleToPrincipalRole( - String principalRoleName, - String catalogName, - GrantCatalogRoleRequest request, - RealmContext realmContext, - SecurityContext securityContext) { - return delegate.assignCatalogRoleToPrincipalRole(principalRoleName, catalogName, request, realmContext, securityContext); - } - - /** From PolarisPrincipalRolesApiService */ - @Override - public Response revokeCatalogRoleFromPrincipalRole( - String principalRoleName, - String catalogName, - String catalogRoleName, - RealmContext realmContext, - SecurityContext securityContext) { - return delegate.revokeCatalogRoleFromPrincipalRole(principalRoleName, catalogName, catalogRoleName, realmContext, securityContext); - } - - /** From PolarisPrincipalRolesApiService */ - @Override - public Response listAssigneePrincipalsForPrincipalRole( - String principalRoleName, RealmContext realmContext, SecurityContext securityContext) { - return delegate.listAssigneePrincipalsForPrincipalRole(principalRoleName, realmContext, securityContext); - } - - /** From PolarisPrincipalRolesApiService */ - @Override - public Response listCatalogRolesForPrincipalRole( - String principalRoleName, - String catalogName, - RealmContext realmContext, - SecurityContext securityContext) { - return delegate.listCatalogRolesForPrincipalRole(principalRoleName, catalogName, realmContext, securityContext); - } - - /** From PolarisCatalogsApiService */ - @Override - public Response addGrantToCatalogRole( - String catalogName, - String catalogRoleName, - AddGrantRequest grantRequest, - RealmContext realmContext, - SecurityContext securityContext) { - return delegate.addGrantToCatalogRole(catalogName, catalogRoleName, grantRequest, realmContext, securityContext); - } - - /** From PolarisCatalogsApiService */ - @Override - public Response revokeGrantFromCatalogRole( - String catalogName, - String catalogRoleName, - Boolean cascade, - RevokeGrantRequest grantRequest, - RealmContext realmContext, - SecurityContext securityContext) { - return delegate.revokeGrantFromCatalogRole(catalogName, catalogRoleName, cascade, grantRequest, realmContext, securityContext); - } - - /** From PolarisCatalogsApiService */ - @Override - public Response listAssigneePrincipalRolesForCatalogRole( - String catalogName, - String catalogRoleName, - RealmContext realmContext, - SecurityContext securityContext) { - return delegate.listAssigneePrincipalRolesForCatalogRole(catalogName, catalogRoleName, realmContext, securityContext); - } - - /** From PolarisCatalogsApiService */ - @Override - public Response listGrantsForCatalogRole( - String catalogName, - String catalogRoleName, - RealmContext realmContext, - SecurityContext securityContext) { - return delegate.listGrantsForCatalogRole(catalogName, catalogRoleName, realmContext, securityContext); - } +@Priority(1000) // Will allow downstream project-specific delegators to be added and used +public class PolarisServiceDefaultDelegator + implements PolarisCatalogsApiService, + PolarisPrincipalsApiService, + PolarisPrincipalRolesApiService { + private final PolarisServiceImpl delegate; + + @Inject + public PolarisServiceDefaultDelegator(@ApiBaseImplementation PolarisServiceImpl polarisService) { + this.delegate = polarisService; + } + + /** From PolarisCatalogsApiService */ + @Override + public Response createCatalog( + CreateCatalogRequest request, RealmContext realmContext, SecurityContext securityContext) { + return delegate.createCatalog(request, realmContext, securityContext); + } + + /** From PolarisCatalogsApiService */ + @Override + public Response deleteCatalog( + String catalogName, RealmContext realmContext, SecurityContext securityContext) { + return delegate.deleteCatalog(catalogName, realmContext, securityContext); + } + + /** From PolarisCatalogsApiService */ + @Override + public Response getCatalog( + String catalogName, RealmContext realmContext, SecurityContext securityContext) { + return delegate.getCatalog(catalogName, realmContext, securityContext); + } + + /** From PolarisCatalogsApiService */ + @Override + public Response updateCatalog( + String catalogName, + UpdateCatalogRequest updateRequest, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.updateCatalog(catalogName, updateRequest, realmContext, securityContext); + } + + /** From PolarisCatalogsApiService */ + @Override + public Response listCatalogs(RealmContext realmContext, SecurityContext securityContext) { + return delegate.listCatalogs(realmContext, securityContext); + } + + /** From PolarisPrincipalsApiService */ + @Override + public Response createPrincipal( + CreatePrincipalRequest request, RealmContext realmContext, SecurityContext securityContext) { + return delegate.createPrincipal(request, realmContext, securityContext); + } + + /** From PolarisPrincipalsApiService */ + @Override + public Response deletePrincipal( + String principalName, RealmContext realmContext, SecurityContext securityContext) { + return delegate.deletePrincipal(principalName, realmContext, securityContext); + } + + /** From PolarisPrincipalsApiService */ + @Override + public Response getPrincipal( + String principalName, RealmContext realmContext, SecurityContext securityContext) { + return delegate.getPrincipal(principalName, realmContext, securityContext); + } + + /** From PolarisPrincipalsApiService */ + @Override + public Response updatePrincipal( + String principalName, + UpdatePrincipalRequest updateRequest, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.updatePrincipal(principalName, updateRequest, realmContext, securityContext); + } + + /** From PolarisPrincipalsApiService */ + @Override + public Response rotateCredentials( + String principalName, RealmContext realmContext, SecurityContext securityContext) { + return delegate.rotateCredentials(principalName, realmContext, securityContext); + } + + /** From PolarisPrincipalsApiService */ + @Override + public Response listPrincipals(RealmContext realmContext, SecurityContext securityContext) { + return delegate.listPrincipals(realmContext, securityContext); + } + + /** From PolarisPrincipalRolesApiService */ + @Override + public Response createPrincipalRole( + CreatePrincipalRoleRequest request, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.createPrincipalRole(request, realmContext, securityContext); + } + + /** From PolarisPrincipalRolesApiService */ + @Override + public Response deletePrincipalRole( + String principalRoleName, RealmContext realmContext, SecurityContext securityContext) { + return delegate.deletePrincipalRole(principalRoleName, realmContext, securityContext); + } + + /** From PolarisPrincipalRolesApiService */ + @Override + public Response getPrincipalRole( + String principalRoleName, RealmContext realmContext, SecurityContext securityContext) { + return delegate.getPrincipalRole(principalRoleName, realmContext, securityContext); + } + + /** From PolarisPrincipalRolesApiService */ + @Override + public Response updatePrincipalRole( + String principalRoleName, + UpdatePrincipalRoleRequest updateRequest, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.updatePrincipalRole( + principalRoleName, updateRequest, realmContext, securityContext); + } + + /** From PolarisPrincipalRolesApiService */ + @Override + public Response listPrincipalRoles(RealmContext realmContext, SecurityContext securityContext) { + return delegate.listPrincipalRoles(realmContext, securityContext); + } + + /** From PolarisCatalogsApiService */ + @Override + public Response createCatalogRole( + String catalogName, + CreateCatalogRoleRequest request, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.createCatalogRole(catalogName, request, realmContext, securityContext); + } + + /** From PolarisCatalogsApiService */ + @Override + public Response deleteCatalogRole( + String catalogName, + String catalogRoleName, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.deleteCatalogRole(catalogName, catalogRoleName, realmContext, securityContext); + } + + /** From PolarisCatalogsApiService */ + @Override + public Response getCatalogRole( + String catalogName, + String catalogRoleName, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.getCatalogRole(catalogName, catalogRoleName, realmContext, securityContext); + } + + /** From PolarisCatalogsApiService */ + @Override + public Response updateCatalogRole( + String catalogName, + String catalogRoleName, + UpdateCatalogRoleRequest updateRequest, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.updateCatalogRole( + catalogName, catalogRoleName, updateRequest, realmContext, securityContext); + } + + /** From PolarisCatalogsApiService */ + @Override + public Response listCatalogRoles( + String catalogName, RealmContext realmContext, SecurityContext securityContext) { + return delegate.listCatalogRoles(catalogName, realmContext, securityContext); + } + + /** From PolarisPrincipalsApiService */ + @Override + public Response assignPrincipalRole( + String principalName, + GrantPrincipalRoleRequest request, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.assignPrincipalRole(principalName, request, realmContext, securityContext); + } + + /** From PolarisPrincipalsApiService */ + @Override + public Response revokePrincipalRole( + String principalName, + String principalRoleName, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.revokePrincipalRole( + principalName, principalRoleName, realmContext, securityContext); + } + + /** From PolarisPrincipalsApiService */ + @Override + public Response listPrincipalRolesAssigned( + String principalName, RealmContext realmContext, SecurityContext securityContext) { + return delegate.listPrincipalRolesAssigned(principalName, realmContext, securityContext); + } + + /** From PolarisPrincipalRolesApiService */ + @Override + public Response assignCatalogRoleToPrincipalRole( + String principalRoleName, + String catalogName, + GrantCatalogRoleRequest request, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.assignCatalogRoleToPrincipalRole( + principalRoleName, catalogName, request, realmContext, securityContext); + } + + /** From PolarisPrincipalRolesApiService */ + @Override + public Response revokeCatalogRoleFromPrincipalRole( + String principalRoleName, + String catalogName, + String catalogRoleName, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.revokeCatalogRoleFromPrincipalRole( + principalRoleName, catalogName, catalogRoleName, realmContext, securityContext); + } + + /** From PolarisPrincipalRolesApiService */ + @Override + public Response listAssigneePrincipalsForPrincipalRole( + String principalRoleName, RealmContext realmContext, SecurityContext securityContext) { + return delegate.listAssigneePrincipalsForPrincipalRole( + principalRoleName, realmContext, securityContext); + } + + /** From PolarisPrincipalRolesApiService */ + @Override + public Response listCatalogRolesForPrincipalRole( + String principalRoleName, + String catalogName, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.listCatalogRolesForPrincipalRole( + principalRoleName, catalogName, realmContext, securityContext); + } + + /** From PolarisCatalogsApiService */ + @Override + public Response addGrantToCatalogRole( + String catalogName, + String catalogRoleName, + AddGrantRequest grantRequest, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.addGrantToCatalogRole( + catalogName, catalogRoleName, grantRequest, realmContext, securityContext); + } + + /** From PolarisCatalogsApiService */ + @Override + public Response revokeGrantFromCatalogRole( + String catalogName, + String catalogRoleName, + Boolean cascade, + RevokeGrantRequest grantRequest, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.revokeGrantFromCatalogRole( + catalogName, catalogRoleName, cascade, grantRequest, realmContext, securityContext); + } + + /** From PolarisCatalogsApiService */ + @Override + public Response listAssigneePrincipalRolesForCatalogRole( + String catalogName, + String catalogRoleName, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.listAssigneePrincipalRolesForCatalogRole( + catalogName, catalogRoleName, realmContext, securityContext); + } + + /** From PolarisCatalogsApiService */ + @Override + public Response listGrantsForCatalogRole( + String catalogName, + String catalogRoleName, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.listGrantsForCatalogRole( + catalogName, catalogRoleName, realmContext, securityContext); + } } diff --git a/runtime/service/src/main/java/org/apache/polaris/service/admin/PolarisServiceImpl.java b/runtime/service/src/main/java/org/apache/polaris/service/admin/PolarisServiceImpl.java index 492a28f20b..7f7d6f68ce 100644 --- a/runtime/service/src/main/java/org/apache/polaris/service/admin/PolarisServiceImpl.java +++ b/runtime/service/src/main/java/org/apache/polaris/service/admin/PolarisServiceImpl.java @@ -89,7 +89,7 @@ /** Concrete implementation of the Polaris API services */ @RequestScoped -@ApiBusinessLogic +@ApiBaseImplementation public class PolarisServiceImpl implements PolarisCatalogsApiService, PolarisPrincipalsApiService, diff --git a/runtime/service/src/main/java/org/apache/polaris/service/catalog/generic/GenericTableCatalogAdapter.java b/runtime/service/src/main/java/org/apache/polaris/service/catalog/generic/GenericTableCatalogAdapter.java index 25bbf65642..8d537930ab 100644 --- a/runtime/service/src/main/java/org/apache/polaris/service/catalog/generic/GenericTableCatalogAdapter.java +++ b/runtime/service/src/main/java/org/apache/polaris/service/catalog/generic/GenericTableCatalogAdapter.java @@ -34,7 +34,7 @@ import org.apache.polaris.core.persistence.PolarisMetaStoreManager; import org.apache.polaris.core.persistence.resolver.ResolutionManifestFactory; import org.apache.polaris.core.secrets.UserSecretsManager; -import org.apache.polaris.service.admin.ApiBusinessLogic; +import org.apache.polaris.service.admin.ApiBaseImplementation; import org.apache.polaris.service.catalog.CatalogPrefixParser; import org.apache.polaris.service.catalog.api.PolarisCatalogGenericTableApiService; import org.apache.polaris.service.catalog.common.CatalogAdapter; @@ -46,7 +46,7 @@ import org.slf4j.LoggerFactory; @RequestScoped -@ApiBusinessLogic +@ApiBaseImplementation public class GenericTableCatalogAdapter implements PolarisCatalogGenericTableApiService, CatalogAdapter { diff --git a/runtime/service/src/main/java/org/apache/polaris/service/catalog/generic/GenericTableCatalogAdapterDefaultDelegator.java b/runtime/service/src/main/java/org/apache/polaris/service/catalog/generic/GenericTableCatalogAdapterDefaultDelegator.java index 3cc864c11d..3160de0ffe 100644 --- a/runtime/service/src/main/java/org/apache/polaris/service/catalog/generic/GenericTableCatalogAdapterDefaultDelegator.java +++ b/runtime/service/src/main/java/org/apache/polaris/service/catalog/generic/GenericTableCatalogAdapterDefaultDelegator.java @@ -26,60 +26,66 @@ import jakarta.ws.rs.core.Response; import jakarta.ws.rs.core.SecurityContext; import org.apache.polaris.core.context.RealmContext; -import org.apache.polaris.service.admin.ApiBusinessLogic; +import org.apache.polaris.service.admin.ApiBaseImplementation; import org.apache.polaris.service.catalog.api.PolarisCatalogGenericTableApiService; import org.apache.polaris.service.catalog.common.CatalogAdapter; import org.apache.polaris.service.types.CreateGenericTableRequest; @RequestScoped @Alternative -@Priority(1000) // Will allow vendor-specific delegators to be added and used -public class GenericTableCatalogAdapterDefaultDelegator implements PolarisCatalogGenericTableApiService, CatalogAdapter { - private final GenericTableCatalogAdapter delegate; +@Priority(1000) // Will allow downstream project-specific delegators to be added and used +public class GenericTableCatalogAdapterDefaultDelegator + implements PolarisCatalogGenericTableApiService, CatalogAdapter { + private final GenericTableCatalogAdapter delegate; - @Inject - public GenericTableCatalogAdapterDefaultDelegator(@ApiBusinessLogic GenericTableCatalogAdapter delegate) { - this.delegate = delegate; - } + @Inject + public GenericTableCatalogAdapterDefaultDelegator( + @ApiBaseImplementation GenericTableCatalogAdapter delegate) { + this.delegate = delegate; + } - @Override - public Response createGenericTable( - String prefix, - String namespace, - CreateGenericTableRequest createGenericTableRequest, - RealmContext realmContext, - SecurityContext securityContext) { - return delegate.createGenericTable(prefix, namespace, createGenericTableRequest, realmContext, securityContext); - } + @Override + public Response createGenericTable( + String prefix, + String namespace, + CreateGenericTableRequest createGenericTableRequest, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.createGenericTable( + prefix, namespace, createGenericTableRequest, realmContext, securityContext); + } - @Override - public Response dropGenericTable( - String prefix, - String namespace, - String genericTable, - RealmContext realmContext, - SecurityContext securityContext) { - return delegate.dropGenericTable(prefix, namespace, genericTable, realmContext, securityContext); - } + @Override + public Response dropGenericTable( + String prefix, + String namespace, + String genericTable, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.dropGenericTable( + prefix, namespace, genericTable, realmContext, securityContext); + } - @Override - public Response listGenericTables( - String prefix, - String namespace, - String pageToken, - Integer pageSize, - RealmContext realmContext, - SecurityContext securityContext) { - return delegate.listGenericTables(prefix, namespace, pageToken, pageSize, realmContext, securityContext); - } + @Override + public Response listGenericTables( + String prefix, + String namespace, + String pageToken, + Integer pageSize, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.listGenericTables( + prefix, namespace, pageToken, pageSize, realmContext, securityContext); + } - @Override - public Response loadGenericTable( - String prefix, - String namespace, - String genericTable, - RealmContext realmContext, - SecurityContext securityContext) { - return delegate.loadGenericTable(prefix, namespace, genericTable, realmContext, securityContext); - } + @Override + public Response loadGenericTable( + String prefix, + String namespace, + String genericTable, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.loadGenericTable( + prefix, namespace, genericTable, realmContext, securityContext); + } } diff --git a/runtime/service/src/main/java/org/apache/polaris/service/catalog/iceberg/IcebergCatalogAdapter.java b/runtime/service/src/main/java/org/apache/polaris/service/catalog/iceberg/IcebergCatalogAdapter.java index 332bdebe0d..fec1f3e9fa 100644 --- a/runtime/service/src/main/java/org/apache/polaris/service/catalog/iceberg/IcebergCatalogAdapter.java +++ b/runtime/service/src/main/java/org/apache/polaris/service/catalog/iceberg/IcebergCatalogAdapter.java @@ -76,7 +76,7 @@ import org.apache.polaris.core.persistence.resolver.ResolverStatus; import org.apache.polaris.core.rest.PolarisEndpoints; import org.apache.polaris.core.secrets.UserSecretsManager; -import org.apache.polaris.service.admin.ApiBusinessLogic; +import org.apache.polaris.service.admin.ApiBaseImplementation; import org.apache.polaris.service.catalog.AccessDelegationMode; import org.apache.polaris.service.catalog.CatalogPrefixParser; import org.apache.polaris.service.catalog.api.IcebergRestCatalogApiService; @@ -97,7 +97,7 @@ * `IcebergCatalogHandler`. */ @RequestScoped -@ApiBusinessLogic +@ApiBaseImplementation public class IcebergCatalogAdapter implements IcebergRestCatalogApiService, IcebergRestConfigurationApiService, CatalogAdapter { diff --git a/runtime/service/src/main/java/org/apache/polaris/service/catalog/iceberg/IcebergCatalogAdapterDefaultDelegator.java b/runtime/service/src/main/java/org/apache/polaris/service/catalog/iceberg/IcebergCatalogAdapterDefaultDelegator.java index 6bac74c93f..5f0cc0cc8a 100644 --- a/runtime/service/src/main/java/org/apache/polaris/service/catalog/iceberg/IcebergCatalogAdapterDefaultDelegator.java +++ b/runtime/service/src/main/java/org/apache/polaris/service/catalog/iceberg/IcebergCatalogAdapterDefaultDelegator.java @@ -34,7 +34,7 @@ import org.apache.iceberg.rest.requests.ReportMetricsRequest; import org.apache.iceberg.rest.requests.UpdateNamespacePropertiesRequest; import org.apache.polaris.core.context.RealmContext; -import org.apache.polaris.service.admin.ApiBusinessLogic; +import org.apache.polaris.service.admin.ApiBaseImplementation; import org.apache.polaris.service.catalog.api.IcebergRestCatalogApiService; import org.apache.polaris.service.catalog.api.IcebergRestConfigurationApiService; import org.apache.polaris.service.catalog.common.CatalogAdapter; @@ -42,268 +42,289 @@ import org.apache.polaris.service.types.CommitViewRequest; import org.apache.polaris.service.types.NotificationRequest; - @RequestScoped @Alternative -@Priority(1000) // Will allow vendor-specific delegators to be added and used -public class IcebergCatalogAdapterDefaultDelegator implements IcebergRestCatalogApiService, IcebergRestConfigurationApiService, CatalogAdapter { - private final IcebergCatalogAdapter delegate; +@Priority(1000) // Will allow downstream project-specific delegators to be added and used +public class IcebergCatalogAdapterDefaultDelegator + implements IcebergRestCatalogApiService, IcebergRestConfigurationApiService, CatalogAdapter { + private final IcebergCatalogAdapter delegate; - @Inject - public IcebergCatalogAdapterDefaultDelegator(@ApiBusinessLogic IcebergCatalogAdapter catalogAdapter) { - this.delegate = catalogAdapter; - } + @Inject + public IcebergCatalogAdapterDefaultDelegator( + @ApiBaseImplementation IcebergCatalogAdapter catalogAdapter) { + this.delegate = catalogAdapter; + } - @Override - public Response createNamespace( - String prefix, - CreateNamespaceRequest createNamespaceRequest, - RealmContext realmContext, - SecurityContext securityContext) { - return delegate.createNamespace(prefix, createNamespaceRequest, realmContext, securityContext); - } + @Override + public Response createNamespace( + String prefix, + CreateNamespaceRequest createNamespaceRequest, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.createNamespace(prefix, createNamespaceRequest, realmContext, securityContext); + } - @Override - public Response listNamespaces( - String prefix, - String pageToken, - Integer pageSize, - String parent, - RealmContext realmContext, - SecurityContext securityContext) { - return delegate.listNamespaces(prefix, pageToken, pageSize, parent, realmContext, securityContext); - } + @Override + public Response listNamespaces( + String prefix, + String pageToken, + Integer pageSize, + String parent, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.listNamespaces( + prefix, pageToken, pageSize, parent, realmContext, securityContext); + } - @Override - public Response loadNamespaceMetadata( - String prefix, String namespace, RealmContext realmContext, SecurityContext securityContext) { - return delegate.loadNamespaceMetadata(prefix, namespace, realmContext, securityContext); - } + @Override + public Response loadNamespaceMetadata( + String prefix, String namespace, RealmContext realmContext, SecurityContext securityContext) { + return delegate.loadNamespaceMetadata(prefix, namespace, realmContext, securityContext); + } - @Override - public Response namespaceExists( - String prefix, String namespace, RealmContext realmContext, SecurityContext securityContext) { - return delegate.namespaceExists(prefix, namespace, realmContext, securityContext); - } + @Override + public Response namespaceExists( + String prefix, String namespace, RealmContext realmContext, SecurityContext securityContext) { + return delegate.namespaceExists(prefix, namespace, realmContext, securityContext); + } - @Override - public Response dropNamespace( - String prefix, String namespace, RealmContext realmContext, SecurityContext securityContext) { - return delegate.dropNamespace(prefix, namespace, realmContext, securityContext); - } + @Override + public Response dropNamespace( + String prefix, String namespace, RealmContext realmContext, SecurityContext securityContext) { + return delegate.dropNamespace(prefix, namespace, realmContext, securityContext); + } - @Override - public Response updateProperties( - String prefix, - String namespace, - UpdateNamespacePropertiesRequest updateNamespacePropertiesRequest, - RealmContext realmContext, - SecurityContext securityContext) { - return delegate.updateProperties(prefix, namespace, updateNamespacePropertiesRequest, realmContext, securityContext); - } + @Override + public Response updateProperties( + String prefix, + String namespace, + UpdateNamespacePropertiesRequest updateNamespacePropertiesRequest, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.updateProperties( + prefix, namespace, updateNamespacePropertiesRequest, realmContext, securityContext); + } - @Override - public Response createTable( - String prefix, - String namespace, - CreateTableRequest createTableRequest, - String accessDelegationMode, - RealmContext realmContext, - SecurityContext securityContext) { - return delegate.createTable(prefix, namespace, createTableRequest, accessDelegationMode, realmContext, securityContext); - } + @Override + public Response createTable( + String prefix, + String namespace, + CreateTableRequest createTableRequest, + String accessDelegationMode, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.createTable( + prefix, namespace, createTableRequest, accessDelegationMode, realmContext, securityContext); + } - @Override - public Response listTables( - String prefix, - String namespace, - String pageToken, - Integer pageSize, - RealmContext realmContext, - SecurityContext securityContext) { - return delegate.listTables(prefix, namespace, pageToken, pageSize, realmContext, securityContext); - } + @Override + public Response listTables( + String prefix, + String namespace, + String pageToken, + Integer pageSize, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.listTables( + prefix, namespace, pageToken, pageSize, realmContext, securityContext); + } - @Override - public Response loadTable( - String prefix, - String namespace, - String table, - String accessDelegationMode, - String ifNoneMatchString, - String snapshots, - RealmContext realmContext, - SecurityContext securityContext) { - return delegate.loadTable(prefix, namespace, table, accessDelegationMode, ifNoneMatchString, snapshots, realmContext, securityContext); - } + @Override + public Response loadTable( + String prefix, + String namespace, + String table, + String accessDelegationMode, + String ifNoneMatchString, + String snapshots, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.loadTable( + prefix, + namespace, + table, + accessDelegationMode, + ifNoneMatchString, + snapshots, + realmContext, + securityContext); + } - @Override - public Response tableExists( - String prefix, - String namespace, - String table, - RealmContext realmContext, - SecurityContext securityContext) { - return delegate.tableExists(prefix, namespace, table, realmContext, securityContext); - } + @Override + public Response tableExists( + String prefix, + String namespace, + String table, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.tableExists(prefix, namespace, table, realmContext, securityContext); + } - @Override - public Response dropTable( - String prefix, - String namespace, - String table, - Boolean purgeRequested, - RealmContext realmContext, - SecurityContext securityContext) { - return delegate.dropTable(prefix, namespace, table, purgeRequested, realmContext, securityContext); - } + @Override + public Response dropTable( + String prefix, + String namespace, + String table, + Boolean purgeRequested, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.dropTable( + prefix, namespace, table, purgeRequested, realmContext, securityContext); + } - @Override - public Response registerTable( - String prefix, - String namespace, - RegisterTableRequest registerTableRequest, - RealmContext realmContext, - SecurityContext securityContext) { - return delegate.registerTable(prefix, namespace, registerTableRequest, realmContext, securityContext); - } + @Override + public Response registerTable( + String prefix, + String namespace, + RegisterTableRequest registerTableRequest, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.registerTable( + prefix, namespace, registerTableRequest, realmContext, securityContext); + } - @Override - public Response renameTable( - String prefix, - RenameTableRequest renameTableRequest, - RealmContext realmContext, - SecurityContext securityContext) { - return delegate.renameTable(prefix, renameTableRequest, realmContext, securityContext); - } + @Override + public Response renameTable( + String prefix, + RenameTableRequest renameTableRequest, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.renameTable(prefix, renameTableRequest, realmContext, securityContext); + } - @Override - public Response updateTable( - String prefix, - String namespace, - String table, - CommitTableRequest commitTableRequest, - RealmContext realmContext, - SecurityContext securityContext) { - return delegate.updateTable(prefix, namespace, table, commitTableRequest, realmContext, securityContext); - } + @Override + public Response updateTable( + String prefix, + String namespace, + String table, + CommitTableRequest commitTableRequest, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.updateTable( + prefix, namespace, table, commitTableRequest, realmContext, securityContext); + } - @Override - public Response createView( - String prefix, - String namespace, - CreateViewRequest createViewRequest, - RealmContext realmContext, - SecurityContext securityContext) { - return delegate.createView(prefix, namespace, createViewRequest, realmContext, securityContext); - } + @Override + public Response createView( + String prefix, + String namespace, + CreateViewRequest createViewRequest, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.createView(prefix, namespace, createViewRequest, realmContext, securityContext); + } - @Override - public Response listViews( - String prefix, - String namespace, - String pageToken, - Integer pageSize, - RealmContext realmContext, - SecurityContext securityContext) { - return delegate.listViews(prefix, namespace, pageToken, pageSize, realmContext, securityContext); - } + @Override + public Response listViews( + String prefix, + String namespace, + String pageToken, + Integer pageSize, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.listViews( + prefix, namespace, pageToken, pageSize, realmContext, securityContext); + } - @Override - public Response loadCredentials( - String prefix, - String namespace, - String table, - RealmContext realmContext, - SecurityContext securityContext) { - return delegate.loadCredentials(prefix, namespace, table, realmContext, securityContext); - } + @Override + public Response loadCredentials( + String prefix, + String namespace, + String table, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.loadCredentials(prefix, namespace, table, realmContext, securityContext); + } - @Override - public Response loadView( - String prefix, - String namespace, - String view, - RealmContext realmContext, - SecurityContext securityContext) { - return delegate.loadView(prefix, namespace, view, realmContext, securityContext); - } + @Override + public Response loadView( + String prefix, + String namespace, + String view, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.loadView(prefix, namespace, view, realmContext, securityContext); + } - @Override - public Response viewExists( - String prefix, - String namespace, - String view, - RealmContext realmContext, - SecurityContext securityContext) { - return delegate.viewExists(prefix, namespace, view, realmContext, securityContext); - } + @Override + public Response viewExists( + String prefix, + String namespace, + String view, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.viewExists(prefix, namespace, view, realmContext, securityContext); + } - @Override - public Response dropView( - String prefix, - String namespace, - String view, - RealmContext realmContext, - SecurityContext securityContext) { - return delegate.dropView(prefix, namespace, view, realmContext, securityContext); - } + @Override + public Response dropView( + String prefix, + String namespace, + String view, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.dropView(prefix, namespace, view, realmContext, securityContext); + } - @Override - public Response renameView( - String prefix, - RenameTableRequest renameTableRequest, - RealmContext realmContext, - SecurityContext securityContext) { - return delegate.renameView(prefix, renameTableRequest, realmContext, securityContext); - } + @Override + public Response renameView( + String prefix, + RenameTableRequest renameTableRequest, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.renameView(prefix, renameTableRequest, realmContext, securityContext); + } - @Override - public Response replaceView( - String prefix, - String namespace, - String view, - CommitViewRequest commitViewRequest, - RealmContext realmContext, - SecurityContext securityContext) { - return delegate.replaceView(prefix, namespace, view, commitViewRequest, realmContext, securityContext); - } + @Override + public Response replaceView( + String prefix, + String namespace, + String view, + CommitViewRequest commitViewRequest, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.replaceView( + prefix, namespace, view, commitViewRequest, realmContext, securityContext); + } - @Override - public Response commitTransaction( - String prefix, - CommitTransactionRequest commitTransactionRequest, - RealmContext realmContext, - SecurityContext securityContext) { - return delegate.commitTransaction(prefix, commitTransactionRequest, realmContext, securityContext); - } + @Override + public Response commitTransaction( + String prefix, + CommitTransactionRequest commitTransactionRequest, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.commitTransaction( + prefix, commitTransactionRequest, realmContext, securityContext); + } - @Override - public Response reportMetrics( - String prefix, - String namespace, - String table, - ReportMetricsRequest reportMetricsRequest, - RealmContext realmContext, - SecurityContext securityContext) { - return delegate.reportMetrics(prefix, namespace, table, reportMetricsRequest, realmContext, securityContext); - } + @Override + public Response reportMetrics( + String prefix, + String namespace, + String table, + ReportMetricsRequest reportMetricsRequest, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.reportMetrics( + prefix, namespace, table, reportMetricsRequest, realmContext, securityContext); + } - @Override - public Response sendNotification( - String prefix, - String namespace, - String table, - NotificationRequest notificationRequest, - RealmContext realmContext, - SecurityContext securityContext) { - return delegate.sendNotification(prefix, namespace, table, notificationRequest, realmContext, securityContext); - } + @Override + public Response sendNotification( + String prefix, + String namespace, + String table, + NotificationRequest notificationRequest, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.sendNotification( + prefix, namespace, table, notificationRequest, realmContext, securityContext); + } - /** From IcebergRestConfigurationApiService. */ - @Override - public Response getConfig( - String warehouse, RealmContext realmContext, SecurityContext securityContext) { - return delegate.getConfig(warehouse, realmContext, securityContext); - } + /** From IcebergRestConfigurationApiService. */ + @Override + public Response getConfig( + String warehouse, RealmContext realmContext, SecurityContext securityContext) { + return delegate.getConfig(warehouse, realmContext, securityContext); + } } diff --git a/runtime/service/src/main/java/org/apache/polaris/service/catalog/policy/PolicyCatalogAdapter.java b/runtime/service/src/main/java/org/apache/polaris/service/catalog/policy/PolicyCatalogAdapter.java index 38ed518935..f1beda403a 100644 --- a/runtime/service/src/main/java/org/apache/polaris/service/catalog/policy/PolicyCatalogAdapter.java +++ b/runtime/service/src/main/java/org/apache/polaris/service/catalog/policy/PolicyCatalogAdapter.java @@ -36,7 +36,7 @@ import org.apache.polaris.core.persistence.resolver.ResolutionManifestFactory; import org.apache.polaris.core.policy.PolicyType; import org.apache.polaris.core.secrets.UserSecretsManager; -import org.apache.polaris.service.admin.ApiBusinessLogic; +import org.apache.polaris.service.admin.ApiBaseImplementation; import org.apache.polaris.service.catalog.CatalogPrefixParser; import org.apache.polaris.service.catalog.api.PolarisCatalogPolicyApiService; import org.apache.polaris.service.catalog.common.CatalogAdapter; @@ -52,7 +52,7 @@ import org.slf4j.LoggerFactory; @RequestScoped -@ApiBusinessLogic +@ApiBaseImplementation public class PolicyCatalogAdapter implements PolarisCatalogPolicyApiService, CatalogAdapter { private static final Logger LOGGER = LoggerFactory.getLogger(PolicyCatalogAdapter.class); diff --git a/runtime/service/src/main/java/org/apache/polaris/service/catalog/policy/PolicyCatalogAdapterDefaultDelegator.java b/runtime/service/src/main/java/org/apache/polaris/service/catalog/policy/PolicyCatalogAdapterDefaultDelegator.java index 266e8e3616..eff5f34146 100644 --- a/runtime/service/src/main/java/org/apache/polaris/service/catalog/policy/PolicyCatalogAdapterDefaultDelegator.java +++ b/runtime/service/src/main/java/org/apache/polaris/service/catalog/policy/PolicyCatalogAdapterDefaultDelegator.java @@ -26,7 +26,7 @@ import jakarta.ws.rs.core.Response; import jakarta.ws.rs.core.SecurityContext; import org.apache.polaris.core.context.RealmContext; -import org.apache.polaris.service.admin.ApiBusinessLogic; +import org.apache.polaris.service.admin.ApiBaseImplementation; import org.apache.polaris.service.catalog.api.PolarisCatalogPolicyApiService; import org.apache.polaris.service.catalog.common.CatalogAdapter; import org.apache.polaris.service.types.AttachPolicyRequest; @@ -36,101 +36,117 @@ @RequestScoped @Alternative -@Priority(1000) // Will allow vendor-specific delegators to be added and used -public class PolicyCatalogAdapterDefaultDelegator implements PolarisCatalogPolicyApiService, CatalogAdapter { - private final PolicyCatalogAdapter delegate; +@Priority(1000) // Will allow downstream project-specific delegators to be added and used +public class PolicyCatalogAdapterDefaultDelegator + implements PolarisCatalogPolicyApiService, CatalogAdapter { + private final PolicyCatalogAdapter delegate; - @Inject - public PolicyCatalogAdapterDefaultDelegator(@ApiBusinessLogic PolicyCatalogAdapter delegate) { - this.delegate = delegate; - } + @Inject + public PolicyCatalogAdapterDefaultDelegator( + @ApiBaseImplementation PolicyCatalogAdapter delegate) { + this.delegate = delegate; + } - @Override - public Response createPolicy( - String prefix, - String namespace, - CreatePolicyRequest createPolicyRequest, - RealmContext realmContext, - SecurityContext securityContext) { - return delegate.createPolicy(prefix, namespace, createPolicyRequest, realmContext, securityContext); - } + @Override + public Response createPolicy( + String prefix, + String namespace, + CreatePolicyRequest createPolicyRequest, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.createPolicy( + prefix, namespace, createPolicyRequest, realmContext, securityContext); + } - @Override - public Response listPolicies( - String prefix, - String namespace, - String pageToken, - Integer pageSize, - String policyType, - RealmContext realmContext, - SecurityContext securityContext) { - return delegate.listPolicies(prefix, namespace, pageToken, pageSize, policyType, realmContext, securityContext); - } + @Override + public Response listPolicies( + String prefix, + String namespace, + String pageToken, + Integer pageSize, + String policyType, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.listPolicies( + prefix, namespace, pageToken, pageSize, policyType, realmContext, securityContext); + } - @Override - public Response loadPolicy( - String prefix, - String namespace, - String policyName, - RealmContext realmContext, - SecurityContext securityContext) { - return delegate.loadPolicy(prefix, namespace, policyName, realmContext, securityContext); - } + @Override + public Response loadPolicy( + String prefix, + String namespace, + String policyName, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.loadPolicy(prefix, namespace, policyName, realmContext, securityContext); + } - @Override - public Response updatePolicy( - String prefix, - String namespace, - String policyName, - UpdatePolicyRequest updatePolicyRequest, - RealmContext realmContext, - SecurityContext securityContext) { - return delegate.updatePolicy(prefix, namespace, policyName, updatePolicyRequest, realmContext, securityContext); - } + @Override + public Response updatePolicy( + String prefix, + String namespace, + String policyName, + UpdatePolicyRequest updatePolicyRequest, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.updatePolicy( + prefix, namespace, policyName, updatePolicyRequest, realmContext, securityContext); + } - @Override - public Response dropPolicy( - String prefix, - String namespace, - String policyName, - Boolean detachAll, - RealmContext realmContext, - SecurityContext securityContext) { - return delegate.dropPolicy(prefix, namespace, policyName, detachAll, realmContext, securityContext); - } + @Override + public Response dropPolicy( + String prefix, + String namespace, + String policyName, + Boolean detachAll, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.dropPolicy( + prefix, namespace, policyName, detachAll, realmContext, securityContext); + } - @Override - public Response attachPolicy( - String prefix, - String namespace, - String policyName, - AttachPolicyRequest attachPolicyRequest, - RealmContext realmContext, - SecurityContext securityContext) { - return delegate.attachPolicy(prefix, namespace, policyName, attachPolicyRequest, realmContext, securityContext); - } + @Override + public Response attachPolicy( + String prefix, + String namespace, + String policyName, + AttachPolicyRequest attachPolicyRequest, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.attachPolicy( + prefix, namespace, policyName, attachPolicyRequest, realmContext, securityContext); + } - @Override - public Response detachPolicy( - String prefix, - String namespace, - String policyName, - DetachPolicyRequest detachPolicyRequest, - RealmContext realmContext, - SecurityContext securityContext) { - return delegate.detachPolicy(prefix, namespace, policyName, detachPolicyRequest, realmContext, securityContext); - } + @Override + public Response detachPolicy( + String prefix, + String namespace, + String policyName, + DetachPolicyRequest detachPolicyRequest, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.detachPolicy( + prefix, namespace, policyName, detachPolicyRequest, realmContext, securityContext); + } - @Override - public Response getApplicablePolicies( - String prefix, - String pageToken, - Integer pageSize, - String namespace, - String targetName, - String policyType, - RealmContext realmContext, - SecurityContext securityContext) { - return delegate.getApplicablePolicies(prefix, pageToken, pageSize, namespace, targetName, policyType, realmContext, securityContext); - } + @Override + public Response getApplicablePolicies( + String prefix, + String pageToken, + Integer pageSize, + String namespace, + String targetName, + String policyType, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.getApplicablePolicies( + prefix, + pageToken, + pageSize, + namespace, + targetName, + policyType, + realmContext, + securityContext); + } } From 46a95ab83e98f704c493fdde17f2a82507c58f6d Mon Sep 17 00:00:00 2001 From: adnanhemani Date: Mon, 25 Aug 2025 18:25:40 -0700 Subject: [PATCH 3/7] Address feedback from @dimas-b --- .../service/admin/EventsServiceDelegator.java | 36 ++ ...seImplementation.java => MainService.java} | 2 +- ...olarisCatalogsServiceDefaultDelegator.java | 181 +++++++++ ...PrincipalRolesServiceDefaultDelegator.java | 132 +++++++ ...arisPrincipalsServiceDefaultDelegator.java | 118 ++++++ .../admin/PolarisServiceDefaultDelegator.java | 346 ------------------ .../service/admin/PolarisServiceImpl.java | 2 +- ...gGenericTableServiceDefaultDelegator.java} | 12 +- .../generic/GenericTableCatalogAdapter.java | 4 +- .../iceberg/IcebergCatalogAdapter.java | 4 +- ...rgRestCatalogServiceDefaultDelegator.java} | 22 +- ...tConfigurationServiceDefaultDelegator.java | 55 +++ ...CatalogPolicyServiceDefaultDelegator.java} | 11 +- .../catalog/policy/PolicyCatalogAdapter.java | 4 +- 14 files changed, 554 insertions(+), 375 deletions(-) create mode 100644 runtime/service/src/main/java/org/apache/polaris/service/admin/EventsServiceDelegator.java rename runtime/service/src/main/java/org/apache/polaris/service/admin/{ApiBaseImplementation.java => MainService.java} (96%) create mode 100644 runtime/service/src/main/java/org/apache/polaris/service/admin/PolarisCatalogsServiceDefaultDelegator.java create mode 100644 runtime/service/src/main/java/org/apache/polaris/service/admin/PolarisPrincipalRolesServiceDefaultDelegator.java create mode 100644 runtime/service/src/main/java/org/apache/polaris/service/admin/PolarisPrincipalsServiceDefaultDelegator.java delete mode 100644 runtime/service/src/main/java/org/apache/polaris/service/admin/PolarisServiceDefaultDelegator.java rename runtime/service/src/main/java/org/apache/polaris/service/catalog/generic/{GenericTableCatalogAdapterDefaultDelegator.java => CatalogGenericTableServiceDefaultDelegator.java} (89%) rename runtime/service/src/main/java/org/apache/polaris/service/catalog/iceberg/{IcebergCatalogAdapterDefaultDelegator.java => IcebergRestCatalogServiceDefaultDelegator.java} (93%) create mode 100644 runtime/service/src/main/java/org/apache/polaris/service/catalog/iceberg/IcebergRestConfigurationServiceDefaultDelegator.java rename runtime/service/src/main/java/org/apache/polaris/service/catalog/policy/{PolicyCatalogAdapterDefaultDelegator.java => CatalogPolicyServiceDefaultDelegator.java} (93%) diff --git a/runtime/service/src/main/java/org/apache/polaris/service/admin/EventsServiceDelegator.java b/runtime/service/src/main/java/org/apache/polaris/service/admin/EventsServiceDelegator.java new file mode 100644 index 0000000000..8c5fe9e679 --- /dev/null +++ b/runtime/service/src/main/java/org/apache/polaris/service/admin/EventsServiceDelegator.java @@ -0,0 +1,36 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.polaris.service.admin; + +import static java.lang.annotation.ElementType.FIELD; +import static java.lang.annotation.ElementType.METHOD; +import static java.lang.annotation.ElementType.PARAMETER; +import static java.lang.annotation.ElementType.TYPE; +import static java.lang.annotation.RetentionPolicy.RUNTIME; + +import jakarta.inject.Qualifier; +import java.lang.annotation.Retention; +import java.lang.annotation.Target; + +// Used to annotate delegator classes, which are emitting events +@Qualifier +@Retention(RUNTIME) +@Target({TYPE, METHOD, FIELD, PARAMETER}) +public @interface EventsServiceDelegator {} diff --git a/runtime/service/src/main/java/org/apache/polaris/service/admin/ApiBaseImplementation.java b/runtime/service/src/main/java/org/apache/polaris/service/admin/MainService.java similarity index 96% rename from runtime/service/src/main/java/org/apache/polaris/service/admin/ApiBaseImplementation.java rename to runtime/service/src/main/java/org/apache/polaris/service/admin/MainService.java index 47be57bc2b..b7748fb1a2 100644 --- a/runtime/service/src/main/java/org/apache/polaris/service/admin/ApiBaseImplementation.java +++ b/runtime/service/src/main/java/org/apache/polaris/service/admin/MainService.java @@ -32,4 +32,4 @@ @Qualifier @Retention(RUNTIME) @Target({TYPE, METHOD, FIELD, PARAMETER}) -public @interface ApiBaseImplementation {} +public @interface MainService {} diff --git a/runtime/service/src/main/java/org/apache/polaris/service/admin/PolarisCatalogsServiceDefaultDelegator.java b/runtime/service/src/main/java/org/apache/polaris/service/admin/PolarisCatalogsServiceDefaultDelegator.java new file mode 100644 index 0000000000..bbcf42c99f --- /dev/null +++ b/runtime/service/src/main/java/org/apache/polaris/service/admin/PolarisCatalogsServiceDefaultDelegator.java @@ -0,0 +1,181 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.polaris.service.admin; + +import jakarta.annotation.Priority; +import jakarta.enterprise.context.RequestScoped; +import jakarta.enterprise.inject.Alternative; +import jakarta.enterprise.inject.Default; +import jakarta.ws.rs.core.Response; +import jakarta.ws.rs.core.SecurityContext; +import org.apache.polaris.core.admin.model.AddGrantRequest; +import org.apache.polaris.core.admin.model.CreateCatalogRequest; +import org.apache.polaris.core.admin.model.CreateCatalogRoleRequest; +import org.apache.polaris.core.admin.model.RevokeGrantRequest; +import org.apache.polaris.core.admin.model.UpdateCatalogRequest; +import org.apache.polaris.core.admin.model.UpdateCatalogRoleRequest; +import org.apache.polaris.core.context.RealmContext; +import org.apache.polaris.service.admin.api.PolarisCatalogsApiService; + +@RequestScoped +@Default +@EventsServiceDelegator +@Alternative +@Priority(1000) // Will allow downstream project-specific delegators to be added and used +public class PolarisCatalogsServiceDefaultDelegator implements PolarisCatalogsApiService { + private final PolarisCatalogsApiService delegate; + + public PolarisCatalogsServiceDefaultDelegator(@MainService PolarisCatalogsApiService delegate) { + this.delegate = delegate; + } + + /** From PolarisCatalogsApiService */ + @Override + public Response createCatalog( + CreateCatalogRequest request, RealmContext realmContext, SecurityContext securityContext) { + return delegate.createCatalog(request, realmContext, securityContext); + } + + /** From PolarisCatalogsApiService */ + @Override + public Response deleteCatalog( + String catalogName, RealmContext realmContext, SecurityContext securityContext) { + return delegate.deleteCatalog(catalogName, realmContext, securityContext); + } + + /** From PolarisCatalogsApiService */ + @Override + public Response getCatalog( + String catalogName, RealmContext realmContext, SecurityContext securityContext) { + return delegate.getCatalog(catalogName, realmContext, securityContext); + } + + /** From PolarisCatalogsApiService */ + @Override + public Response updateCatalog( + String catalogName, + UpdateCatalogRequest updateRequest, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.updateCatalog(catalogName, updateRequest, realmContext, securityContext); + } + + /** From PolarisCatalogsApiService */ + @Override + public Response listCatalogs(RealmContext realmContext, SecurityContext securityContext) { + return delegate.listCatalogs(realmContext, securityContext); + } + + /** From PolarisCatalogsApiService */ + @Override + public Response createCatalogRole( + String catalogName, + CreateCatalogRoleRequest request, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.createCatalogRole(catalogName, request, realmContext, securityContext); + } + + /** From PolarisCatalogsApiService */ + @Override + public Response deleteCatalogRole( + String catalogName, + String catalogRoleName, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.deleteCatalogRole(catalogName, catalogRoleName, realmContext, securityContext); + } + + /** From PolarisCatalogsApiService */ + @Override + public Response getCatalogRole( + String catalogName, + String catalogRoleName, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.getCatalogRole(catalogName, catalogRoleName, realmContext, securityContext); + } + + /** From PolarisCatalogsApiService */ + @Override + public Response updateCatalogRole( + String catalogName, + String catalogRoleName, + UpdateCatalogRoleRequest updateRequest, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.updateCatalogRole( + catalogName, catalogRoleName, updateRequest, realmContext, securityContext); + } + + /** From PolarisCatalogsApiService */ + @Override + public Response listCatalogRoles( + String catalogName, RealmContext realmContext, SecurityContext securityContext) { + return delegate.listCatalogRoles(catalogName, realmContext, securityContext); + } + + /** From PolarisCatalogsApiService */ + @Override + public Response addGrantToCatalogRole( + String catalogName, + String catalogRoleName, + AddGrantRequest grantRequest, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.addGrantToCatalogRole( + catalogName, catalogRoleName, grantRequest, realmContext, securityContext); + } + + /** From PolarisCatalogsApiService */ + @Override + public Response revokeGrantFromCatalogRole( + String catalogName, + String catalogRoleName, + Boolean cascade, + RevokeGrantRequest grantRequest, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.revokeGrantFromCatalogRole( + catalogName, catalogRoleName, cascade, grantRequest, realmContext, securityContext); + } + + /** From PolarisCatalogsApiService */ + @Override + public Response listAssigneePrincipalRolesForCatalogRole( + String catalogName, + String catalogRoleName, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.listAssigneePrincipalRolesForCatalogRole( + catalogName, catalogRoleName, realmContext, securityContext); + } + + /** From PolarisCatalogsApiService */ + @Override + public Response listGrantsForCatalogRole( + String catalogName, + String catalogRoleName, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.listGrantsForCatalogRole( + catalogName, catalogRoleName, realmContext, securityContext); + } +} diff --git a/runtime/service/src/main/java/org/apache/polaris/service/admin/PolarisPrincipalRolesServiceDefaultDelegator.java b/runtime/service/src/main/java/org/apache/polaris/service/admin/PolarisPrincipalRolesServiceDefaultDelegator.java new file mode 100644 index 0000000000..597520901f --- /dev/null +++ b/runtime/service/src/main/java/org/apache/polaris/service/admin/PolarisPrincipalRolesServiceDefaultDelegator.java @@ -0,0 +1,132 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.polaris.service.admin; + +import jakarta.annotation.Priority; +import jakarta.enterprise.context.RequestScoped; +import jakarta.enterprise.inject.Alternative; +import jakarta.enterprise.inject.Default; +import jakarta.inject.Inject; +import jakarta.ws.rs.core.Response; +import jakarta.ws.rs.core.SecurityContext; +import org.apache.polaris.core.admin.model.CreatePrincipalRoleRequest; +import org.apache.polaris.core.admin.model.GrantCatalogRoleRequest; +import org.apache.polaris.core.admin.model.UpdatePrincipalRoleRequest; +import org.apache.polaris.core.context.RealmContext; +import org.apache.polaris.service.admin.api.PolarisPrincipalRolesApiService; + +@RequestScoped +@Default +@EventsServiceDelegator +@Alternative +@Priority(1000) // Will allow downstream project-specific delegators to be added and used +public class PolarisPrincipalRolesServiceDefaultDelegator + implements PolarisPrincipalRolesApiService { + private final PolarisPrincipalRolesApiService delegate; + + @Inject + public PolarisPrincipalRolesServiceDefaultDelegator( + @MainService PolarisPrincipalRolesApiService polarisService) { + this.delegate = polarisService; + } + + /** From PolarisPrincipalRolesApiService */ + @Override + public Response createPrincipalRole( + CreatePrincipalRoleRequest request, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.createPrincipalRole(request, realmContext, securityContext); + } + + /** From PolarisPrincipalRolesApiService */ + @Override + public Response deletePrincipalRole( + String principalRoleName, RealmContext realmContext, SecurityContext securityContext) { + return delegate.deletePrincipalRole(principalRoleName, realmContext, securityContext); + } + + /** From PolarisPrincipalRolesApiService */ + @Override + public Response getPrincipalRole( + String principalRoleName, RealmContext realmContext, SecurityContext securityContext) { + return delegate.getPrincipalRole(principalRoleName, realmContext, securityContext); + } + + /** From PolarisPrincipalRolesApiService */ + @Override + public Response updatePrincipalRole( + String principalRoleName, + UpdatePrincipalRoleRequest updateRequest, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.updatePrincipalRole( + principalRoleName, updateRequest, realmContext, securityContext); + } + + /** From PolarisPrincipalRolesApiService */ + @Override + public Response listPrincipalRoles(RealmContext realmContext, SecurityContext securityContext) { + return delegate.listPrincipalRoles(realmContext, securityContext); + } + + /** From PolarisPrincipalRolesApiService */ + @Override + public Response assignCatalogRoleToPrincipalRole( + String principalRoleName, + String catalogName, + GrantCatalogRoleRequest request, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.assignCatalogRoleToPrincipalRole( + principalRoleName, catalogName, request, realmContext, securityContext); + } + + /** From PolarisPrincipalRolesApiService */ + @Override + public Response revokeCatalogRoleFromPrincipalRole( + String principalRoleName, + String catalogName, + String catalogRoleName, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.revokeCatalogRoleFromPrincipalRole( + principalRoleName, catalogName, catalogRoleName, realmContext, securityContext); + } + + /** From PolarisPrincipalRolesApiService */ + @Override + public Response listAssigneePrincipalsForPrincipalRole( + String principalRoleName, RealmContext realmContext, SecurityContext securityContext) { + return delegate.listAssigneePrincipalsForPrincipalRole( + principalRoleName, realmContext, securityContext); + } + + /** From PolarisPrincipalRolesApiService */ + @Override + public Response listCatalogRolesForPrincipalRole( + String principalRoleName, + String catalogName, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.listCatalogRolesForPrincipalRole( + principalRoleName, catalogName, realmContext, securityContext); + } +} diff --git a/runtime/service/src/main/java/org/apache/polaris/service/admin/PolarisPrincipalsServiceDefaultDelegator.java b/runtime/service/src/main/java/org/apache/polaris/service/admin/PolarisPrincipalsServiceDefaultDelegator.java new file mode 100644 index 0000000000..9601d9fab6 --- /dev/null +++ b/runtime/service/src/main/java/org/apache/polaris/service/admin/PolarisPrincipalsServiceDefaultDelegator.java @@ -0,0 +1,118 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.polaris.service.admin; + +import jakarta.annotation.Priority; +import jakarta.enterprise.context.RequestScoped; +import jakarta.enterprise.inject.Alternative; +import jakarta.enterprise.inject.Default; +import jakarta.ws.rs.core.Response; +import jakarta.ws.rs.core.SecurityContext; +import org.apache.polaris.core.admin.model.CreatePrincipalRequest; +import org.apache.polaris.core.admin.model.GrantPrincipalRoleRequest; +import org.apache.polaris.core.admin.model.UpdatePrincipalRequest; +import org.apache.polaris.core.context.RealmContext; +import org.apache.polaris.service.admin.api.PolarisPrincipalsApiService; + +@RequestScoped +@Default +@EventsServiceDelegator +@Alternative +@Priority(1000) // Will allow downstream project-specific delegators to be added and used +public class PolarisPrincipalsServiceDefaultDelegator implements PolarisPrincipalsApiService { + private final PolarisPrincipalsApiService delegate; + + public PolarisPrincipalsServiceDefaultDelegator( + @MainService PolarisPrincipalsApiService delegate) { + this.delegate = delegate; + } + + /** From PolarisPrincipalsApiService */ + @Override + public Response createPrincipal( + CreatePrincipalRequest request, RealmContext realmContext, SecurityContext securityContext) { + return delegate.createPrincipal(request, realmContext, securityContext); + } + + /** From PolarisPrincipalsApiService */ + @Override + public Response deletePrincipal( + String principalName, RealmContext realmContext, SecurityContext securityContext) { + return delegate.deletePrincipal(principalName, realmContext, securityContext); + } + + /** From PolarisPrincipalsApiService */ + @Override + public Response getPrincipal( + String principalName, RealmContext realmContext, SecurityContext securityContext) { + return delegate.getPrincipal(principalName, realmContext, securityContext); + } + + /** From PolarisPrincipalsApiService */ + @Override + public Response updatePrincipal( + String principalName, + UpdatePrincipalRequest updateRequest, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.updatePrincipal(principalName, updateRequest, realmContext, securityContext); + } + + /** From PolarisPrincipalsApiService */ + @Override + public Response rotateCredentials( + String principalName, RealmContext realmContext, SecurityContext securityContext) { + return delegate.rotateCredentials(principalName, realmContext, securityContext); + } + + /** From PolarisPrincipalsApiService */ + @Override + public Response listPrincipals(RealmContext realmContext, SecurityContext securityContext) { + return delegate.listPrincipals(realmContext, securityContext); + } + + /** From PolarisPrincipalsApiService */ + @Override + public Response assignPrincipalRole( + String principalName, + GrantPrincipalRoleRequest request, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.assignPrincipalRole(principalName, request, realmContext, securityContext); + } + + /** From PolarisPrincipalsApiService */ + @Override + public Response revokePrincipalRole( + String principalName, + String principalRoleName, + RealmContext realmContext, + SecurityContext securityContext) { + return delegate.revokePrincipalRole( + principalName, principalRoleName, realmContext, securityContext); + } + + /** From PolarisPrincipalsApiService */ + @Override + public Response listPrincipalRolesAssigned( + String principalName, RealmContext realmContext, SecurityContext securityContext) { + return delegate.listPrincipalRolesAssigned(principalName, realmContext, securityContext); + } +} diff --git a/runtime/service/src/main/java/org/apache/polaris/service/admin/PolarisServiceDefaultDelegator.java b/runtime/service/src/main/java/org/apache/polaris/service/admin/PolarisServiceDefaultDelegator.java deleted file mode 100644 index 480791e3ee..0000000000 --- a/runtime/service/src/main/java/org/apache/polaris/service/admin/PolarisServiceDefaultDelegator.java +++ /dev/null @@ -1,346 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.apache.polaris.service.admin; - -import jakarta.annotation.Priority; -import jakarta.enterprise.context.RequestScoped; -import jakarta.enterprise.inject.Alternative; -import jakarta.inject.Inject; -import jakarta.ws.rs.core.Response; -import jakarta.ws.rs.core.SecurityContext; -import org.apache.polaris.core.admin.model.AddGrantRequest; -import org.apache.polaris.core.admin.model.CreateCatalogRequest; -import org.apache.polaris.core.admin.model.CreateCatalogRoleRequest; -import org.apache.polaris.core.admin.model.CreatePrincipalRequest; -import org.apache.polaris.core.admin.model.CreatePrincipalRoleRequest; -import org.apache.polaris.core.admin.model.GrantCatalogRoleRequest; -import org.apache.polaris.core.admin.model.GrantPrincipalRoleRequest; -import org.apache.polaris.core.admin.model.RevokeGrantRequest; -import org.apache.polaris.core.admin.model.UpdateCatalogRequest; -import org.apache.polaris.core.admin.model.UpdateCatalogRoleRequest; -import org.apache.polaris.core.admin.model.UpdatePrincipalRequest; -import org.apache.polaris.core.admin.model.UpdatePrincipalRoleRequest; -import org.apache.polaris.core.context.RealmContext; -import org.apache.polaris.service.admin.api.PolarisCatalogsApiService; -import org.apache.polaris.service.admin.api.PolarisPrincipalRolesApiService; -import org.apache.polaris.service.admin.api.PolarisPrincipalsApiService; - -@RequestScoped -@Alternative -@Priority(1000) // Will allow downstream project-specific delegators to be added and used -public class PolarisServiceDefaultDelegator - implements PolarisCatalogsApiService, - PolarisPrincipalsApiService, - PolarisPrincipalRolesApiService { - private final PolarisServiceImpl delegate; - - @Inject - public PolarisServiceDefaultDelegator(@ApiBaseImplementation PolarisServiceImpl polarisService) { - this.delegate = polarisService; - } - - /** From PolarisCatalogsApiService */ - @Override - public Response createCatalog( - CreateCatalogRequest request, RealmContext realmContext, SecurityContext securityContext) { - return delegate.createCatalog(request, realmContext, securityContext); - } - - /** From PolarisCatalogsApiService */ - @Override - public Response deleteCatalog( - String catalogName, RealmContext realmContext, SecurityContext securityContext) { - return delegate.deleteCatalog(catalogName, realmContext, securityContext); - } - - /** From PolarisCatalogsApiService */ - @Override - public Response getCatalog( - String catalogName, RealmContext realmContext, SecurityContext securityContext) { - return delegate.getCatalog(catalogName, realmContext, securityContext); - } - - /** From PolarisCatalogsApiService */ - @Override - public Response updateCatalog( - String catalogName, - UpdateCatalogRequest updateRequest, - RealmContext realmContext, - SecurityContext securityContext) { - return delegate.updateCatalog(catalogName, updateRequest, realmContext, securityContext); - } - - /** From PolarisCatalogsApiService */ - @Override - public Response listCatalogs(RealmContext realmContext, SecurityContext securityContext) { - return delegate.listCatalogs(realmContext, securityContext); - } - - /** From PolarisPrincipalsApiService */ - @Override - public Response createPrincipal( - CreatePrincipalRequest request, RealmContext realmContext, SecurityContext securityContext) { - return delegate.createPrincipal(request, realmContext, securityContext); - } - - /** From PolarisPrincipalsApiService */ - @Override - public Response deletePrincipal( - String principalName, RealmContext realmContext, SecurityContext securityContext) { - return delegate.deletePrincipal(principalName, realmContext, securityContext); - } - - /** From PolarisPrincipalsApiService */ - @Override - public Response getPrincipal( - String principalName, RealmContext realmContext, SecurityContext securityContext) { - return delegate.getPrincipal(principalName, realmContext, securityContext); - } - - /** From PolarisPrincipalsApiService */ - @Override - public Response updatePrincipal( - String principalName, - UpdatePrincipalRequest updateRequest, - RealmContext realmContext, - SecurityContext securityContext) { - return delegate.updatePrincipal(principalName, updateRequest, realmContext, securityContext); - } - - /** From PolarisPrincipalsApiService */ - @Override - public Response rotateCredentials( - String principalName, RealmContext realmContext, SecurityContext securityContext) { - return delegate.rotateCredentials(principalName, realmContext, securityContext); - } - - /** From PolarisPrincipalsApiService */ - @Override - public Response listPrincipals(RealmContext realmContext, SecurityContext securityContext) { - return delegate.listPrincipals(realmContext, securityContext); - } - - /** From PolarisPrincipalRolesApiService */ - @Override - public Response createPrincipalRole( - CreatePrincipalRoleRequest request, - RealmContext realmContext, - SecurityContext securityContext) { - return delegate.createPrincipalRole(request, realmContext, securityContext); - } - - /** From PolarisPrincipalRolesApiService */ - @Override - public Response deletePrincipalRole( - String principalRoleName, RealmContext realmContext, SecurityContext securityContext) { - return delegate.deletePrincipalRole(principalRoleName, realmContext, securityContext); - } - - /** From PolarisPrincipalRolesApiService */ - @Override - public Response getPrincipalRole( - String principalRoleName, RealmContext realmContext, SecurityContext securityContext) { - return delegate.getPrincipalRole(principalRoleName, realmContext, securityContext); - } - - /** From PolarisPrincipalRolesApiService */ - @Override - public Response updatePrincipalRole( - String principalRoleName, - UpdatePrincipalRoleRequest updateRequest, - RealmContext realmContext, - SecurityContext securityContext) { - return delegate.updatePrincipalRole( - principalRoleName, updateRequest, realmContext, securityContext); - } - - /** From PolarisPrincipalRolesApiService */ - @Override - public Response listPrincipalRoles(RealmContext realmContext, SecurityContext securityContext) { - return delegate.listPrincipalRoles(realmContext, securityContext); - } - - /** From PolarisCatalogsApiService */ - @Override - public Response createCatalogRole( - String catalogName, - CreateCatalogRoleRequest request, - RealmContext realmContext, - SecurityContext securityContext) { - return delegate.createCatalogRole(catalogName, request, realmContext, securityContext); - } - - /** From PolarisCatalogsApiService */ - @Override - public Response deleteCatalogRole( - String catalogName, - String catalogRoleName, - RealmContext realmContext, - SecurityContext securityContext) { - return delegate.deleteCatalogRole(catalogName, catalogRoleName, realmContext, securityContext); - } - - /** From PolarisCatalogsApiService */ - @Override - public Response getCatalogRole( - String catalogName, - String catalogRoleName, - RealmContext realmContext, - SecurityContext securityContext) { - return delegate.getCatalogRole(catalogName, catalogRoleName, realmContext, securityContext); - } - - /** From PolarisCatalogsApiService */ - @Override - public Response updateCatalogRole( - String catalogName, - String catalogRoleName, - UpdateCatalogRoleRequest updateRequest, - RealmContext realmContext, - SecurityContext securityContext) { - return delegate.updateCatalogRole( - catalogName, catalogRoleName, updateRequest, realmContext, securityContext); - } - - /** From PolarisCatalogsApiService */ - @Override - public Response listCatalogRoles( - String catalogName, RealmContext realmContext, SecurityContext securityContext) { - return delegate.listCatalogRoles(catalogName, realmContext, securityContext); - } - - /** From PolarisPrincipalsApiService */ - @Override - public Response assignPrincipalRole( - String principalName, - GrantPrincipalRoleRequest request, - RealmContext realmContext, - SecurityContext securityContext) { - return delegate.assignPrincipalRole(principalName, request, realmContext, securityContext); - } - - /** From PolarisPrincipalsApiService */ - @Override - public Response revokePrincipalRole( - String principalName, - String principalRoleName, - RealmContext realmContext, - SecurityContext securityContext) { - return delegate.revokePrincipalRole( - principalName, principalRoleName, realmContext, securityContext); - } - - /** From PolarisPrincipalsApiService */ - @Override - public Response listPrincipalRolesAssigned( - String principalName, RealmContext realmContext, SecurityContext securityContext) { - return delegate.listPrincipalRolesAssigned(principalName, realmContext, securityContext); - } - - /** From PolarisPrincipalRolesApiService */ - @Override - public Response assignCatalogRoleToPrincipalRole( - String principalRoleName, - String catalogName, - GrantCatalogRoleRequest request, - RealmContext realmContext, - SecurityContext securityContext) { - return delegate.assignCatalogRoleToPrincipalRole( - principalRoleName, catalogName, request, realmContext, securityContext); - } - - /** From PolarisPrincipalRolesApiService */ - @Override - public Response revokeCatalogRoleFromPrincipalRole( - String principalRoleName, - String catalogName, - String catalogRoleName, - RealmContext realmContext, - SecurityContext securityContext) { - return delegate.revokeCatalogRoleFromPrincipalRole( - principalRoleName, catalogName, catalogRoleName, realmContext, securityContext); - } - - /** From PolarisPrincipalRolesApiService */ - @Override - public Response listAssigneePrincipalsForPrincipalRole( - String principalRoleName, RealmContext realmContext, SecurityContext securityContext) { - return delegate.listAssigneePrincipalsForPrincipalRole( - principalRoleName, realmContext, securityContext); - } - - /** From PolarisPrincipalRolesApiService */ - @Override - public Response listCatalogRolesForPrincipalRole( - String principalRoleName, - String catalogName, - RealmContext realmContext, - SecurityContext securityContext) { - return delegate.listCatalogRolesForPrincipalRole( - principalRoleName, catalogName, realmContext, securityContext); - } - - /** From PolarisCatalogsApiService */ - @Override - public Response addGrantToCatalogRole( - String catalogName, - String catalogRoleName, - AddGrantRequest grantRequest, - RealmContext realmContext, - SecurityContext securityContext) { - return delegate.addGrantToCatalogRole( - catalogName, catalogRoleName, grantRequest, realmContext, securityContext); - } - - /** From PolarisCatalogsApiService */ - @Override - public Response revokeGrantFromCatalogRole( - String catalogName, - String catalogRoleName, - Boolean cascade, - RevokeGrantRequest grantRequest, - RealmContext realmContext, - SecurityContext securityContext) { - return delegate.revokeGrantFromCatalogRole( - catalogName, catalogRoleName, cascade, grantRequest, realmContext, securityContext); - } - - /** From PolarisCatalogsApiService */ - @Override - public Response listAssigneePrincipalRolesForCatalogRole( - String catalogName, - String catalogRoleName, - RealmContext realmContext, - SecurityContext securityContext) { - return delegate.listAssigneePrincipalRolesForCatalogRole( - catalogName, catalogRoleName, realmContext, securityContext); - } - - /** From PolarisCatalogsApiService */ - @Override - public Response listGrantsForCatalogRole( - String catalogName, - String catalogRoleName, - RealmContext realmContext, - SecurityContext securityContext) { - return delegate.listGrantsForCatalogRole( - catalogName, catalogRoleName, realmContext, securityContext); - } -} diff --git a/runtime/service/src/main/java/org/apache/polaris/service/admin/PolarisServiceImpl.java b/runtime/service/src/main/java/org/apache/polaris/service/admin/PolarisServiceImpl.java index 7f7d6f68ce..c1c634e79d 100644 --- a/runtime/service/src/main/java/org/apache/polaris/service/admin/PolarisServiceImpl.java +++ b/runtime/service/src/main/java/org/apache/polaris/service/admin/PolarisServiceImpl.java @@ -89,7 +89,7 @@ /** Concrete implementation of the Polaris API services */ @RequestScoped -@ApiBaseImplementation +@MainService public class PolarisServiceImpl implements PolarisCatalogsApiService, PolarisPrincipalsApiService, diff --git a/runtime/service/src/main/java/org/apache/polaris/service/catalog/generic/GenericTableCatalogAdapterDefaultDelegator.java b/runtime/service/src/main/java/org/apache/polaris/service/catalog/generic/CatalogGenericTableServiceDefaultDelegator.java similarity index 89% rename from runtime/service/src/main/java/org/apache/polaris/service/catalog/generic/GenericTableCatalogAdapterDefaultDelegator.java rename to runtime/service/src/main/java/org/apache/polaris/service/catalog/generic/CatalogGenericTableServiceDefaultDelegator.java index 3160de0ffe..64c93723cc 100644 --- a/runtime/service/src/main/java/org/apache/polaris/service/catalog/generic/GenericTableCatalogAdapterDefaultDelegator.java +++ b/runtime/service/src/main/java/org/apache/polaris/service/catalog/generic/CatalogGenericTableServiceDefaultDelegator.java @@ -22,25 +22,29 @@ import jakarta.annotation.Priority; import jakarta.enterprise.context.RequestScoped; import jakarta.enterprise.inject.Alternative; +import jakarta.enterprise.inject.Default; import jakarta.inject.Inject; import jakarta.ws.rs.core.Response; import jakarta.ws.rs.core.SecurityContext; import org.apache.polaris.core.context.RealmContext; -import org.apache.polaris.service.admin.ApiBaseImplementation; +import org.apache.polaris.service.admin.EventsServiceDelegator; +import org.apache.polaris.service.admin.MainService; import org.apache.polaris.service.catalog.api.PolarisCatalogGenericTableApiService; import org.apache.polaris.service.catalog.common.CatalogAdapter; import org.apache.polaris.service.types.CreateGenericTableRequest; @RequestScoped +@Default +@EventsServiceDelegator @Alternative @Priority(1000) // Will allow downstream project-specific delegators to be added and used -public class GenericTableCatalogAdapterDefaultDelegator +public class CatalogGenericTableServiceDefaultDelegator implements PolarisCatalogGenericTableApiService, CatalogAdapter { private final GenericTableCatalogAdapter delegate; @Inject - public GenericTableCatalogAdapterDefaultDelegator( - @ApiBaseImplementation GenericTableCatalogAdapter delegate) { + public CatalogGenericTableServiceDefaultDelegator( + @MainService GenericTableCatalogAdapter delegate) { this.delegate = delegate; } diff --git a/runtime/service/src/main/java/org/apache/polaris/service/catalog/generic/GenericTableCatalogAdapter.java b/runtime/service/src/main/java/org/apache/polaris/service/catalog/generic/GenericTableCatalogAdapter.java index 8d537930ab..9c155cfa08 100644 --- a/runtime/service/src/main/java/org/apache/polaris/service/catalog/generic/GenericTableCatalogAdapter.java +++ b/runtime/service/src/main/java/org/apache/polaris/service/catalog/generic/GenericTableCatalogAdapter.java @@ -34,7 +34,7 @@ import org.apache.polaris.core.persistence.PolarisMetaStoreManager; import org.apache.polaris.core.persistence.resolver.ResolutionManifestFactory; import org.apache.polaris.core.secrets.UserSecretsManager; -import org.apache.polaris.service.admin.ApiBaseImplementation; +import org.apache.polaris.service.admin.MainService; import org.apache.polaris.service.catalog.CatalogPrefixParser; import org.apache.polaris.service.catalog.api.PolarisCatalogGenericTableApiService; import org.apache.polaris.service.catalog.common.CatalogAdapter; @@ -46,7 +46,7 @@ import org.slf4j.LoggerFactory; @RequestScoped -@ApiBaseImplementation +@MainService public class GenericTableCatalogAdapter implements PolarisCatalogGenericTableApiService, CatalogAdapter { diff --git a/runtime/service/src/main/java/org/apache/polaris/service/catalog/iceberg/IcebergCatalogAdapter.java b/runtime/service/src/main/java/org/apache/polaris/service/catalog/iceberg/IcebergCatalogAdapter.java index fec1f3e9fa..7b6881ec6e 100644 --- a/runtime/service/src/main/java/org/apache/polaris/service/catalog/iceberg/IcebergCatalogAdapter.java +++ b/runtime/service/src/main/java/org/apache/polaris/service/catalog/iceberg/IcebergCatalogAdapter.java @@ -76,7 +76,7 @@ import org.apache.polaris.core.persistence.resolver.ResolverStatus; import org.apache.polaris.core.rest.PolarisEndpoints; import org.apache.polaris.core.secrets.UserSecretsManager; -import org.apache.polaris.service.admin.ApiBaseImplementation; +import org.apache.polaris.service.admin.MainService; import org.apache.polaris.service.catalog.AccessDelegationMode; import org.apache.polaris.service.catalog.CatalogPrefixParser; import org.apache.polaris.service.catalog.api.IcebergRestCatalogApiService; @@ -97,7 +97,7 @@ * `IcebergCatalogHandler`. */ @RequestScoped -@ApiBaseImplementation +@MainService public class IcebergCatalogAdapter implements IcebergRestCatalogApiService, IcebergRestConfigurationApiService, CatalogAdapter { diff --git a/runtime/service/src/main/java/org/apache/polaris/service/catalog/iceberg/IcebergCatalogAdapterDefaultDelegator.java b/runtime/service/src/main/java/org/apache/polaris/service/catalog/iceberg/IcebergRestCatalogServiceDefaultDelegator.java similarity index 93% rename from runtime/service/src/main/java/org/apache/polaris/service/catalog/iceberg/IcebergCatalogAdapterDefaultDelegator.java rename to runtime/service/src/main/java/org/apache/polaris/service/catalog/iceberg/IcebergRestCatalogServiceDefaultDelegator.java index 5f0cc0cc8a..3f9e8ef1b6 100644 --- a/runtime/service/src/main/java/org/apache/polaris/service/catalog/iceberg/IcebergCatalogAdapterDefaultDelegator.java +++ b/runtime/service/src/main/java/org/apache/polaris/service/catalog/iceberg/IcebergRestCatalogServiceDefaultDelegator.java @@ -22,6 +22,7 @@ import jakarta.annotation.Priority; import jakarta.enterprise.context.RequestScoped; import jakarta.enterprise.inject.Alternative; +import jakarta.enterprise.inject.Default; import jakarta.inject.Inject; import jakarta.ws.rs.core.Response; import jakarta.ws.rs.core.SecurityContext; @@ -34,24 +35,26 @@ import org.apache.iceberg.rest.requests.ReportMetricsRequest; import org.apache.iceberg.rest.requests.UpdateNamespacePropertiesRequest; import org.apache.polaris.core.context.RealmContext; -import org.apache.polaris.service.admin.ApiBaseImplementation; +import org.apache.polaris.service.admin.EventsServiceDelegator; +import org.apache.polaris.service.admin.MainService; import org.apache.polaris.service.catalog.api.IcebergRestCatalogApiService; -import org.apache.polaris.service.catalog.api.IcebergRestConfigurationApiService; import org.apache.polaris.service.catalog.common.CatalogAdapter; import org.apache.polaris.service.types.CommitTableRequest; import org.apache.polaris.service.types.CommitViewRequest; import org.apache.polaris.service.types.NotificationRequest; @RequestScoped +@Default +@EventsServiceDelegator @Alternative @Priority(1000) // Will allow downstream project-specific delegators to be added and used -public class IcebergCatalogAdapterDefaultDelegator - implements IcebergRestCatalogApiService, IcebergRestConfigurationApiService, CatalogAdapter { +public class IcebergRestCatalogServiceDefaultDelegator + implements IcebergRestCatalogApiService, CatalogAdapter { private final IcebergCatalogAdapter delegate; @Inject - public IcebergCatalogAdapterDefaultDelegator( - @ApiBaseImplementation IcebergCatalogAdapter catalogAdapter) { + public IcebergRestCatalogServiceDefaultDelegator( + @MainService IcebergCatalogAdapter catalogAdapter) { this.delegate = catalogAdapter; } @@ -320,11 +323,4 @@ public Response sendNotification( return delegate.sendNotification( prefix, namespace, table, notificationRequest, realmContext, securityContext); } - - /** From IcebergRestConfigurationApiService. */ - @Override - public Response getConfig( - String warehouse, RealmContext realmContext, SecurityContext securityContext) { - return delegate.getConfig(warehouse, realmContext, securityContext); - } } diff --git a/runtime/service/src/main/java/org/apache/polaris/service/catalog/iceberg/IcebergRestConfigurationServiceDefaultDelegator.java b/runtime/service/src/main/java/org/apache/polaris/service/catalog/iceberg/IcebergRestConfigurationServiceDefaultDelegator.java new file mode 100644 index 0000000000..8045cc820b --- /dev/null +++ b/runtime/service/src/main/java/org/apache/polaris/service/catalog/iceberg/IcebergRestConfigurationServiceDefaultDelegator.java @@ -0,0 +1,55 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.polaris.service.catalog.iceberg; + +import jakarta.annotation.Priority; +import jakarta.enterprise.context.RequestScoped; +import jakarta.enterprise.inject.Alternative; +import jakarta.enterprise.inject.Default; +import jakarta.inject.Inject; +import jakarta.ws.rs.core.Response; +import jakarta.ws.rs.core.SecurityContext; +import org.apache.polaris.core.context.RealmContext; +import org.apache.polaris.service.admin.EventsServiceDelegator; +import org.apache.polaris.service.admin.MainService; +import org.apache.polaris.service.catalog.api.IcebergRestConfigurationApiService; +import org.apache.polaris.service.catalog.common.CatalogAdapter; + +@RequestScoped +@Default +@EventsServiceDelegator +@Alternative +@Priority(1000) // Will allow downstream project-specific delegators to be added and used +public class IcebergRestConfigurationServiceDefaultDelegator + implements IcebergRestConfigurationApiService, CatalogAdapter { + private final IcebergCatalogAdapter delegate; + + @Inject + public IcebergRestConfigurationServiceDefaultDelegator( + @MainService IcebergCatalogAdapter catalogAdapter) { + this.delegate = catalogAdapter; + } + + @Override + public Response getConfig( + String warehouse, RealmContext realmContext, SecurityContext securityContext) { + return delegate.getConfig(warehouse, realmContext, securityContext); + } +} diff --git a/runtime/service/src/main/java/org/apache/polaris/service/catalog/policy/PolicyCatalogAdapterDefaultDelegator.java b/runtime/service/src/main/java/org/apache/polaris/service/catalog/policy/CatalogPolicyServiceDefaultDelegator.java similarity index 93% rename from runtime/service/src/main/java/org/apache/polaris/service/catalog/policy/PolicyCatalogAdapterDefaultDelegator.java rename to runtime/service/src/main/java/org/apache/polaris/service/catalog/policy/CatalogPolicyServiceDefaultDelegator.java index eff5f34146..91208dd821 100644 --- a/runtime/service/src/main/java/org/apache/polaris/service/catalog/policy/PolicyCatalogAdapterDefaultDelegator.java +++ b/runtime/service/src/main/java/org/apache/polaris/service/catalog/policy/CatalogPolicyServiceDefaultDelegator.java @@ -22,11 +22,13 @@ import jakarta.annotation.Priority; import jakarta.enterprise.context.RequestScoped; import jakarta.enterprise.inject.Alternative; +import jakarta.enterprise.inject.Default; import jakarta.inject.Inject; import jakarta.ws.rs.core.Response; import jakarta.ws.rs.core.SecurityContext; import org.apache.polaris.core.context.RealmContext; -import org.apache.polaris.service.admin.ApiBaseImplementation; +import org.apache.polaris.service.admin.EventsServiceDelegator; +import org.apache.polaris.service.admin.MainService; import org.apache.polaris.service.catalog.api.PolarisCatalogPolicyApiService; import org.apache.polaris.service.catalog.common.CatalogAdapter; import org.apache.polaris.service.types.AttachPolicyRequest; @@ -35,15 +37,16 @@ import org.apache.polaris.service.types.UpdatePolicyRequest; @RequestScoped +@Default +@EventsServiceDelegator @Alternative @Priority(1000) // Will allow downstream project-specific delegators to be added and used -public class PolicyCatalogAdapterDefaultDelegator +public class CatalogPolicyServiceDefaultDelegator implements PolarisCatalogPolicyApiService, CatalogAdapter { private final PolicyCatalogAdapter delegate; @Inject - public PolicyCatalogAdapterDefaultDelegator( - @ApiBaseImplementation PolicyCatalogAdapter delegate) { + public CatalogPolicyServiceDefaultDelegator(@MainService PolicyCatalogAdapter delegate) { this.delegate = delegate; } diff --git a/runtime/service/src/main/java/org/apache/polaris/service/catalog/policy/PolicyCatalogAdapter.java b/runtime/service/src/main/java/org/apache/polaris/service/catalog/policy/PolicyCatalogAdapter.java index f1beda403a..ff0c7ed45d 100644 --- a/runtime/service/src/main/java/org/apache/polaris/service/catalog/policy/PolicyCatalogAdapter.java +++ b/runtime/service/src/main/java/org/apache/polaris/service/catalog/policy/PolicyCatalogAdapter.java @@ -36,7 +36,7 @@ import org.apache.polaris.core.persistence.resolver.ResolutionManifestFactory; import org.apache.polaris.core.policy.PolicyType; import org.apache.polaris.core.secrets.UserSecretsManager; -import org.apache.polaris.service.admin.ApiBaseImplementation; +import org.apache.polaris.service.admin.MainService; import org.apache.polaris.service.catalog.CatalogPrefixParser; import org.apache.polaris.service.catalog.api.PolarisCatalogPolicyApiService; import org.apache.polaris.service.catalog.common.CatalogAdapter; @@ -52,7 +52,7 @@ import org.slf4j.LoggerFactory; @RequestScoped -@ApiBaseImplementation +@MainService public class PolicyCatalogAdapter implements PolarisCatalogPolicyApiService, CatalogAdapter { private static final Logger LOGGER = LoggerFactory.getLogger(PolicyCatalogAdapter.class); From 0bf0c791865dcae79f19fcdcf01e66da3dfc7a55 Mon Sep 17 00:00:00 2001 From: adnanhemani Date: Tue, 26 Aug 2025 18:03:31 -0700 Subject: [PATCH 4/7] Revision based on comments from @adutra --- .../src/main/resources/application.properties | 25 +++++++++++-- .../service/admin/EventsServiceDelegator.java | 2 +- .../polaris/service/admin/MainService.java | 35 ------------------- ...olarisCatalogsServiceDefaultDelegator.java | 17 ++++----- ...PrincipalRolesServiceDefaultDelegator.java | 16 +++------ ...arisPrincipalsServiceDefaultDelegator.java | 16 +++------ .../service/admin/PolarisServiceImpl.java | 1 - ...ogGenericTableServiceDefaultDelegator.java | 17 +++------ .../generic/GenericTableCatalogAdapter.java | 2 -- .../iceberg/IcebergCatalogAdapter.java | 2 -- ...ergRestCatalogServiceDefaultDelegator.java | 21 +++-------- ...tConfigurationServiceDefaultDelegator.java | 20 +++-------- .../CatalogPolicyServiceDefaultDelegator.java | 16 +++------ .../catalog/policy/PolicyCatalogAdapter.java | 2 -- 14 files changed, 56 insertions(+), 136 deletions(-) delete mode 100644 runtime/service/src/main/java/org/apache/polaris/service/admin/MainService.java diff --git a/runtime/defaults/src/main/resources/application.properties b/runtime/defaults/src/main/resources/application.properties index 794ea13375..4d21acddce 100644 --- a/runtime/defaults/src/main/resources/application.properties +++ b/runtime/defaults/src/main/resources/application.properties @@ -111,18 +111,37 @@ polaris.realm-context.realms=POLARIS polaris.realm-context.header-name=Polaris-Realm polaris.realm-context.require-header=false +#polaris.features."ENFORCE_PRINCIPAL_CREDENTIAL_ROTATION_REQUIRED_CHECKING"=false +#polaris.features."SUPPORTED_CATALOG_STORAGE_TYPES"=["S3","GCS","AZURE"] +## polaris.features."ENABLE_CATALOG_FEDERATION"=true +#polaris.features."SUPPORTED_CATALOG_CONNECTION_TYPES"=["ICEBERG_REST"] +#polaris.features."SUPPORTED_EXTERNAL_CATALOG_AUTHENTICATION_TYPES"=["OAUTH", "BEARER"] +# +## realm overrides +## polaris.features.realm-overrides."my-realm"."SKIP_CREDENTIAL_SUBSCOPING_INDIRECTION"=true +# +## polaris.persistence.type=eclipse-link +## polaris.persistence.type=in-memory-atomic +#polaris.persistence.type=in-memory + polaris.features."ENFORCE_PRINCIPAL_CREDENTIAL_ROTATION_REQUIRED_CHECKING"=false -polaris.features."SUPPORTED_CATALOG_STORAGE_TYPES"=["S3","GCS","AZURE"] +polaris.features."SUPPORTED_CATALOG_STORAGE_TYPES"=["S3","GCS","AZURE","FILE"] +polaris.features."ALLOW_INSECURE_STORAGE_TYPES"=true +polaris.readiness.ignore-severe-issues=true # polaris.features."ENABLE_CATALOG_FEDERATION"=true polaris.features."SUPPORTED_CATALOG_CONNECTION_TYPES"=["ICEBERG_REST"] -polaris.features."SUPPORTED_EXTERNAL_CATALOG_AUTHENTICATION_TYPES"=["OAUTH", "BEARER"] # realm overrides # polaris.features.realm-overrides."my-realm"."SKIP_CREDENTIAL_SUBSCOPING_INDIRECTION"=true # polaris.persistence.type=eclipse-link # polaris.persistence.type=in-memory-atomic -polaris.persistence.type=in-memory +# polaris.persistence.type=in-memory +polaris.persistence.type=relational-jdbc +quarkus.datasource.db-kind=pgsql +quarkus.datasource.jdbc.url=jdbc:postgresql://localhost:5432/POLARIS +quarkus.datasource.username=postgres +quarkus.datasource.password=postgres polaris.secrets-manager.type=in-memory diff --git a/runtime/service/src/main/java/org/apache/polaris/service/admin/EventsServiceDelegator.java b/runtime/service/src/main/java/org/apache/polaris/service/admin/EventsServiceDelegator.java index 8c5fe9e679..40a5588008 100644 --- a/runtime/service/src/main/java/org/apache/polaris/service/admin/EventsServiceDelegator.java +++ b/runtime/service/src/main/java/org/apache/polaris/service/admin/EventsServiceDelegator.java @@ -29,7 +29,7 @@ import java.lang.annotation.Retention; import java.lang.annotation.Target; -// Used to annotate delegator classes, which are emitting events +/** Used to annotate delegator classes, which are emitting events. */ @Qualifier @Retention(RUNTIME) @Target({TYPE, METHOD, FIELD, PARAMETER}) diff --git a/runtime/service/src/main/java/org/apache/polaris/service/admin/MainService.java b/runtime/service/src/main/java/org/apache/polaris/service/admin/MainService.java deleted file mode 100644 index b7748fb1a2..0000000000 --- a/runtime/service/src/main/java/org/apache/polaris/service/admin/MainService.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.apache.polaris.service.admin; - -import static java.lang.annotation.ElementType.FIELD; -import static java.lang.annotation.ElementType.METHOD; -import static java.lang.annotation.ElementType.PARAMETER; -import static java.lang.annotation.ElementType.TYPE; -import static java.lang.annotation.RetentionPolicy.RUNTIME; - -import jakarta.inject.Qualifier; -import java.lang.annotation.Retention; -import java.lang.annotation.Target; - -@Qualifier -@Retention(RUNTIME) -@Target({TYPE, METHOD, FIELD, PARAMETER}) -public @interface MainService {} diff --git a/runtime/service/src/main/java/org/apache/polaris/service/admin/PolarisCatalogsServiceDefaultDelegator.java b/runtime/service/src/main/java/org/apache/polaris/service/admin/PolarisCatalogsServiceDefaultDelegator.java index bbcf42c99f..0ef1e24c15 100644 --- a/runtime/service/src/main/java/org/apache/polaris/service/admin/PolarisCatalogsServiceDefaultDelegator.java +++ b/runtime/service/src/main/java/org/apache/polaris/service/admin/PolarisCatalogsServiceDefaultDelegator.java @@ -19,10 +19,10 @@ package org.apache.polaris.service.admin; -import jakarta.annotation.Priority; -import jakarta.enterprise.context.RequestScoped; -import jakarta.enterprise.inject.Alternative; +import jakarta.decorator.Decorator; +import jakarta.decorator.Delegate; import jakarta.enterprise.inject.Default; +import jakarta.inject.Inject; import jakarta.ws.rs.core.Response; import jakarta.ws.rs.core.SecurityContext; import org.apache.polaris.core.admin.model.AddGrantRequest; @@ -34,17 +34,12 @@ import org.apache.polaris.core.context.RealmContext; import org.apache.polaris.service.admin.api.PolarisCatalogsApiService; -@RequestScoped -@Default @EventsServiceDelegator -@Alternative -@Priority(1000) // Will allow downstream project-specific delegators to be added and used +@Default +@Decorator public class PolarisCatalogsServiceDefaultDelegator implements PolarisCatalogsApiService { - private final PolarisCatalogsApiService delegate; - public PolarisCatalogsServiceDefaultDelegator(@MainService PolarisCatalogsApiService delegate) { - this.delegate = delegate; - } + @Inject @Delegate PolarisCatalogsApiService delegate; /** From PolarisCatalogsApiService */ @Override diff --git a/runtime/service/src/main/java/org/apache/polaris/service/admin/PolarisPrincipalRolesServiceDefaultDelegator.java b/runtime/service/src/main/java/org/apache/polaris/service/admin/PolarisPrincipalRolesServiceDefaultDelegator.java index 597520901f..8ede671669 100644 --- a/runtime/service/src/main/java/org/apache/polaris/service/admin/PolarisPrincipalRolesServiceDefaultDelegator.java +++ b/runtime/service/src/main/java/org/apache/polaris/service/admin/PolarisPrincipalRolesServiceDefaultDelegator.java @@ -19,9 +19,8 @@ package org.apache.polaris.service.admin; -import jakarta.annotation.Priority; -import jakarta.enterprise.context.RequestScoped; -import jakarta.enterprise.inject.Alternative; +import jakarta.decorator.Decorator; +import jakarta.decorator.Delegate; import jakarta.enterprise.inject.Default; import jakarta.inject.Inject; import jakarta.ws.rs.core.Response; @@ -32,20 +31,13 @@ import org.apache.polaris.core.context.RealmContext; import org.apache.polaris.service.admin.api.PolarisPrincipalRolesApiService; -@RequestScoped @Default @EventsServiceDelegator -@Alternative -@Priority(1000) // Will allow downstream project-specific delegators to be added and used +@Decorator public class PolarisPrincipalRolesServiceDefaultDelegator implements PolarisPrincipalRolesApiService { - private final PolarisPrincipalRolesApiService delegate; - @Inject - public PolarisPrincipalRolesServiceDefaultDelegator( - @MainService PolarisPrincipalRolesApiService polarisService) { - this.delegate = polarisService; - } + @Inject @Delegate PolarisPrincipalRolesApiService delegate; /** From PolarisPrincipalRolesApiService */ @Override diff --git a/runtime/service/src/main/java/org/apache/polaris/service/admin/PolarisPrincipalsServiceDefaultDelegator.java b/runtime/service/src/main/java/org/apache/polaris/service/admin/PolarisPrincipalsServiceDefaultDelegator.java index 9601d9fab6..ae78d0ea50 100644 --- a/runtime/service/src/main/java/org/apache/polaris/service/admin/PolarisPrincipalsServiceDefaultDelegator.java +++ b/runtime/service/src/main/java/org/apache/polaris/service/admin/PolarisPrincipalsServiceDefaultDelegator.java @@ -19,10 +19,10 @@ package org.apache.polaris.service.admin; -import jakarta.annotation.Priority; -import jakarta.enterprise.context.RequestScoped; -import jakarta.enterprise.inject.Alternative; +import jakarta.decorator.Decorator; +import jakarta.decorator.Delegate; import jakarta.enterprise.inject.Default; +import jakarta.inject.Inject; import jakarta.ws.rs.core.Response; import jakarta.ws.rs.core.SecurityContext; import org.apache.polaris.core.admin.model.CreatePrincipalRequest; @@ -31,18 +31,12 @@ import org.apache.polaris.core.context.RealmContext; import org.apache.polaris.service.admin.api.PolarisPrincipalsApiService; -@RequestScoped @Default @EventsServiceDelegator -@Alternative -@Priority(1000) // Will allow downstream project-specific delegators to be added and used +@Decorator public class PolarisPrincipalsServiceDefaultDelegator implements PolarisPrincipalsApiService { - private final PolarisPrincipalsApiService delegate; - public PolarisPrincipalsServiceDefaultDelegator( - @MainService PolarisPrincipalsApiService delegate) { - this.delegate = delegate; - } + @Inject @Delegate PolarisPrincipalsApiService delegate; /** From PolarisPrincipalsApiService */ @Override diff --git a/runtime/service/src/main/java/org/apache/polaris/service/admin/PolarisServiceImpl.java b/runtime/service/src/main/java/org/apache/polaris/service/admin/PolarisServiceImpl.java index c1c634e79d..806289da08 100644 --- a/runtime/service/src/main/java/org/apache/polaris/service/admin/PolarisServiceImpl.java +++ b/runtime/service/src/main/java/org/apache/polaris/service/admin/PolarisServiceImpl.java @@ -89,7 +89,6 @@ /** Concrete implementation of the Polaris API services */ @RequestScoped -@MainService public class PolarisServiceImpl implements PolarisCatalogsApiService, PolarisPrincipalsApiService, diff --git a/runtime/service/src/main/java/org/apache/polaris/service/catalog/generic/CatalogGenericTableServiceDefaultDelegator.java b/runtime/service/src/main/java/org/apache/polaris/service/catalog/generic/CatalogGenericTableServiceDefaultDelegator.java index 64c93723cc..9417c5ce1b 100644 --- a/runtime/service/src/main/java/org/apache/polaris/service/catalog/generic/CatalogGenericTableServiceDefaultDelegator.java +++ b/runtime/service/src/main/java/org/apache/polaris/service/catalog/generic/CatalogGenericTableServiceDefaultDelegator.java @@ -19,34 +19,25 @@ package org.apache.polaris.service.catalog.generic; -import jakarta.annotation.Priority; -import jakarta.enterprise.context.RequestScoped; -import jakarta.enterprise.inject.Alternative; +import jakarta.decorator.Decorator; +import jakarta.decorator.Delegate; import jakarta.enterprise.inject.Default; import jakarta.inject.Inject; import jakarta.ws.rs.core.Response; import jakarta.ws.rs.core.SecurityContext; import org.apache.polaris.core.context.RealmContext; import org.apache.polaris.service.admin.EventsServiceDelegator; -import org.apache.polaris.service.admin.MainService; import org.apache.polaris.service.catalog.api.PolarisCatalogGenericTableApiService; import org.apache.polaris.service.catalog.common.CatalogAdapter; import org.apache.polaris.service.types.CreateGenericTableRequest; -@RequestScoped @Default @EventsServiceDelegator -@Alternative -@Priority(1000) // Will allow downstream project-specific delegators to be added and used +@Decorator public class CatalogGenericTableServiceDefaultDelegator implements PolarisCatalogGenericTableApiService, CatalogAdapter { - private final GenericTableCatalogAdapter delegate; - @Inject - public CatalogGenericTableServiceDefaultDelegator( - @MainService GenericTableCatalogAdapter delegate) { - this.delegate = delegate; - } + @Inject @Delegate GenericTableCatalogAdapter delegate; @Override public Response createGenericTable( diff --git a/runtime/service/src/main/java/org/apache/polaris/service/catalog/generic/GenericTableCatalogAdapter.java b/runtime/service/src/main/java/org/apache/polaris/service/catalog/generic/GenericTableCatalogAdapter.java index 9c155cfa08..befe9907fb 100644 --- a/runtime/service/src/main/java/org/apache/polaris/service/catalog/generic/GenericTableCatalogAdapter.java +++ b/runtime/service/src/main/java/org/apache/polaris/service/catalog/generic/GenericTableCatalogAdapter.java @@ -34,7 +34,6 @@ import org.apache.polaris.core.persistence.PolarisMetaStoreManager; import org.apache.polaris.core.persistence.resolver.ResolutionManifestFactory; import org.apache.polaris.core.secrets.UserSecretsManager; -import org.apache.polaris.service.admin.MainService; import org.apache.polaris.service.catalog.CatalogPrefixParser; import org.apache.polaris.service.catalog.api.PolarisCatalogGenericTableApiService; import org.apache.polaris.service.catalog.common.CatalogAdapter; @@ -46,7 +45,6 @@ import org.slf4j.LoggerFactory; @RequestScoped -@MainService public class GenericTableCatalogAdapter implements PolarisCatalogGenericTableApiService, CatalogAdapter { diff --git a/runtime/service/src/main/java/org/apache/polaris/service/catalog/iceberg/IcebergCatalogAdapter.java b/runtime/service/src/main/java/org/apache/polaris/service/catalog/iceberg/IcebergCatalogAdapter.java index 7b6881ec6e..76401582a9 100644 --- a/runtime/service/src/main/java/org/apache/polaris/service/catalog/iceberg/IcebergCatalogAdapter.java +++ b/runtime/service/src/main/java/org/apache/polaris/service/catalog/iceberg/IcebergCatalogAdapter.java @@ -76,7 +76,6 @@ import org.apache.polaris.core.persistence.resolver.ResolverStatus; import org.apache.polaris.core.rest.PolarisEndpoints; import org.apache.polaris.core.secrets.UserSecretsManager; -import org.apache.polaris.service.admin.MainService; import org.apache.polaris.service.catalog.AccessDelegationMode; import org.apache.polaris.service.catalog.CatalogPrefixParser; import org.apache.polaris.service.catalog.api.IcebergRestCatalogApiService; @@ -97,7 +96,6 @@ * `IcebergCatalogHandler`. */ @RequestScoped -@MainService public class IcebergCatalogAdapter implements IcebergRestCatalogApiService, IcebergRestConfigurationApiService, CatalogAdapter { diff --git a/runtime/service/src/main/java/org/apache/polaris/service/catalog/iceberg/IcebergRestCatalogServiceDefaultDelegator.java b/runtime/service/src/main/java/org/apache/polaris/service/catalog/iceberg/IcebergRestCatalogServiceDefaultDelegator.java index 3f9e8ef1b6..c553ff09ee 100644 --- a/runtime/service/src/main/java/org/apache/polaris/service/catalog/iceberg/IcebergRestCatalogServiceDefaultDelegator.java +++ b/runtime/service/src/main/java/org/apache/polaris/service/catalog/iceberg/IcebergRestCatalogServiceDefaultDelegator.java @@ -19,9 +19,8 @@ package org.apache.polaris.service.catalog.iceberg; -import jakarta.annotation.Priority; -import jakarta.enterprise.context.RequestScoped; -import jakarta.enterprise.inject.Alternative; +import jakarta.decorator.Decorator; +import jakarta.decorator.Delegate; import jakarta.enterprise.inject.Default; import jakarta.inject.Inject; import jakarta.ws.rs.core.Response; @@ -36,27 +35,17 @@ import org.apache.iceberg.rest.requests.UpdateNamespacePropertiesRequest; import org.apache.polaris.core.context.RealmContext; import org.apache.polaris.service.admin.EventsServiceDelegator; -import org.apache.polaris.service.admin.MainService; import org.apache.polaris.service.catalog.api.IcebergRestCatalogApiService; -import org.apache.polaris.service.catalog.common.CatalogAdapter; import org.apache.polaris.service.types.CommitTableRequest; import org.apache.polaris.service.types.CommitViewRequest; import org.apache.polaris.service.types.NotificationRequest; -@RequestScoped @Default @EventsServiceDelegator -@Alternative -@Priority(1000) // Will allow downstream project-specific delegators to be added and used -public class IcebergRestCatalogServiceDefaultDelegator - implements IcebergRestCatalogApiService, CatalogAdapter { - private final IcebergCatalogAdapter delegate; +@Decorator +public class IcebergRestCatalogServiceDefaultDelegator implements IcebergRestCatalogApiService { - @Inject - public IcebergRestCatalogServiceDefaultDelegator( - @MainService IcebergCatalogAdapter catalogAdapter) { - this.delegate = catalogAdapter; - } + @Inject @Delegate IcebergCatalogAdapter delegate; @Override public Response createNamespace( diff --git a/runtime/service/src/main/java/org/apache/polaris/service/catalog/iceberg/IcebergRestConfigurationServiceDefaultDelegator.java b/runtime/service/src/main/java/org/apache/polaris/service/catalog/iceberg/IcebergRestConfigurationServiceDefaultDelegator.java index 8045cc820b..7a96f3c4ea 100644 --- a/runtime/service/src/main/java/org/apache/polaris/service/catalog/iceberg/IcebergRestConfigurationServiceDefaultDelegator.java +++ b/runtime/service/src/main/java/org/apache/polaris/service/catalog/iceberg/IcebergRestConfigurationServiceDefaultDelegator.java @@ -19,33 +19,23 @@ package org.apache.polaris.service.catalog.iceberg; -import jakarta.annotation.Priority; -import jakarta.enterprise.context.RequestScoped; -import jakarta.enterprise.inject.Alternative; +import jakarta.decorator.Decorator; +import jakarta.decorator.Delegate; import jakarta.enterprise.inject.Default; import jakarta.inject.Inject; import jakarta.ws.rs.core.Response; import jakarta.ws.rs.core.SecurityContext; import org.apache.polaris.core.context.RealmContext; import org.apache.polaris.service.admin.EventsServiceDelegator; -import org.apache.polaris.service.admin.MainService; import org.apache.polaris.service.catalog.api.IcebergRestConfigurationApiService; -import org.apache.polaris.service.catalog.common.CatalogAdapter; -@RequestScoped @Default @EventsServiceDelegator -@Alternative -@Priority(1000) // Will allow downstream project-specific delegators to be added and used +@Decorator public class IcebergRestConfigurationServiceDefaultDelegator - implements IcebergRestConfigurationApiService, CatalogAdapter { - private final IcebergCatalogAdapter delegate; + implements IcebergRestConfigurationApiService { - @Inject - public IcebergRestConfigurationServiceDefaultDelegator( - @MainService IcebergCatalogAdapter catalogAdapter) { - this.delegate = catalogAdapter; - } + @Inject @Delegate IcebergCatalogAdapter delegate; @Override public Response getConfig( diff --git a/runtime/service/src/main/java/org/apache/polaris/service/catalog/policy/CatalogPolicyServiceDefaultDelegator.java b/runtime/service/src/main/java/org/apache/polaris/service/catalog/policy/CatalogPolicyServiceDefaultDelegator.java index 91208dd821..c6ec84d4f4 100644 --- a/runtime/service/src/main/java/org/apache/polaris/service/catalog/policy/CatalogPolicyServiceDefaultDelegator.java +++ b/runtime/service/src/main/java/org/apache/polaris/service/catalog/policy/CatalogPolicyServiceDefaultDelegator.java @@ -19,16 +19,14 @@ package org.apache.polaris.service.catalog.policy; -import jakarta.annotation.Priority; -import jakarta.enterprise.context.RequestScoped; -import jakarta.enterprise.inject.Alternative; +import jakarta.decorator.Decorator; +import jakarta.decorator.Delegate; import jakarta.enterprise.inject.Default; import jakarta.inject.Inject; import jakarta.ws.rs.core.Response; import jakarta.ws.rs.core.SecurityContext; import org.apache.polaris.core.context.RealmContext; import org.apache.polaris.service.admin.EventsServiceDelegator; -import org.apache.polaris.service.admin.MainService; import org.apache.polaris.service.catalog.api.PolarisCatalogPolicyApiService; import org.apache.polaris.service.catalog.common.CatalogAdapter; import org.apache.polaris.service.types.AttachPolicyRequest; @@ -36,19 +34,13 @@ import org.apache.polaris.service.types.DetachPolicyRequest; import org.apache.polaris.service.types.UpdatePolicyRequest; -@RequestScoped @Default @EventsServiceDelegator -@Alternative -@Priority(1000) // Will allow downstream project-specific delegators to be added and used +@Decorator public class CatalogPolicyServiceDefaultDelegator implements PolarisCatalogPolicyApiService, CatalogAdapter { - private final PolicyCatalogAdapter delegate; - @Inject - public CatalogPolicyServiceDefaultDelegator(@MainService PolicyCatalogAdapter delegate) { - this.delegate = delegate; - } + @Inject @Delegate PolicyCatalogAdapter delegate; @Override public Response createPolicy( diff --git a/runtime/service/src/main/java/org/apache/polaris/service/catalog/policy/PolicyCatalogAdapter.java b/runtime/service/src/main/java/org/apache/polaris/service/catalog/policy/PolicyCatalogAdapter.java index ff0c7ed45d..b2fa94f493 100644 --- a/runtime/service/src/main/java/org/apache/polaris/service/catalog/policy/PolicyCatalogAdapter.java +++ b/runtime/service/src/main/java/org/apache/polaris/service/catalog/policy/PolicyCatalogAdapter.java @@ -36,7 +36,6 @@ import org.apache.polaris.core.persistence.resolver.ResolutionManifestFactory; import org.apache.polaris.core.policy.PolicyType; import org.apache.polaris.core.secrets.UserSecretsManager; -import org.apache.polaris.service.admin.MainService; import org.apache.polaris.service.catalog.CatalogPrefixParser; import org.apache.polaris.service.catalog.api.PolarisCatalogPolicyApiService; import org.apache.polaris.service.catalog.common.CatalogAdapter; @@ -52,7 +51,6 @@ import org.slf4j.LoggerFactory; @RequestScoped -@MainService public class PolicyCatalogAdapter implements PolarisCatalogPolicyApiService, CatalogAdapter { private static final Logger LOGGER = LoggerFactory.getLogger(PolicyCatalogAdapter.class); From b64aa69c92ea4a4d5069bf4efa72f6cb92786f48 Mon Sep 17 00:00:00 2001 From: adnanhemani Date: Tue, 26 Aug 2025 18:06:04 -0700 Subject: [PATCH 5/7] reverting accidental change --- .../src/main/resources/application.properties | 25 +++---------------- 1 file changed, 3 insertions(+), 22 deletions(-) diff --git a/runtime/defaults/src/main/resources/application.properties b/runtime/defaults/src/main/resources/application.properties index 4d21acddce..794ea13375 100644 --- a/runtime/defaults/src/main/resources/application.properties +++ b/runtime/defaults/src/main/resources/application.properties @@ -111,37 +111,18 @@ polaris.realm-context.realms=POLARIS polaris.realm-context.header-name=Polaris-Realm polaris.realm-context.require-header=false -#polaris.features."ENFORCE_PRINCIPAL_CREDENTIAL_ROTATION_REQUIRED_CHECKING"=false -#polaris.features."SUPPORTED_CATALOG_STORAGE_TYPES"=["S3","GCS","AZURE"] -## polaris.features."ENABLE_CATALOG_FEDERATION"=true -#polaris.features."SUPPORTED_CATALOG_CONNECTION_TYPES"=["ICEBERG_REST"] -#polaris.features."SUPPORTED_EXTERNAL_CATALOG_AUTHENTICATION_TYPES"=["OAUTH", "BEARER"] -# -## realm overrides -## polaris.features.realm-overrides."my-realm"."SKIP_CREDENTIAL_SUBSCOPING_INDIRECTION"=true -# -## polaris.persistence.type=eclipse-link -## polaris.persistence.type=in-memory-atomic -#polaris.persistence.type=in-memory - polaris.features."ENFORCE_PRINCIPAL_CREDENTIAL_ROTATION_REQUIRED_CHECKING"=false -polaris.features."SUPPORTED_CATALOG_STORAGE_TYPES"=["S3","GCS","AZURE","FILE"] -polaris.features."ALLOW_INSECURE_STORAGE_TYPES"=true -polaris.readiness.ignore-severe-issues=true +polaris.features."SUPPORTED_CATALOG_STORAGE_TYPES"=["S3","GCS","AZURE"] # polaris.features."ENABLE_CATALOG_FEDERATION"=true polaris.features."SUPPORTED_CATALOG_CONNECTION_TYPES"=["ICEBERG_REST"] +polaris.features."SUPPORTED_EXTERNAL_CATALOG_AUTHENTICATION_TYPES"=["OAUTH", "BEARER"] # realm overrides # polaris.features.realm-overrides."my-realm"."SKIP_CREDENTIAL_SUBSCOPING_INDIRECTION"=true # polaris.persistence.type=eclipse-link # polaris.persistence.type=in-memory-atomic -# polaris.persistence.type=in-memory -polaris.persistence.type=relational-jdbc -quarkus.datasource.db-kind=pgsql -quarkus.datasource.jdbc.url=jdbc:postgresql://localhost:5432/POLARIS -quarkus.datasource.username=postgres -quarkus.datasource.password=postgres +polaris.persistence.type=in-memory polaris.secrets-manager.type=in-memory From 05a97977840749c6acade80ffda9948bd4d17b6c Mon Sep 17 00:00:00 2001 From: adnanhemani Date: Wed, 27 Aug 2025 16:27:57 -0700 Subject: [PATCH 6/7] Changes based on reviews from @adutra and @dimas-b --- .../service/admin/EventsServiceDelegator.java | 36 ------------------- ...PolarisCatalogsEventServiceDelegator.java} | 23 +++--------- ...sPrincipalRolesEventServiceDelegator.java} | 19 +++------- ...larisPrincipalsEventServiceDelegator.java} | 18 +++------- ...logGenericTableEventServiceDelegator.java} | 10 +++--- ...bergRestCatalogEventServiceDelegator.java} | 10 +++--- ...stConfigurationEventServiceDelegator.java} | 10 +++--- ...> CatalogPolicyEventServiceDelegator.java} | 10 +++--- 8 files changed, 35 insertions(+), 101 deletions(-) delete mode 100644 runtime/service/src/main/java/org/apache/polaris/service/admin/EventsServiceDelegator.java rename runtime/service/src/main/java/org/apache/polaris/service/admin/{PolarisCatalogsServiceDefaultDelegator.java => PolarisCatalogsEventServiceDelegator.java} (88%) rename runtime/service/src/main/java/org/apache/polaris/service/admin/{PolarisPrincipalRolesServiceDefaultDelegator.java => PolarisPrincipalRolesEventServiceDelegator.java} (87%) rename runtime/service/src/main/java/org/apache/polaris/service/admin/{PolarisPrincipalsServiceDefaultDelegator.java => PolarisPrincipalsEventServiceDelegator.java} (86%) rename runtime/service/src/main/java/org/apache/polaris/service/catalog/generic/{CatalogGenericTableServiceDefaultDelegator.java => CatalogGenericTableEventServiceDelegator.java} (93%) rename runtime/service/src/main/java/org/apache/polaris/service/catalog/iceberg/{IcebergRestCatalogServiceDefaultDelegator.java => IcebergRestCatalogEventServiceDelegator.java} (97%) rename runtime/service/src/main/java/org/apache/polaris/service/catalog/iceberg/{IcebergRestConfigurationServiceDefaultDelegator.java => IcebergRestConfigurationEventServiceDelegator.java} (88%) rename runtime/service/src/main/java/org/apache/polaris/service/catalog/policy/{CatalogPolicyServiceDefaultDelegator.java => CatalogPolicyEventServiceDelegator.java} (95%) diff --git a/runtime/service/src/main/java/org/apache/polaris/service/admin/EventsServiceDelegator.java b/runtime/service/src/main/java/org/apache/polaris/service/admin/EventsServiceDelegator.java deleted file mode 100644 index 40a5588008..0000000000 --- a/runtime/service/src/main/java/org/apache/polaris/service/admin/EventsServiceDelegator.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.apache.polaris.service.admin; - -import static java.lang.annotation.ElementType.FIELD; -import static java.lang.annotation.ElementType.METHOD; -import static java.lang.annotation.ElementType.PARAMETER; -import static java.lang.annotation.ElementType.TYPE; -import static java.lang.annotation.RetentionPolicy.RUNTIME; - -import jakarta.inject.Qualifier; -import java.lang.annotation.Retention; -import java.lang.annotation.Target; - -/** Used to annotate delegator classes, which are emitting events. */ -@Qualifier -@Retention(RUNTIME) -@Target({TYPE, METHOD, FIELD, PARAMETER}) -public @interface EventsServiceDelegator {} diff --git a/runtime/service/src/main/java/org/apache/polaris/service/admin/PolarisCatalogsServiceDefaultDelegator.java b/runtime/service/src/main/java/org/apache/polaris/service/admin/PolarisCatalogsEventServiceDelegator.java similarity index 88% rename from runtime/service/src/main/java/org/apache/polaris/service/admin/PolarisCatalogsServiceDefaultDelegator.java rename to runtime/service/src/main/java/org/apache/polaris/service/admin/PolarisCatalogsEventServiceDelegator.java index 0ef1e24c15..d9327dabf4 100644 --- a/runtime/service/src/main/java/org/apache/polaris/service/admin/PolarisCatalogsServiceDefaultDelegator.java +++ b/runtime/service/src/main/java/org/apache/polaris/service/admin/PolarisCatalogsEventServiceDelegator.java @@ -19,9 +19,10 @@ package org.apache.polaris.service.admin; +import jakarta.annotation.Priority; import jakarta.decorator.Decorator; import jakarta.decorator.Delegate; -import jakarta.enterprise.inject.Default; +import jakarta.enterprise.inject.Alternative; import jakarta.inject.Inject; import jakarta.ws.rs.core.Response; import jakarta.ws.rs.core.SecurityContext; @@ -34,35 +35,31 @@ import org.apache.polaris.core.context.RealmContext; import org.apache.polaris.service.admin.api.PolarisCatalogsApiService; -@EventsServiceDelegator -@Default @Decorator -public class PolarisCatalogsServiceDefaultDelegator implements PolarisCatalogsApiService { +@Priority(1000) +@Alternative +public class PolarisCatalogsEventServiceDelegator implements PolarisCatalogsApiService { @Inject @Delegate PolarisCatalogsApiService delegate; - /** From PolarisCatalogsApiService */ @Override public Response createCatalog( CreateCatalogRequest request, RealmContext realmContext, SecurityContext securityContext) { return delegate.createCatalog(request, realmContext, securityContext); } - /** From PolarisCatalogsApiService */ @Override public Response deleteCatalog( String catalogName, RealmContext realmContext, SecurityContext securityContext) { return delegate.deleteCatalog(catalogName, realmContext, securityContext); } - /** From PolarisCatalogsApiService */ @Override public Response getCatalog( String catalogName, RealmContext realmContext, SecurityContext securityContext) { return delegate.getCatalog(catalogName, realmContext, securityContext); } - /** From PolarisCatalogsApiService */ @Override public Response updateCatalog( String catalogName, @@ -72,13 +69,11 @@ public Response updateCatalog( return delegate.updateCatalog(catalogName, updateRequest, realmContext, securityContext); } - /** From PolarisCatalogsApiService */ @Override public Response listCatalogs(RealmContext realmContext, SecurityContext securityContext) { return delegate.listCatalogs(realmContext, securityContext); } - /** From PolarisCatalogsApiService */ @Override public Response createCatalogRole( String catalogName, @@ -88,7 +83,6 @@ public Response createCatalogRole( return delegate.createCatalogRole(catalogName, request, realmContext, securityContext); } - /** From PolarisCatalogsApiService */ @Override public Response deleteCatalogRole( String catalogName, @@ -98,7 +92,6 @@ public Response deleteCatalogRole( return delegate.deleteCatalogRole(catalogName, catalogRoleName, realmContext, securityContext); } - /** From PolarisCatalogsApiService */ @Override public Response getCatalogRole( String catalogName, @@ -108,7 +101,6 @@ public Response getCatalogRole( return delegate.getCatalogRole(catalogName, catalogRoleName, realmContext, securityContext); } - /** From PolarisCatalogsApiService */ @Override public Response updateCatalogRole( String catalogName, @@ -120,14 +112,12 @@ public Response updateCatalogRole( catalogName, catalogRoleName, updateRequest, realmContext, securityContext); } - /** From PolarisCatalogsApiService */ @Override public Response listCatalogRoles( String catalogName, RealmContext realmContext, SecurityContext securityContext) { return delegate.listCatalogRoles(catalogName, realmContext, securityContext); } - /** From PolarisCatalogsApiService */ @Override public Response addGrantToCatalogRole( String catalogName, @@ -139,7 +129,6 @@ public Response addGrantToCatalogRole( catalogName, catalogRoleName, grantRequest, realmContext, securityContext); } - /** From PolarisCatalogsApiService */ @Override public Response revokeGrantFromCatalogRole( String catalogName, @@ -152,7 +141,6 @@ public Response revokeGrantFromCatalogRole( catalogName, catalogRoleName, cascade, grantRequest, realmContext, securityContext); } - /** From PolarisCatalogsApiService */ @Override public Response listAssigneePrincipalRolesForCatalogRole( String catalogName, @@ -163,7 +151,6 @@ public Response listAssigneePrincipalRolesForCatalogRole( catalogName, catalogRoleName, realmContext, securityContext); } - /** From PolarisCatalogsApiService */ @Override public Response listGrantsForCatalogRole( String catalogName, diff --git a/runtime/service/src/main/java/org/apache/polaris/service/admin/PolarisPrincipalRolesServiceDefaultDelegator.java b/runtime/service/src/main/java/org/apache/polaris/service/admin/PolarisPrincipalRolesEventServiceDelegator.java similarity index 87% rename from runtime/service/src/main/java/org/apache/polaris/service/admin/PolarisPrincipalRolesServiceDefaultDelegator.java rename to runtime/service/src/main/java/org/apache/polaris/service/admin/PolarisPrincipalRolesEventServiceDelegator.java index 8ede671669..32e224a119 100644 --- a/runtime/service/src/main/java/org/apache/polaris/service/admin/PolarisPrincipalRolesServiceDefaultDelegator.java +++ b/runtime/service/src/main/java/org/apache/polaris/service/admin/PolarisPrincipalRolesEventServiceDelegator.java @@ -19,9 +19,10 @@ package org.apache.polaris.service.admin; +import jakarta.annotation.Priority; import jakarta.decorator.Decorator; import jakarta.decorator.Delegate; -import jakarta.enterprise.inject.Default; +import jakarta.enterprise.inject.Alternative; import jakarta.inject.Inject; import jakarta.ws.rs.core.Response; import jakarta.ws.rs.core.SecurityContext; @@ -31,15 +32,13 @@ import org.apache.polaris.core.context.RealmContext; import org.apache.polaris.service.admin.api.PolarisPrincipalRolesApiService; -@Default -@EventsServiceDelegator @Decorator -public class PolarisPrincipalRolesServiceDefaultDelegator - implements PolarisPrincipalRolesApiService { +@Priority(1000) +@Alternative +public class PolarisPrincipalRolesEventServiceDelegator implements PolarisPrincipalRolesApiService { @Inject @Delegate PolarisPrincipalRolesApiService delegate; - /** From PolarisPrincipalRolesApiService */ @Override public Response createPrincipalRole( CreatePrincipalRoleRequest request, @@ -48,21 +47,18 @@ public Response createPrincipalRole( return delegate.createPrincipalRole(request, realmContext, securityContext); } - /** From PolarisPrincipalRolesApiService */ @Override public Response deletePrincipalRole( String principalRoleName, RealmContext realmContext, SecurityContext securityContext) { return delegate.deletePrincipalRole(principalRoleName, realmContext, securityContext); } - /** From PolarisPrincipalRolesApiService */ @Override public Response getPrincipalRole( String principalRoleName, RealmContext realmContext, SecurityContext securityContext) { return delegate.getPrincipalRole(principalRoleName, realmContext, securityContext); } - /** From PolarisPrincipalRolesApiService */ @Override public Response updatePrincipalRole( String principalRoleName, @@ -73,13 +69,11 @@ public Response updatePrincipalRole( principalRoleName, updateRequest, realmContext, securityContext); } - /** From PolarisPrincipalRolesApiService */ @Override public Response listPrincipalRoles(RealmContext realmContext, SecurityContext securityContext) { return delegate.listPrincipalRoles(realmContext, securityContext); } - /** From PolarisPrincipalRolesApiService */ @Override public Response assignCatalogRoleToPrincipalRole( String principalRoleName, @@ -91,7 +85,6 @@ public Response assignCatalogRoleToPrincipalRole( principalRoleName, catalogName, request, realmContext, securityContext); } - /** From PolarisPrincipalRolesApiService */ @Override public Response revokeCatalogRoleFromPrincipalRole( String principalRoleName, @@ -103,7 +96,6 @@ public Response revokeCatalogRoleFromPrincipalRole( principalRoleName, catalogName, catalogRoleName, realmContext, securityContext); } - /** From PolarisPrincipalRolesApiService */ @Override public Response listAssigneePrincipalsForPrincipalRole( String principalRoleName, RealmContext realmContext, SecurityContext securityContext) { @@ -111,7 +103,6 @@ public Response listAssigneePrincipalsForPrincipalRole( principalRoleName, realmContext, securityContext); } - /** From PolarisPrincipalRolesApiService */ @Override public Response listCatalogRolesForPrincipalRole( String principalRoleName, diff --git a/runtime/service/src/main/java/org/apache/polaris/service/admin/PolarisPrincipalsServiceDefaultDelegator.java b/runtime/service/src/main/java/org/apache/polaris/service/admin/PolarisPrincipalsEventServiceDelegator.java similarity index 86% rename from runtime/service/src/main/java/org/apache/polaris/service/admin/PolarisPrincipalsServiceDefaultDelegator.java rename to runtime/service/src/main/java/org/apache/polaris/service/admin/PolarisPrincipalsEventServiceDelegator.java index ae78d0ea50..19d0c1c3f3 100644 --- a/runtime/service/src/main/java/org/apache/polaris/service/admin/PolarisPrincipalsServiceDefaultDelegator.java +++ b/runtime/service/src/main/java/org/apache/polaris/service/admin/PolarisPrincipalsEventServiceDelegator.java @@ -19,9 +19,10 @@ package org.apache.polaris.service.admin; +import jakarta.annotation.Priority; import jakarta.decorator.Decorator; import jakarta.decorator.Delegate; -import jakarta.enterprise.inject.Default; +import jakarta.enterprise.inject.Alternative; import jakarta.inject.Inject; import jakarta.ws.rs.core.Response; import jakarta.ws.rs.core.SecurityContext; @@ -31,35 +32,31 @@ import org.apache.polaris.core.context.RealmContext; import org.apache.polaris.service.admin.api.PolarisPrincipalsApiService; -@Default -@EventsServiceDelegator @Decorator -public class PolarisPrincipalsServiceDefaultDelegator implements PolarisPrincipalsApiService { +@Priority(1000) +@Alternative +public class PolarisPrincipalsEventServiceDelegator implements PolarisPrincipalsApiService { @Inject @Delegate PolarisPrincipalsApiService delegate; - /** From PolarisPrincipalsApiService */ @Override public Response createPrincipal( CreatePrincipalRequest request, RealmContext realmContext, SecurityContext securityContext) { return delegate.createPrincipal(request, realmContext, securityContext); } - /** From PolarisPrincipalsApiService */ @Override public Response deletePrincipal( String principalName, RealmContext realmContext, SecurityContext securityContext) { return delegate.deletePrincipal(principalName, realmContext, securityContext); } - /** From PolarisPrincipalsApiService */ @Override public Response getPrincipal( String principalName, RealmContext realmContext, SecurityContext securityContext) { return delegate.getPrincipal(principalName, realmContext, securityContext); } - /** From PolarisPrincipalsApiService */ @Override public Response updatePrincipal( String principalName, @@ -69,20 +66,17 @@ public Response updatePrincipal( return delegate.updatePrincipal(principalName, updateRequest, realmContext, securityContext); } - /** From PolarisPrincipalsApiService */ @Override public Response rotateCredentials( String principalName, RealmContext realmContext, SecurityContext securityContext) { return delegate.rotateCredentials(principalName, realmContext, securityContext); } - /** From PolarisPrincipalsApiService */ @Override public Response listPrincipals(RealmContext realmContext, SecurityContext securityContext) { return delegate.listPrincipals(realmContext, securityContext); } - /** From PolarisPrincipalsApiService */ @Override public Response assignPrincipalRole( String principalName, @@ -92,7 +86,6 @@ public Response assignPrincipalRole( return delegate.assignPrincipalRole(principalName, request, realmContext, securityContext); } - /** From PolarisPrincipalsApiService */ @Override public Response revokePrincipalRole( String principalName, @@ -103,7 +96,6 @@ public Response revokePrincipalRole( principalName, principalRoleName, realmContext, securityContext); } - /** From PolarisPrincipalsApiService */ @Override public Response listPrincipalRolesAssigned( String principalName, RealmContext realmContext, SecurityContext securityContext) { diff --git a/runtime/service/src/main/java/org/apache/polaris/service/catalog/generic/CatalogGenericTableServiceDefaultDelegator.java b/runtime/service/src/main/java/org/apache/polaris/service/catalog/generic/CatalogGenericTableEventServiceDelegator.java similarity index 93% rename from runtime/service/src/main/java/org/apache/polaris/service/catalog/generic/CatalogGenericTableServiceDefaultDelegator.java rename to runtime/service/src/main/java/org/apache/polaris/service/catalog/generic/CatalogGenericTableEventServiceDelegator.java index 9417c5ce1b..71b64930b1 100644 --- a/runtime/service/src/main/java/org/apache/polaris/service/catalog/generic/CatalogGenericTableServiceDefaultDelegator.java +++ b/runtime/service/src/main/java/org/apache/polaris/service/catalog/generic/CatalogGenericTableEventServiceDelegator.java @@ -19,22 +19,22 @@ package org.apache.polaris.service.catalog.generic; +import jakarta.annotation.Priority; import jakarta.decorator.Decorator; import jakarta.decorator.Delegate; -import jakarta.enterprise.inject.Default; +import jakarta.enterprise.inject.Alternative; import jakarta.inject.Inject; import jakarta.ws.rs.core.Response; import jakarta.ws.rs.core.SecurityContext; import org.apache.polaris.core.context.RealmContext; -import org.apache.polaris.service.admin.EventsServiceDelegator; import org.apache.polaris.service.catalog.api.PolarisCatalogGenericTableApiService; import org.apache.polaris.service.catalog.common.CatalogAdapter; import org.apache.polaris.service.types.CreateGenericTableRequest; -@Default -@EventsServiceDelegator @Decorator -public class CatalogGenericTableServiceDefaultDelegator +@Priority(1000) +@Alternative +public class CatalogGenericTableEventServiceDelegator implements PolarisCatalogGenericTableApiService, CatalogAdapter { @Inject @Delegate GenericTableCatalogAdapter delegate; diff --git a/runtime/service/src/main/java/org/apache/polaris/service/catalog/iceberg/IcebergRestCatalogServiceDefaultDelegator.java b/runtime/service/src/main/java/org/apache/polaris/service/catalog/iceberg/IcebergRestCatalogEventServiceDelegator.java similarity index 97% rename from runtime/service/src/main/java/org/apache/polaris/service/catalog/iceberg/IcebergRestCatalogServiceDefaultDelegator.java rename to runtime/service/src/main/java/org/apache/polaris/service/catalog/iceberg/IcebergRestCatalogEventServiceDelegator.java index c553ff09ee..191d371afe 100644 --- a/runtime/service/src/main/java/org/apache/polaris/service/catalog/iceberg/IcebergRestCatalogServiceDefaultDelegator.java +++ b/runtime/service/src/main/java/org/apache/polaris/service/catalog/iceberg/IcebergRestCatalogEventServiceDelegator.java @@ -19,9 +19,10 @@ package org.apache.polaris.service.catalog.iceberg; +import jakarta.annotation.Priority; import jakarta.decorator.Decorator; import jakarta.decorator.Delegate; -import jakarta.enterprise.inject.Default; +import jakarta.enterprise.inject.Alternative; import jakarta.inject.Inject; import jakarta.ws.rs.core.Response; import jakarta.ws.rs.core.SecurityContext; @@ -34,16 +35,15 @@ import org.apache.iceberg.rest.requests.ReportMetricsRequest; import org.apache.iceberg.rest.requests.UpdateNamespacePropertiesRequest; import org.apache.polaris.core.context.RealmContext; -import org.apache.polaris.service.admin.EventsServiceDelegator; import org.apache.polaris.service.catalog.api.IcebergRestCatalogApiService; import org.apache.polaris.service.types.CommitTableRequest; import org.apache.polaris.service.types.CommitViewRequest; import org.apache.polaris.service.types.NotificationRequest; -@Default -@EventsServiceDelegator @Decorator -public class IcebergRestCatalogServiceDefaultDelegator implements IcebergRestCatalogApiService { +@Priority(1000) +@Alternative +public class IcebergRestCatalogEventServiceDelegator implements IcebergRestCatalogApiService { @Inject @Delegate IcebergCatalogAdapter delegate; diff --git a/runtime/service/src/main/java/org/apache/polaris/service/catalog/iceberg/IcebergRestConfigurationServiceDefaultDelegator.java b/runtime/service/src/main/java/org/apache/polaris/service/catalog/iceberg/IcebergRestConfigurationEventServiceDelegator.java similarity index 88% rename from runtime/service/src/main/java/org/apache/polaris/service/catalog/iceberg/IcebergRestConfigurationServiceDefaultDelegator.java rename to runtime/service/src/main/java/org/apache/polaris/service/catalog/iceberg/IcebergRestConfigurationEventServiceDelegator.java index 7a96f3c4ea..a191e556ae 100644 --- a/runtime/service/src/main/java/org/apache/polaris/service/catalog/iceberg/IcebergRestConfigurationServiceDefaultDelegator.java +++ b/runtime/service/src/main/java/org/apache/polaris/service/catalog/iceberg/IcebergRestConfigurationEventServiceDelegator.java @@ -19,20 +19,20 @@ package org.apache.polaris.service.catalog.iceberg; +import jakarta.annotation.Priority; import jakarta.decorator.Decorator; import jakarta.decorator.Delegate; -import jakarta.enterprise.inject.Default; +import jakarta.enterprise.inject.Alternative; import jakarta.inject.Inject; import jakarta.ws.rs.core.Response; import jakarta.ws.rs.core.SecurityContext; import org.apache.polaris.core.context.RealmContext; -import org.apache.polaris.service.admin.EventsServiceDelegator; import org.apache.polaris.service.catalog.api.IcebergRestConfigurationApiService; -@Default -@EventsServiceDelegator @Decorator -public class IcebergRestConfigurationServiceDefaultDelegator +@Priority(1000) +@Alternative +public class IcebergRestConfigurationEventServiceDelegator implements IcebergRestConfigurationApiService { @Inject @Delegate IcebergCatalogAdapter delegate; diff --git a/runtime/service/src/main/java/org/apache/polaris/service/catalog/policy/CatalogPolicyServiceDefaultDelegator.java b/runtime/service/src/main/java/org/apache/polaris/service/catalog/policy/CatalogPolicyEventServiceDelegator.java similarity index 95% rename from runtime/service/src/main/java/org/apache/polaris/service/catalog/policy/CatalogPolicyServiceDefaultDelegator.java rename to runtime/service/src/main/java/org/apache/polaris/service/catalog/policy/CatalogPolicyEventServiceDelegator.java index c6ec84d4f4..50dd76d4c2 100644 --- a/runtime/service/src/main/java/org/apache/polaris/service/catalog/policy/CatalogPolicyServiceDefaultDelegator.java +++ b/runtime/service/src/main/java/org/apache/polaris/service/catalog/policy/CatalogPolicyEventServiceDelegator.java @@ -19,14 +19,14 @@ package org.apache.polaris.service.catalog.policy; +import jakarta.annotation.Priority; import jakarta.decorator.Decorator; import jakarta.decorator.Delegate; -import jakarta.enterprise.inject.Default; +import jakarta.enterprise.inject.Alternative; import jakarta.inject.Inject; import jakarta.ws.rs.core.Response; import jakarta.ws.rs.core.SecurityContext; import org.apache.polaris.core.context.RealmContext; -import org.apache.polaris.service.admin.EventsServiceDelegator; import org.apache.polaris.service.catalog.api.PolarisCatalogPolicyApiService; import org.apache.polaris.service.catalog.common.CatalogAdapter; import org.apache.polaris.service.types.AttachPolicyRequest; @@ -34,10 +34,10 @@ import org.apache.polaris.service.types.DetachPolicyRequest; import org.apache.polaris.service.types.UpdatePolicyRequest; -@Default -@EventsServiceDelegator @Decorator -public class CatalogPolicyServiceDefaultDelegator +@Priority(1000) +@Alternative +public class CatalogPolicyEventServiceDelegator implements PolarisCatalogPolicyApiService, CatalogAdapter { @Inject @Delegate PolicyCatalogAdapter delegate; From ad46ca6c9853bff53dbc6750fb83b637aefe001a Mon Sep 17 00:00:00 2001 From: adnanhemani Date: Thu, 28 Aug 2025 00:46:27 -0700 Subject: [PATCH 7/7] Remove @Alternative annotation --- .../service/admin/PolarisCatalogsEventServiceDelegator.java | 2 -- .../admin/PolarisPrincipalRolesEventServiceDelegator.java | 2 -- .../service/admin/PolarisPrincipalsEventServiceDelegator.java | 2 -- .../generic/CatalogGenericTableEventServiceDelegator.java | 2 -- .../iceberg/IcebergRestCatalogEventServiceDelegator.java | 2 -- .../iceberg/IcebergRestConfigurationEventServiceDelegator.java | 2 -- .../catalog/policy/CatalogPolicyEventServiceDelegator.java | 2 -- 7 files changed, 14 deletions(-) diff --git a/runtime/service/src/main/java/org/apache/polaris/service/admin/PolarisCatalogsEventServiceDelegator.java b/runtime/service/src/main/java/org/apache/polaris/service/admin/PolarisCatalogsEventServiceDelegator.java index d9327dabf4..76c320ae6b 100644 --- a/runtime/service/src/main/java/org/apache/polaris/service/admin/PolarisCatalogsEventServiceDelegator.java +++ b/runtime/service/src/main/java/org/apache/polaris/service/admin/PolarisCatalogsEventServiceDelegator.java @@ -22,7 +22,6 @@ import jakarta.annotation.Priority; import jakarta.decorator.Decorator; import jakarta.decorator.Delegate; -import jakarta.enterprise.inject.Alternative; import jakarta.inject.Inject; import jakarta.ws.rs.core.Response; import jakarta.ws.rs.core.SecurityContext; @@ -37,7 +36,6 @@ @Decorator @Priority(1000) -@Alternative public class PolarisCatalogsEventServiceDelegator implements PolarisCatalogsApiService { @Inject @Delegate PolarisCatalogsApiService delegate; diff --git a/runtime/service/src/main/java/org/apache/polaris/service/admin/PolarisPrincipalRolesEventServiceDelegator.java b/runtime/service/src/main/java/org/apache/polaris/service/admin/PolarisPrincipalRolesEventServiceDelegator.java index 32e224a119..d473906a31 100644 --- a/runtime/service/src/main/java/org/apache/polaris/service/admin/PolarisPrincipalRolesEventServiceDelegator.java +++ b/runtime/service/src/main/java/org/apache/polaris/service/admin/PolarisPrincipalRolesEventServiceDelegator.java @@ -22,7 +22,6 @@ import jakarta.annotation.Priority; import jakarta.decorator.Decorator; import jakarta.decorator.Delegate; -import jakarta.enterprise.inject.Alternative; import jakarta.inject.Inject; import jakarta.ws.rs.core.Response; import jakarta.ws.rs.core.SecurityContext; @@ -34,7 +33,6 @@ @Decorator @Priority(1000) -@Alternative public class PolarisPrincipalRolesEventServiceDelegator implements PolarisPrincipalRolesApiService { @Inject @Delegate PolarisPrincipalRolesApiService delegate; diff --git a/runtime/service/src/main/java/org/apache/polaris/service/admin/PolarisPrincipalsEventServiceDelegator.java b/runtime/service/src/main/java/org/apache/polaris/service/admin/PolarisPrincipalsEventServiceDelegator.java index 19d0c1c3f3..b281290b14 100644 --- a/runtime/service/src/main/java/org/apache/polaris/service/admin/PolarisPrincipalsEventServiceDelegator.java +++ b/runtime/service/src/main/java/org/apache/polaris/service/admin/PolarisPrincipalsEventServiceDelegator.java @@ -22,7 +22,6 @@ import jakarta.annotation.Priority; import jakarta.decorator.Decorator; import jakarta.decorator.Delegate; -import jakarta.enterprise.inject.Alternative; import jakarta.inject.Inject; import jakarta.ws.rs.core.Response; import jakarta.ws.rs.core.SecurityContext; @@ -34,7 +33,6 @@ @Decorator @Priority(1000) -@Alternative public class PolarisPrincipalsEventServiceDelegator implements PolarisPrincipalsApiService { @Inject @Delegate PolarisPrincipalsApiService delegate; diff --git a/runtime/service/src/main/java/org/apache/polaris/service/catalog/generic/CatalogGenericTableEventServiceDelegator.java b/runtime/service/src/main/java/org/apache/polaris/service/catalog/generic/CatalogGenericTableEventServiceDelegator.java index 71b64930b1..0db2a42570 100644 --- a/runtime/service/src/main/java/org/apache/polaris/service/catalog/generic/CatalogGenericTableEventServiceDelegator.java +++ b/runtime/service/src/main/java/org/apache/polaris/service/catalog/generic/CatalogGenericTableEventServiceDelegator.java @@ -22,7 +22,6 @@ import jakarta.annotation.Priority; import jakarta.decorator.Decorator; import jakarta.decorator.Delegate; -import jakarta.enterprise.inject.Alternative; import jakarta.inject.Inject; import jakarta.ws.rs.core.Response; import jakarta.ws.rs.core.SecurityContext; @@ -33,7 +32,6 @@ @Decorator @Priority(1000) -@Alternative public class CatalogGenericTableEventServiceDelegator implements PolarisCatalogGenericTableApiService, CatalogAdapter { diff --git a/runtime/service/src/main/java/org/apache/polaris/service/catalog/iceberg/IcebergRestCatalogEventServiceDelegator.java b/runtime/service/src/main/java/org/apache/polaris/service/catalog/iceberg/IcebergRestCatalogEventServiceDelegator.java index 191d371afe..43d1c1f009 100644 --- a/runtime/service/src/main/java/org/apache/polaris/service/catalog/iceberg/IcebergRestCatalogEventServiceDelegator.java +++ b/runtime/service/src/main/java/org/apache/polaris/service/catalog/iceberg/IcebergRestCatalogEventServiceDelegator.java @@ -22,7 +22,6 @@ import jakarta.annotation.Priority; import jakarta.decorator.Decorator; import jakarta.decorator.Delegate; -import jakarta.enterprise.inject.Alternative; import jakarta.inject.Inject; import jakarta.ws.rs.core.Response; import jakarta.ws.rs.core.SecurityContext; @@ -42,7 +41,6 @@ @Decorator @Priority(1000) -@Alternative public class IcebergRestCatalogEventServiceDelegator implements IcebergRestCatalogApiService { @Inject @Delegate IcebergCatalogAdapter delegate; diff --git a/runtime/service/src/main/java/org/apache/polaris/service/catalog/iceberg/IcebergRestConfigurationEventServiceDelegator.java b/runtime/service/src/main/java/org/apache/polaris/service/catalog/iceberg/IcebergRestConfigurationEventServiceDelegator.java index a191e556ae..6e018c9c22 100644 --- a/runtime/service/src/main/java/org/apache/polaris/service/catalog/iceberg/IcebergRestConfigurationEventServiceDelegator.java +++ b/runtime/service/src/main/java/org/apache/polaris/service/catalog/iceberg/IcebergRestConfigurationEventServiceDelegator.java @@ -22,7 +22,6 @@ import jakarta.annotation.Priority; import jakarta.decorator.Decorator; import jakarta.decorator.Delegate; -import jakarta.enterprise.inject.Alternative; import jakarta.inject.Inject; import jakarta.ws.rs.core.Response; import jakarta.ws.rs.core.SecurityContext; @@ -31,7 +30,6 @@ @Decorator @Priority(1000) -@Alternative public class IcebergRestConfigurationEventServiceDelegator implements IcebergRestConfigurationApiService { diff --git a/runtime/service/src/main/java/org/apache/polaris/service/catalog/policy/CatalogPolicyEventServiceDelegator.java b/runtime/service/src/main/java/org/apache/polaris/service/catalog/policy/CatalogPolicyEventServiceDelegator.java index 50dd76d4c2..959de17ba2 100644 --- a/runtime/service/src/main/java/org/apache/polaris/service/catalog/policy/CatalogPolicyEventServiceDelegator.java +++ b/runtime/service/src/main/java/org/apache/polaris/service/catalog/policy/CatalogPolicyEventServiceDelegator.java @@ -22,7 +22,6 @@ import jakarta.annotation.Priority; import jakarta.decorator.Decorator; import jakarta.decorator.Delegate; -import jakarta.enterprise.inject.Alternative; import jakarta.inject.Inject; import jakarta.ws.rs.core.Response; import jakarta.ws.rs.core.SecurityContext; @@ -36,7 +35,6 @@ @Decorator @Priority(1000) -@Alternative public class CatalogPolicyEventServiceDelegator implements PolarisCatalogPolicyApiService, CatalogAdapter {