Class DefaultFileIOFactory

java.lang.Object
org.apache.polaris.service.catalog.io.DefaultFileIOFactory
All Implemented Interfaces:
FileIOFactory

@ApplicationScoped @Identifier("default") public class DefaultFileIOFactory extends Object implements FileIOFactory
A default FileIO factory implementation for creating Iceberg FileIO instances with contextual table-level properties.

This class acts as a translation layer between Polaris properties and the properties required by Iceberg's FileIO. For example, it evaluates storage actions and retrieves subscoped credentials to initialize a FileIO instance with the most limited permissions necessary.

  • Constructor Summary

    Constructors
    Constructor
    Description
    DefaultFileIOFactory(RealmEntityManagerFactory realmEntityManagerFactory, org.apache.polaris.core.persistence.MetaStoreManagerFactory metaStoreManagerFactory, org.apache.polaris.core.config.PolarisConfigurationStore configurationStore)
     
  • Method Summary

    Modifier and Type
    Method
    Description
    org.apache.iceberg.io.FileIO
    loadFileIO(org.apache.polaris.core.context.CallContext callContext, String ioImplClassName, Map<String,String> properties, org.apache.iceberg.catalog.TableIdentifier identifier, Set<String> tableLocations, Set<org.apache.polaris.core.storage.PolarisStorageActions> storageActions, org.apache.polaris.core.persistence.PolarisResolvedPathWrapper resolvedEntityPath)
    Loads a FileIO implementation for a specific table in the given realm with detailed config.

    Methods inherited from class java.lang.Object

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

    • DefaultFileIOFactory

      @Inject public DefaultFileIOFactory(RealmEntityManagerFactory realmEntityManagerFactory, org.apache.polaris.core.persistence.MetaStoreManagerFactory metaStoreManagerFactory, org.apache.polaris.core.config.PolarisConfigurationStore configurationStore)
  • Method Details

    • loadFileIO

      public org.apache.iceberg.io.FileIO loadFileIO(@Nonnull org.apache.polaris.core.context.CallContext callContext, @Nonnull String ioImplClassName, @Nonnull Map<String,String> properties, @Nonnull org.apache.iceberg.catalog.TableIdentifier identifier, @Nonnull Set<String> tableLocations, @Nonnull Set<org.apache.polaris.core.storage.PolarisStorageActions> storageActions, @Nonnull org.apache.polaris.core.persistence.PolarisResolvedPathWrapper resolvedEntityPath)
      Description copied from interface: FileIOFactory
      Loads a FileIO implementation for a specific table in the given realm with detailed config.

      This method may obtain subscoped credentials to restrict the FileIO's permissions, ensuring secure and limited access to the table's data and locations.

      Specified by:
      loadFileIO in interface FileIOFactory
      Parameters:
      callContext - the call for which the FileIO is being loaded.
      ioImplClassName - the class name of the FileIO implementation to load.
      properties - configuration properties for the FileIO.
      identifier - the table identifier.
      tableLocations - locations associated with the table.
      storageActions - storage actions allowed for the table.
      resolvedEntityPath - resolved paths for the entities.
      Returns:
      a configured FileIO instance.