Class CompositePackageRegistry
- java.lang.Object
-
- org.apache.jackrabbit.vault.packaging.registry.impl.CompositePackageRegistry
-
- All Implemented Interfaces:
PackageRegistry
public class CompositePackageRegistry extends Object implements PackageRegistry
Package registry wrapping a number ofPackageRegistry
instances. This registry only works, if each package id contained in any of the registries is unique among all registries. In case duplicates are detected exceptions are thrown. The first given registry is used for registering new packages.
-
-
Constructor Summary
Constructors Constructor Description CompositePackageRegistry(List<PackageRegistry> registries)
-
Method Summary
All Methods Instance 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.boolean
contains(@NotNull PackageId id)
Checks if this registry contains the package with the given id.@NotNull ExecutionPlanBuilder
createExecutionPlan()
Creates a new execution plan builder.@Nullable RegisteredPackage
open(@NotNull PackageId id)
Opens the package with the given id.@NotNull Set<PackageId>
packages()
Returns as set of all packages registered in this registry.@NotNull PackageId
register(@NotNull File file, boolean replace)
Registers a package provided via a file.@NotNull PackageId
register(@NotNull InputStream in, boolean replace)
Registers a package provided via an input stream.@NotNull PackageId
registerExternal(@NotNull File file, boolean replace)
Registers a package provided via an external file.void
remove(@NotNull PackageId id)
Removes the package from this registry.@Nullable PackageId
resolve(@NotNull Dependency dependency, boolean onlyInstalled)
Tries to resolve the given dependency and returns the id of the package that matches the dependency filter best.@NotNull PackageId[]
usage(@NotNull PackageId id)
Returns the package ids of installed packages that depend on the given package.
-
-
-
Constructor Detail
-
CompositePackageRegistry
public CompositePackageRegistry(List<PackageRegistry> registries) throws IOException
- Throws:
IOException
-
-
Method Detail
-
contains
public boolean contains(@NotNull @NotNull PackageId id) throws IOException
Description copied from interface:PackageRegistry
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
@NotNull public @NotNull Set<PackageId> packages() throws IOException
Description copied from interface:PackageRegistry
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
@Nullable public @Nullable RegisteredPackage open(@NotNull @NotNull PackageId id) throws IOException
Description copied from interface:PackageRegistry
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
@NotNull public @NotNull PackageId register(@NotNull @NotNull InputStream in, boolean replace) throws IOException, PackageExistsException
Description copied from interface:PackageRegistry
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
@NotNull public @NotNull PackageId register(@NotNull @NotNull File file, boolean replace) throws IOException, PackageExistsException
Description copied from interface:PackageRegistry
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
@NotNull public @NotNull PackageId registerExternal(@NotNull @NotNull File file, boolean replace) throws IOException, PackageExistsException
Description copied from interface:PackageRegistry
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 void remove(@NotNull @NotNull PackageId id) throws IOException, NoSuchPackageException
Description copied from interface:PackageRegistry
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
Description copied from interface:PackageRegistry
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
@Nullable public @Nullable PackageId resolve(@NotNull @NotNull Dependency dependency, boolean onlyInstalled) throws IOException
Description copied from interface:PackageRegistry
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(@NotNull @NotNull PackageId id) throws IOException
Description copied from interface:PackageRegistry
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()
Description copied from interface:PackageRegistry
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
-
-