Class JcrPackageManagerImpl

    • Field Detail

      • ARCHIVE_PACKAGE_ROOT_PATH

        public static final String ARCHIVE_PACKAGE_ROOT_PATH
        root path for packages
        See Also:
        Constant Field Values
    • Constructor Detail

      • JcrPackageManagerImpl

        @Deprecated
        public JcrPackageManagerImpl​(@NotNull
                                     @NotNull javax.jcr.Session session,
                                     @Nullable
                                     @Nullable String[] roots)
        Creates a new package manager using the given session. This method allows to specify one more or package registry root paths, where the first will be the primary when installing new packages. The others serve as backward compatibility to read existing packages.
        Parameters:
        session - repository session
        roots - the root paths to store the packages.
      • JcrPackageManagerImpl

        public JcrPackageManagerImpl​(@NotNull
                                     @NotNull javax.jcr.Session session,
                                     @Nullable
                                     @Nullable String[] roots,
                                     @Nullable
                                     @Nullable String[] authIdsForHookExecution,
                                     @Nullable
                                     @Nullable String[] authIdsForRootInstallation,
                                     boolean isStrict,
                                     boolean overwritePrimaryTypesOfFoldersByDefault,
                                     IdConflictPolicy idConflictPolicy)
    • Method Detail

      • open

        public JcrPackage open​(PackageId id)
                        throws javax.jcr.RepositoryException
        Opens a package with the given package id.
        Specified by:
        open in interface JcrPackageManager
        Parameters:
        id - the package id.
        Returns:
        the new package or null it the package does not exist or is not valid.
        Throws:
        javax.jcr.RepositoryException - if an error occurs
      • open

        public JcrPackage open​(javax.jcr.Node node)
                        throws javax.jcr.RepositoryException
        Opens a package that is based on the given node.
        Specified by:
        open in interface JcrPackageManager
        Parameters:
        node - the underlying node
        Returns:
        the new package or null it the package is not valid.
        Throws:
        javax.jcr.RepositoryException - if an error occurs
      • open

        public JcrPackage open​(javax.jcr.Node node,
                               boolean allowInvalid)
                        throws javax.jcr.RepositoryException
        Opens a package that is based on the given node. If allowInvalid is true also invalid packages are returned, but only if the node is file like (i.e. is nt:hierarchyNode and has a jcr:content/jcr:data property).
        Specified by:
        open in interface JcrPackageManager
        Parameters:
        node - the underlying node
        allowInvalid - if true invalid packages are openend, too.
        Returns:
        the new package or null it the package is not valid unless allowInvalid is true.
        Throws:
        javax.jcr.RepositoryException - if an error occurs
      • resolve

        public PackageId resolve​(Dependency dependency,
                                 boolean onlyInstalled)
                          throws javax.jcr.RepositoryException
        Finds the id of the package that matches the given dependency best. If onlyInstalled is true only installed packages are searched.
        Specified by:
        resolve in interface JcrPackageManager
        Parameters:
        dependency - dependency information
        onlyInstalled - if true only installed packages are searched.
        Returns:
        the id of the matching package or null if not found.
        Throws:
        javax.jcr.RepositoryException - if an error occurs
      • usage

        public PackageId[] usage​(PackageId id)
                          throws javax.jcr.RepositoryException
        Returns the package ids of installed packages that depend on the given package.
        Specified by:
        usage in interface JcrPackageManager
        Parameters:
        id - the package id to search for
        Returns:
        the array of package ids.
        Throws:
        javax.jcr.RepositoryException - if an error occurs
      • upload

        public JcrPackage upload​(InputStream in,
                                 boolean replace)
                          throws javax.jcr.RepositoryException,
                                 IOException
        Uploads a package. The location is chosen from the installation path of the package. if the package does not provide such a path an IOException is thrown. if the package already exists at that path it is not uploaded a ItemExistsException is thrown unless replace is true.
        Specified by:
        upload in interface JcrPackageManager
        Parameters:
        in - input stream that provides the content of the package. note that after this method returns, the input stream is closed in any case.
        replace - if true existing packages are replaced.
        Returns:
        the new jcr package
        Throws:
        javax.jcr.RepositoryException - if an error occurrs
        IOException - if an I/O error occurrs
      • upload

        public JcrPackage upload​(InputStream in,
                                 boolean replace,
                                 boolean strict)
                          throws javax.jcr.RepositoryException,
                                 IOException
        Uploads a package. The location is chosen from the installation path of the package. if the package does not provide such a path an IOException is thrown. if the package already exists at that path it is not uploaded a ItemExistsException is thrown unless replace is true.
        Specified by:
        upload in interface JcrPackageManager
        Parameters:
        in - input stream that provides the content of the package. note that after this method returns, the input stream is closed in any case.
        replace - if true existing packages are replaced.
        strict - if true import is more strict in regards to errors
        Returns:
        the new jcr package
        Throws:
        javax.jcr.RepositoryException - if an error occurrs
        IOException - if an I/O error occurrs
      • extract

        @NotNull
        public @NotNull PackageId[] extract​(@NotNull
                                            @NotNull Archive archive,
                                            @NotNull
                                            @NotNull ImportOptions options,
                                            boolean replace)
                                     throws javax.jcr.RepositoryException,
                                            PackageException,
                                            IOException
        Extracts a package directly from the given archive without uploading it to the repository first. A package node is created but w/o any content. The resulting package cannot be downloaded, uninstalled or re-installed.

        If the package defines unsatisfied dependencies DependencyHandling might cause the extraction to fail.

        If the package contains sub-packages, they will follow the same behaviour, i.e. they will not be uploaded to the repository but directly installed unless ImportOptions.setNonRecursive(boolean) is set to true, in which case the sub packages will be uploaded.

        The method will throw an ItemExistsException if a package with the same id already exists, unless replace is set to true.

        Specified by:
        extract in interface JcrPackageManager
        Parameters:
        archive - the input archive that contains the package.
        options - the import options
        replace - if true existing packages are replaced.
        Returns:
        an array of the package(s) that were extracted.
        Throws:
        javax.jcr.RepositoryException - if an error occurs
        PackageException - if an internal error occurrs
        IOException - if an I/O error occurrs
      • upload

        public JcrPackage upload​(File file,
                                 boolean isTmpFile,
                                 boolean replace,
                                 String nameHint)
                          throws javax.jcr.RepositoryException,
                                 IOException
        Uploads a package. The location is chosen from the installation path of the package. if the package does not provide such a path, the nameHint is respected and the package is placed below the package root. if the package already exists at that path it is not installed and null is returned unless replace is true.
        Specified by:
        upload in interface JcrPackageManager
        Parameters:
        file - package file to upload
        isTmpFile - indicates if the given file is a temp file and can be deleted when the package is closed
        replace - if true existing packages are replaced.
        nameHint - hint for the name if package does not provide one
        Returns:
        the new jcr package
        Throws:
        javax.jcr.RepositoryException - if an error occurrs
        IOException - if an I/O error occurrs
      • upload

        public JcrPackage upload​(File file,
                                 boolean isTmpFile,
                                 boolean replace,
                                 String nameHint,
                                 boolean strict)
                          throws javax.jcr.RepositoryException,
                                 IOException
        Uploads a package. The location is chosen from the installation path of the package. if the package does not provide such a path, the nameHint is respected and the package is placed below the package root. if the package already exists at that path it is not uploaded a ItemExistsException is thrown unless replace is true.
        Specified by:
        upload in interface JcrPackageManager
        Parameters:
        file - package file to upload
        isTmpFile - indicates if the given file is a temp file and can be deleted when the package is closed
        replace - if true existing packages are replaced.
        nameHint - hint for the name if package does not provide one
        strict - if true import is more strict in regards to errors
        Returns:
        the new jcr package
        Throws:
        javax.jcr.RepositoryException - if an error occurrs
        IOException - if an I/O error occurrs
      • create

        public JcrPackage create​(javax.jcr.Node folder,
                                 String name)
                          throws javax.jcr.RepositoryException,
                                 IOException
        Creates a new package below the given folder.
        Specified by:
        create in interface JcrPackageManager
        Parameters:
        folder - parent folder or null for the package root
        name - name of the new package
        Returns:
        a new jcr package
        Throws:
        javax.jcr.RepositoryException - if a repository error occurrs
        IOException - if an I/O exception occurs
      • create

        public JcrPackage create​(String group,
                                 String name)
                          throws javax.jcr.RepositoryException,
                                 IOException
        Creates a new package with the new group and name.
        Specified by:
        create in interface JcrPackageManager
        Parameters:
        group - group of the new package
        name - name of the new package
        Returns:
        a new jcr package
        Throws:
        javax.jcr.RepositoryException - if a repository error occurrs
        IOException - if an I/O exception occurs
      • create

        public JcrPackage create​(String group,
                                 String name,
                                 String version)
                          throws javax.jcr.RepositoryException,
                                 IOException
        Creates a new package with the new group, name and version.
        Specified by:
        create in interface JcrPackageManager
        Parameters:
        group - group of the new package
        name - name of the new package
        version - version of the new package; can be null
        Returns:
        a new jcr package
        Throws:
        javax.jcr.RepositoryException - if a repository error occurrs
        IOException - if an I/O exception occurs
      • remove

        public void remove​(JcrPackage pack)
                    throws javax.jcr.RepositoryException
        Removes a package and its snapshots if present.
        Specified by:
        remove in interface JcrPackageManager
        Parameters:
        pack - the package to remove
        Throws:
        javax.jcr.RepositoryException - if a repository error occurrs
      • rename

        public JcrPackage rename​(JcrPackage pack,
                                 String group,
                                 String name)
                          throws PackageException,
                                 javax.jcr.RepositoryException
        Renames the given package with a new group id and name. Please note that the package is moved and the internal 'path' is adjusted in the definition, but the package is not rewrapped.
        Specified by:
        rename in interface JcrPackageManager
        Parameters:
        pack - the package to rename
        group - the new group id or null
        name - the new name or null
        Returns:
        the renamed package
        Throws:
        PackageException - if the package is not unwrapped.
        javax.jcr.RepositoryException - if an error occurs
      • rename

        public JcrPackage rename​(JcrPackage pack,
                                 String group,
                                 String name,
                                 String version)
                          throws PackageException,
                                 javax.jcr.RepositoryException
        Renames the given package with a new group id, name and version. Please note that the package is moved and the internal 'path' is adjusted in the definition, but the package is not rewrapped.
        Specified by:
        rename in interface JcrPackageManager
        Parameters:
        pack - the package to rename
        group - the new group id or null
        name - the new name or null
        version - the new version or null
        Returns:
        the renamed package
        Throws:
        PackageException - if the package is not unwrapped.
        javax.jcr.RepositoryException - if an error occurs
      • mkdir

        protected javax.jcr.Node mkdir​(String path,
                                       boolean autoSave)
                                throws javax.jcr.RepositoryException
        yet another Convenience method to create intermediate nodes.
        Parameters:
        path - path to create
        autoSave - if true all changes are automatically persisted
        Returns:
        the node
        Throws:
        javax.jcr.RepositoryException - if an error occurrs
      • getPackageRoot

        public javax.jcr.Node getPackageRoot()
                                      throws javax.jcr.RepositoryException
        Returns the configured package root node.
        Specified by:
        getPackageRoot in interface JcrPackageManager
        Returns:
        the package root node
        Throws:
        javax.jcr.RepositoryException - if an error occurs
      • getPackageRoot

        public javax.jcr.Node getPackageRoot​(boolean noCreate)
                                      throws javax.jcr.RepositoryException
        Returns the configured package root node.
        Specified by:
        getPackageRoot in interface JcrPackageManager
        Parameters:
        noCreate - do not create missing root if true
        Returns:
        the package root node or null if not present and noCreate is true.
        Throws:
        javax.jcr.RepositoryException - if an error occurs
      • listPackages

        public List<JcrPackage> listPackages()
                                      throws javax.jcr.RepositoryException
        Returns the list of all packages installed below the package root.
        Specified by:
        listPackages in interface JcrPackageManager
        Returns:
        a list of packages
        Throws:
        javax.jcr.RepositoryException - if an error occurs
      • listPackages

        public List<JcrPackage> listPackages​(WorkspaceFilter filter)
                                      throws javax.jcr.RepositoryException
        Returns the list of all packages installed below the package root that are included in the filter.
        Specified by:
        listPackages in interface JcrPackageManager
        Parameters:
        filter - filter for packages
        Returns:
        a list of packages
        Throws:
        javax.jcr.RepositoryException - if an error occurs
      • listPackages

        public List<JcrPackage> listPackages​(String group,
                                             boolean built)
                                      throws javax.jcr.RepositoryException
        Returns the list of all packages installed below the package root that match the given group. if group is null all packages are returned.
        Specified by:
        listPackages in interface JcrPackageManager
        Parameters:
        group - the group filter
        built - if true only packages with size > 0 are listed
        Returns:
        the list of packages
        Throws:
        javax.jcr.RepositoryException - if an error occurs