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
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
AbstractPackageRegistry.SecurityConfig
-
Field Summary
Fields Modifier and Type Field Description static String
ARCHIVE_PACKAGE_ROOT_PATH
Archive root path for packagesstatic String
DEFAULT_PACKAGE_ROOT_PATH
default root path for packagesstatic String
DEFAULT_PACKAGE_ROOT_PATH_PREFIX
default root path prefix for packagesprotected @NotNull AbstractPackageRegistry.SecurityConfig
securityConfig
-
Constructor Summary
Constructors Constructor Description AbstractPackageRegistry(AbstractPackageRegistry.SecurityConfig securityConfig, boolean isStrictByDefault, boolean overwritePrimaryTypesOfFoldersByDefault, IdConflictPolicy defaultIdConflictPolicy)
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description @NotNull DependencyReport
analyzeDependencies(@NotNull PackageId id, boolean onlyInstalled)
Creates a dependency report that lists the resolved and unresolved dependencies.abstract boolean
contains(PackageId id)
Checks if this registry contains the package with the given id.@NotNull ExecutionPlanBuilder
createExecutionPlan()
Creates a new execution plan builder.protected static PackageId
createRandomPid()
Creates a random package id for packages that lack one.IdConflictPolicy
getDefaultIdConflictPolicy()
static String
getRelativeInstallationPath(PackageId id)
Returns the relative path of this package.@NotNull AbstractPackageRegistry.SecurityConfig
getSecurityConfig()
abstract void
installPackage(Session session, RegisteredPackage pkg, ImportOptions opts, boolean extract)
boolean
isStrictByDefault()
abstract RegisteredPackage
open(PackageId id)
Opens the package with the given id.boolean
overwritePrimaryTypesOfFoldersByDefault()
abstract Set<PackageId>
packages()
Returns as set of all packages registered in this registry.abstract PackageId
register(File file, boolean replace)
Registers a package provided via a file.abstract PackageId
register(InputStream in, boolean replace)
Registers a package provided via an input stream.abstract PackageId
registerExternal(File file, boolean replace)
Registers a package provided via an external file.abstract void
remove(PackageId id)
Removes the package from this registry.abstract PackageId
resolve(Dependency dependency, boolean onlyInstalled)
Tries to resolve the given dependency and returns the id of the package that matches the dependency filter best.abstract void
uninstallPackage(Session session, RegisteredPackage pkg, ImportOptions opts)
@NotNull PackageId[]
usage(PackageId id)
Returns the package ids of installed packages that depend on the given package.
-
-
-
Field Detail
-
DEFAULT_PACKAGE_ROOT_PATH
public static final String DEFAULT_PACKAGE_ROOT_PATH
default root path for packages- See Also:
- Constant Field Values
-
ARCHIVE_PACKAGE_ROOT_PATH
public static final String ARCHIVE_PACKAGE_ROOT_PATH
Archive root path for packages- See Also:
- Constant Field Values
-
DEFAULT_PACKAGE_ROOT_PATH_PREFIX
public static final String DEFAULT_PACKAGE_ROOT_PATH_PREFIX
default root path prefix for packages- See Also:
- Constant Field Values
-
securityConfig
@NotNull protected @NotNull AbstractPackageRegistry.SecurityConfig securityConfig
-
-
Constructor Detail
-
AbstractPackageRegistry
public AbstractPackageRegistry(AbstractPackageRegistry.SecurityConfig securityConfig, boolean isStrictByDefault, boolean overwritePrimaryTypesOfFoldersByDefault, IdConflictPolicy defaultIdConflictPolicy)
-
-
Method Detail
-
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 interfaceInternalPackageRegistry
- Throws:
IOException
PackageException
-
uninstallPackage
public abstract void uninstallPackage(Session session, RegisteredPackage pkg, ImportOptions opts) throws IOException, PackageException
- Specified by:
uninstallPackage
in interfaceInternalPackageRegistry
- 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 interfacePackageRegistry
- 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 interfacePackageRegistry
- 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 interfacePackageRegistry
- 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, andreplace
is set tofalse
. otherwise the existing package is replaced.- Specified by:
register
in interfacePackageRegistry
- Parameters:
in
- the input stream to the package datareplace
-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 andreplace
isfalse
.
-
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, andreplace
is set tofalse
; otherwise the existing package is replaced.- Specified by:
register
in interfacePackageRegistry
- Parameters:
file
- the file to the package datareplace
-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 andreplace
isfalse
.
-
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, andreplace
is set tofalse
; otherwise the existing package is replaced.- Specified by:
registerExternal
in interfacePackageRegistry
- 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 andreplace
isfalse
.
-
remove
public abstract void remove(PackageId id) throws IOException, NoSuchPackageException
Removes the package from this registry.- Specified by:
remove
in interfacePackageRegistry
- 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 interfacePackageRegistry
- Parameters:
id
- the package id.onlyInstalled
- iftrue
only installed packages are used for resolution- Returns:
- the report
- Throws:
IOException
- if an error accessing the repository occurrsNoSuchPackageException
- if the package with the givenid
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 interfacePackageRegistry
- Parameters:
dependency
- the dependency to resolve against.onlyInstalled
- iftrue
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 interfacePackageRegistry
- 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 interfacePackageRegistry
- 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()
-
-