Class CatalogHandler

java.lang.Object
org.apache.polaris.service.catalog.common.CatalogHandler
Direct Known Subclasses:
GenericTableCatalogHandler, IcebergCatalogHandler, PolicyCatalogHandler

public abstract class CatalogHandler extends Object
An ABC for catalog wrappers which provides authorize methods that should be called before a request is actually forwarded to a catalog. Child types must implement `initializeCatalog` which will be called after a successful authorization.
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    protected org.apache.polaris.core.persistence.resolver.PolarisResolutionManifest
     
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    protected void
    authorizeBasicNamespaceOperationOrThrow(org.apache.polaris.core.auth.PolarisAuthorizableOperation op, org.apache.iceberg.catalog.Namespace namespace)
     
    protected void
    authorizeBasicNamespaceOperationOrThrow(org.apache.polaris.core.auth.PolarisAuthorizableOperation op, org.apache.iceberg.catalog.Namespace namespace, List<org.apache.iceberg.catalog.Namespace> extraPassthroughNamespaces, List<org.apache.iceberg.catalog.TableIdentifier> extraPassthroughTableLikes, List<org.apache.polaris.service.types.PolicyIdentifier> extraPassThroughPolicies)
     
    protected void
    authorizeBasicTableLikeOperationsOrThrow(EnumSet<org.apache.polaris.core.auth.PolarisAuthorizableOperation> ops, org.apache.polaris.core.entity.PolarisEntitySubType subType, org.apache.iceberg.catalog.TableIdentifier identifier)
     
    protected void
    authorizeCollectionOfTableLikeOperationOrThrow(org.apache.polaris.core.auth.PolarisAuthorizableOperation op, org.apache.polaris.core.entity.PolarisEntitySubType subType, List<org.apache.iceberg.catalog.TableIdentifier> ids)
     
    protected void
    authorizeCreateNamespaceUnderNamespaceOperationOrThrow(org.apache.polaris.core.auth.PolarisAuthorizableOperation op, org.apache.iceberg.catalog.Namespace namespace)
     
    protected void
    authorizeCreateTableLikeUnderNamespaceOperationOrThrow(org.apache.polaris.core.auth.PolarisAuthorizableOperation op, org.apache.iceberg.catalog.TableIdentifier identifier)
     
    abstract org.apache.polaris.core.auth.PolarisAuthorizer
     
    protected void
    authorizeRegisterTableOverwriteOrThrow(org.apache.polaris.core.auth.PolarisAuthorizableOperation overwriteOp, org.apache.polaris.core.auth.PolarisAuthorizableOperation fallbackOp, org.apache.iceberg.catalog.TableIdentifier identifier)
    Authorizes a register-table-with-overwrite operation.
    protected void
    authorizeRenameTableLikeOperationOrThrow(org.apache.polaris.core.auth.PolarisAuthorizableOperation op, org.apache.polaris.core.entity.PolarisEntitySubType subType, org.apache.iceberg.catalog.TableIdentifier src, org.apache.iceberg.catalog.TableIdentifier dst)
     
    protected void
    authorizeResolvedBasicTableLikeOperationOrThrow(org.apache.polaris.core.auth.PolarisAuthorizableOperation op, org.apache.polaris.core.entity.PolarisEntitySubType subType, org.apache.iceberg.catalog.TableIdentifier identifier)
     
    protected void
    authorizeResolvedCreateTableLikeUnderNamespaceOperationOrThrow(org.apache.polaris.core.auth.PolarisAuthorizableOperation op, org.apache.iceberg.catalog.TableIdentifier identifier)
     
    protected void
    authorizeResolvedRegisterTableOverwriteOrThrow(org.apache.polaris.core.auth.PolarisAuthorizableOperation overwriteOp, org.apache.polaris.core.auth.PolarisAuthorizableOperation fallbackOp, org.apache.iceberg.catalog.TableIdentifier identifier)
     
    abstract org.apache.polaris.core.context.CallContext
     
    abstract String
     
    protected void
    ensureResolutionManifestForTable(org.apache.iceberg.catalog.TableIdentifier identifier)
    Ensures resolution manifest is initialized for a table identifier.
    protected abstract void
    Initialize the catalog once authorized.
    abstract org.apache.polaris.core.persistence.PolarisMetaStoreManager
     
    protected org.apache.polaris.core.persistence.resolver.PolarisResolutionManifest
     
    abstract org.apache.polaris.core.auth.PolarisPrincipal
     
    org.apache.polaris.core.config.RealmConfig
     
    org.apache.polaris.core.context.RealmContext
     
    abstract org.apache.polaris.core.persistence.resolver.ResolutionManifestFactory
     
    protected void
    resolveAndAuthorizeBasicTableLikeOperationOrThrow(org.apache.polaris.core.auth.PolarisAuthorizableOperation op, org.apache.polaris.core.entity.PolarisEntitySubType subType, org.apache.iceberg.catalog.TableIdentifier identifier)
     
    protected void
    resolveBasicTableLikeTargetOrThrow(org.apache.polaris.core.auth.PolarisAuthorizableOperation op, org.apache.iceberg.catalog.TableIdentifier identifier)
     

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • resolutionManifest

      protected org.apache.polaris.core.persistence.resolver.PolarisResolutionManifest resolutionManifest
  • Constructor Details

    • CatalogHandler

      public CatalogHandler()
  • Method Details

    • catalogName

      public abstract String catalogName()
    • polarisPrincipal

      public abstract org.apache.polaris.core.auth.PolarisPrincipal polarisPrincipal()
    • callContext

      public abstract org.apache.polaris.core.context.CallContext callContext()
    • realmConfig

      @Derived public org.apache.polaris.core.config.RealmConfig realmConfig()
    • realmContext

      @Derived public org.apache.polaris.core.context.RealmContext realmContext()
    • metaStoreManager

      public abstract org.apache.polaris.core.persistence.PolarisMetaStoreManager metaStoreManager()
    • resolutionManifestFactory

      public abstract org.apache.polaris.core.persistence.resolver.ResolutionManifestFactory resolutionManifestFactory()
    • authorizer

      public abstract org.apache.polaris.core.auth.PolarisAuthorizer authorizer()
    • newResolutionManifest

      protected org.apache.polaris.core.persistence.resolver.PolarisResolutionManifest newResolutionManifest()
    • initializeCatalog

      protected abstract void initializeCatalog()
      Initialize the catalog once authorized. Called after all `authorize...` methods.
    • authorizeBasicNamespaceOperationOrThrow

      protected void authorizeBasicNamespaceOperationOrThrow(org.apache.polaris.core.auth.PolarisAuthorizableOperation op, org.apache.iceberg.catalog.Namespace namespace)
    • authorizeBasicNamespaceOperationOrThrow

      protected void authorizeBasicNamespaceOperationOrThrow(org.apache.polaris.core.auth.PolarisAuthorizableOperation op, org.apache.iceberg.catalog.Namespace namespace, List<org.apache.iceberg.catalog.Namespace> extraPassthroughNamespaces, List<org.apache.iceberg.catalog.TableIdentifier> extraPassthroughTableLikes, List<org.apache.polaris.service.types.PolicyIdentifier> extraPassThroughPolicies)
    • authorizeCreateNamespaceUnderNamespaceOperationOrThrow

      protected void authorizeCreateNamespaceUnderNamespaceOperationOrThrow(org.apache.polaris.core.auth.PolarisAuthorizableOperation op, org.apache.iceberg.catalog.Namespace namespace)
    • authorizeCreateTableLikeUnderNamespaceOperationOrThrow

      protected void authorizeCreateTableLikeUnderNamespaceOperationOrThrow(org.apache.polaris.core.auth.PolarisAuthorizableOperation op, org.apache.iceberg.catalog.TableIdentifier identifier)
    • authorizeResolvedCreateTableLikeUnderNamespaceOperationOrThrow

      protected void authorizeResolvedCreateTableLikeUnderNamespaceOperationOrThrow(org.apache.polaris.core.auth.PolarisAuthorizableOperation op, org.apache.iceberg.catalog.TableIdentifier identifier)
    • authorizeRegisterTableOverwriteOrThrow

      protected void authorizeRegisterTableOverwriteOrThrow(org.apache.polaris.core.auth.PolarisAuthorizableOperation overwriteOp, org.apache.polaris.core.auth.PolarisAuthorizableOperation fallbackOp, org.apache.iceberg.catalog.TableIdentifier identifier)
      Authorizes a register-table-with-overwrite operation. If the table already exists, overwriteOp is authorized against the table entity. If the table does not exist, fallbackOp is authorized against the parent namespace.
    • authorizeResolvedRegisterTableOverwriteOrThrow

      protected void authorizeResolvedRegisterTableOverwriteOrThrow(org.apache.polaris.core.auth.PolarisAuthorizableOperation overwriteOp, org.apache.polaris.core.auth.PolarisAuthorizableOperation fallbackOp, org.apache.iceberg.catalog.TableIdentifier identifier)
    • ensureResolutionManifestForTable

      protected void ensureResolutionManifestForTable(org.apache.iceberg.catalog.TableIdentifier identifier)
      Ensures resolution manifest is initialized for a table identifier. This allows checking catalog-level feature flags or other resolved entities before authorization. If already initialized, this is a no-op.
    • resolveBasicTableLikeTargetOrThrow

      protected void resolveBasicTableLikeTargetOrThrow(org.apache.polaris.core.auth.PolarisAuthorizableOperation op, org.apache.iceberg.catalog.TableIdentifier identifier)
    • authorizeResolvedBasicTableLikeOperationOrThrow

      protected void authorizeResolvedBasicTableLikeOperationOrThrow(org.apache.polaris.core.auth.PolarisAuthorizableOperation op, org.apache.polaris.core.entity.PolarisEntitySubType subType, org.apache.iceberg.catalog.TableIdentifier identifier)
    • resolveAndAuthorizeBasicTableLikeOperationOrThrow

      protected void resolveAndAuthorizeBasicTableLikeOperationOrThrow(org.apache.polaris.core.auth.PolarisAuthorizableOperation op, org.apache.polaris.core.entity.PolarisEntitySubType subType, org.apache.iceberg.catalog.TableIdentifier identifier)
    • authorizeBasicTableLikeOperationsOrThrow

      protected void authorizeBasicTableLikeOperationsOrThrow(EnumSet<org.apache.polaris.core.auth.PolarisAuthorizableOperation> ops, org.apache.polaris.core.entity.PolarisEntitySubType subType, org.apache.iceberg.catalog.TableIdentifier identifier)
    • authorizeCollectionOfTableLikeOperationOrThrow

      protected void authorizeCollectionOfTableLikeOperationOrThrow(org.apache.polaris.core.auth.PolarisAuthorizableOperation op, org.apache.polaris.core.entity.PolarisEntitySubType subType, List<org.apache.iceberg.catalog.TableIdentifier> ids)
    • authorizeRenameTableLikeOperationOrThrow

      protected void authorizeRenameTableLikeOperationOrThrow(org.apache.polaris.core.auth.PolarisAuthorizableOperation op, org.apache.polaris.core.entity.PolarisEntitySubType subType, org.apache.iceberg.catalog.TableIdentifier src, org.apache.iceberg.catalog.TableIdentifier dst)