Class AbstractPackageRegistry

java.lang.Object
org.apache.jackrabbit.vault.packaging.registry.impl.AbstractPackageRegistry
All Implemented Interfaces:
InternalPackageRegistry, PackageRegistry
Direct Known Subclasses:
FSPackageRegistry, JcrPackageRegistry

public abstract class AbstractPackageRegistry extends Object implements PackageRegistry, InternalPackageRegistry
Abstraction for shared methods of PackageRegistry & InternalPackageRegistry implementations
  • Field Details

  • Constructor Details

  • Method Details

    • isStrictByDefault

      public boolean isStrictByDefault()
    • overwritePrimaryTypesOfFoldersByDefault

      public boolean overwritePrimaryTypesOfFoldersByDefault()
    • getDefaultIdConflictPolicy

      public IdConflictPolicy getDefaultIdConflictPolicy()
    • installPackage

      public abstract void installPackage(Session session, RegisteredPackage pkg, ImportOptions opts, boolean extract) throws IOException, PackageException
      Specified by:
      installPackage in interface InternalPackageRegistry
      Throws:
      IOException
      PackageException
    • uninstallPackage

      public abstract void uninstallPackage(Session session, RegisteredPackage pkg, ImportOptions opts) throws IOException, PackageException
      Specified by:
      uninstallPackage in interface InternalPackageRegistry
      Throws:
      IOException
      PackageException
    • contains

      public abstract boolean contains(PackageId id) throws IOException
      Checks if this registry contains the package with the given id.
      Specified by:
      contains in interface PackageRegistry
      Parameters:
      id - the package id.
      Returns:
      true if the package is registered.
      Throws:
      IOException - if an I/O error occurs.
    • packages

      public abstract Set<PackageId> packages() throws IOException
      Returns as set of all packages registered in this registry.
      Specified by:
      packages in interface PackageRegistry
      Returns:
      a set of package ids.
      Throws:
      IOException - if an I/O error occurs.
    • open

      public abstract RegisteredPackage open(PackageId id) throws IOException
      Opens the package with the given id.
      Specified by:
      open in interface PackageRegistry
      Parameters:
      id - the package id
      Returns:
      the package or null if it does not exists.
      Throws:
      IOException - if an I/O error occurs.
    • register

      public abstract PackageId register(InputStream in, boolean replace) throws IOException, PackageExistsException
      Registers a package provided via an input stream. The method fails, if a package with the same id already exists, and replace is set to false. otherwise the existing package is replaced.
      Specified by:
      register in interface PackageRegistry
      Parameters:
      in - the input stream to the package data
      replace - true if existing package should be replaced.
      Returns:
      the new package id.
      Throws:
      IOException - if an I/O error occurs.
      PackageExistsException - if the package exists and replace is false.
    • register

      public abstract PackageId register(File file, boolean replace) throws IOException, PackageExistsException
      Registers a package provided via a file. The method fails, if a package with the same id already exists, and replace is set to false; otherwise the existing package is replaced.
      Specified by:
      register in interface PackageRegistry
      Parameters:
      file - the file to the package data
      replace - true if existing package should be replaced.
      Returns:
      the new package id.
      Throws:
      IOException - if an I/O error occurrs.
      PackageExistsException - if the package exists and replace is false.
    • registerExternal

      public abstract PackageId registerExternal(File file, boolean replace) throws IOException, PackageExistsException
      Registers a package provided via an external file. The binary data of the package will not be copied into the underlying persistence but only be referenced. Removing such a linked package afterwards will not delete the original file. The method fails, if a package with the same id already exists, and replace is set to false; otherwise the existing package is replaced.
      Specified by:
      registerExternal in interface PackageRegistry
      Parameters:
      file - the file to the package data.
      replace - true if existing package should be replaced.
      Returns:
      the new package id.
      Throws:
      IOException - if an I/O error occurrs.
      PackageExistsException - if the package exists and replace is false.
    • remove

      public abstract void remove(PackageId id) throws IOException, NoSuchPackageException
      Removes the package from this registry.
      Specified by:
      remove in interface PackageRegistry
      Parameters:
      id - the id of the package to remove
      Throws:
      IOException - if an I/O error occurrs.
      NoSuchPackageException - if the package does not exist
    • analyzeDependencies

      @NotNull public @NotNull DependencyReport analyzeDependencies(@NotNull @NotNull PackageId id, boolean onlyInstalled) throws IOException, NoSuchPackageException
      Creates a dependency report that lists the resolved and unresolved dependencies.
      Specified by:
      analyzeDependencies in interface PackageRegistry
      Parameters:
      id - the package id.
      onlyInstalled - if true only installed packages are used for resolution
      Returns:
      the report
      Throws:
      IOException - if an error accessing the repository occurrs
      NoSuchPackageException - if the package with the given id does not exist.
    • resolve

      public abstract PackageId resolve(Dependency dependency, boolean onlyInstalled) throws IOException
      Tries to resolve the given dependency and returns the id of the package that matches the dependency filter best.
      Specified by:
      resolve in interface PackageRegistry
      Parameters:
      dependency - the dependency to resolve against.
      onlyInstalled - if true only installed packages are respected.
      Returns:
      the package id or null
      Throws:
      IOException - if an I/O error occurrs.
    • usage

      @NotNull public @NotNull PackageId[] usage(PackageId id) throws IOException
      Returns the package ids of installed packages that depend on the given package.
      Specified by:
      usage in interface PackageRegistry
      Parameters:
      id - the package id to search for
      Returns:
      the array of package ids.
      Throws:
      IOException - if an I/O error occurs.
    • createExecutionPlan

      @NotNull public @NotNull ExecutionPlanBuilder createExecutionPlan()
      Creates a new execution plan builder. The builder allows to create an execution plan for package installation related tasks.
      Specified by:
      createExecutionPlan in interface PackageRegistry
      Returns:
      a new builder
    • getRelativeInstallationPath

      public static String getRelativeInstallationPath(PackageId id)
      Returns the relative path of this package. please note that since 2.3 this also includes the version, but never the extension (.zip).
      Parameters:
      id - the package id
      Returns:
      the relative path of this package
      Since:
      2.2
    • createRandomPid

      protected static PackageId createRandomPid()
      Creates a random package id for packages that lack one.
      Returns:
      a random package id.
    • getSecurityConfig

      @NotNull public @NotNull AbstractPackageRegistry.SecurityConfig getSecurityConfig()