private void getInstalledExtensions(String feature, String namespace, Set<InstalledExtension> installedExtensions) { if (namespace == null) { getInstalledExtensions(feature, installedExtensions); } else { InstalledExtension installedExtension = this.installedExtensionRepository.getInstalledExtension(feature, namespace); if (installedExtension != null) { installedExtensions.add(installedExtension); } } }
protected Collection<InstalledExtension> getInstalledExtensions() { Collection<ExtensionId> requestExtensions = getRequest().getExtensions(); Collection<InstalledExtension> installedExtensions; if (requestExtensions != null && !requestExtensions.isEmpty()) { installedExtensions = new ArrayList<>(requestExtensions.size()); for (ExtensionId requestExtension : requestExtensions) { InstalledExtension installedExtension = this.installedExtensionRepository.getInstalledExtension(requestExtension); installedExtensions.add(installedExtension); } } else { installedExtensions = this.installedExtensionRepository.getInstalledExtensions(); } return installedExtensions; }
/** * Get the extension handler corresponding to the given installed extension ID or feature (virtual ID) provided by * the extension and namespace. * <p> * The returned handler can be used to get more information about the extension, such as the authors, an extension * description, its license... * * @param feature the extension id or provided feature (virtual extension) of the extension to resolve * @param namespace the optional namespace where the extension should be installed * @return the read-only handler corresponding to the requested extension, or {@code null} if the extension isn't * installed in the target namespace */ public InstalledExtension getInstalledExtension(String feature, String namespace) { return safe(this.installedExtensionRepository.getInstalledExtension(feature, namespace)); }
protected Collection<InstalledExtension> getInstalledExtensions(String namespace) { Collection<ExtensionId> requestExtensions = getRequest().getExtensions(); Collection<InstalledExtension> installedExtensions; if (requestExtensions != null && !requestExtensions.isEmpty()) { installedExtensions = new ArrayList<>(requestExtensions.size()); for (ExtensionId requestExtension : requestExtensions) { InstalledExtension installedExtension = this.installedExtensionRepository.getInstalledExtension(requestExtension); if (installedExtension.isInstalled(namespace)) { installedExtensions.add(installedExtension); } } } else { installedExtensions = this.installedExtensionRepository.getInstalledExtensions(namespace); } return installedExtensions; }
@Override public InstalledExtension getInstalledExtension(ExtensionId extensionId) { return safe(getWrapped().getInstalledExtension(extensionId)); }
@Override public InstalledExtension getInstalledExtension(String feature, String namespace) { return safe(getWrapped().getInstalledExtension(feature, namespace)); }
@Override public Extension getAccessibleExtension(String feature, Namespace namespace) { // Try installed extension Extension extension = this.installedExtensionRepository.getInstalledExtension(feature, namespace.serialize()); if (extension == null) { // Try core extension extension = this.coreExtensionRepository.getCoreExtension(feature); } return extension; }
private boolean hasIncompatileRootDependency(ExtensionDependency extensionDependency) { InstalledExtension rootExtension = this.installedExtensionRepository.getInstalledExtension(extensionDependency.getId(), null); return rootExtension != null && !extensionDependency.isCompatible(rootExtension); }
/** * Get all the installed extensions that depend on the specified root extension. The results are grouped by * namespace. * * @param feature the extension id or provided feature (virtual extension) of the extension to resolve * @return a map namespace -> list of dependent extensions, or {@code null} if any error occurs while computing * the result, in which case {@link #getLastError()} contains the failure reason */ public Map<String, Collection<InstalledExtension>> getBackwardDependencies(String feature) { InstalledExtension installedExtension = this.installedExtensionRepository.getInstalledExtension(feature, null); Map<String, Collection<InstalledExtension>> extensions; if (installedExtension != null) { extensions = getBackwardDependencies(installedExtension.getId()); } else { extensions = null; } return extensions; }
private boolean checkRootExtension(String feature) throws InstallException { InstalledExtension rootExtension = this.installedExtensionRepository.getInstalledExtension(feature, null); if (rootExtension != null) { if (!getRequest().isRootModificationsAllowed()) { throw new InstallException( String.format("An extension with feature [%s] is already installed on root namespace ([%s])", feature, rootExtension.getId())); } return true; } return false; }
/** * @param extensionId the identifier of the extension to uninstall * @param namespace the namespace from where to uninstall the extension * @param parentBranch the children of the parent {@link DefaultExtensionPlanNode} * @param withBackWard uninstall also the backward dependencies * @throws UninstallException error when trying to uninstall provided extension */ protected void uninstallExtension(String extensionId, String namespace, Collection<ExtensionPlanNode> parentBranch, boolean withBackWard) throws UninstallException { InstalledExtension installedExtension = this.installedExtensionRepository.getInstalledExtension(extensionId, namespace); if (installedExtension == null) { throw new UninstallException(String.format(EXCEPTION_NOTINSTALLED, extensionId)); } try { uninstallExtension(installedExtension, namespace, parentBranch, withBackWard); } catch (Exception e) { throw new UninstallException("Failed to uninstall extension", e); } }
private Extension checkInstalledExtension(Extension extension, String namespace) throws InstallException { // Check if the extension conflict with an extension installed on root namespace if (namespace != null) { checkRootExtension(extension); } // Check if the exact same valid extension is already installed on target namespace InstalledExtension installedExtension = this.installedExtensionRepository.getInstalledExtension(extension.getId()); if (installedExtension != null && installedExtension.isInstalled(namespace)) { if (installedExtension.isValid(namespace)) { throw new InstallException(String.format("Extension [%s] is already installed on namespace [%s]", extension.getId(), namespace)); } // In case the extension is already installed on the namespace but is invalid continue with it to make clear // to following code we are actually repairing it return installedExtension; } return extension; }
if (installedRepository.getInstalledExtension(localExtension.getId().getId(), namespace) == null) { for (ExtensionId feature : localExtension.getExtensionFeatures()) { if (installedRepository.getInstalledExtension(feature.getId(), namespace) != null) {
if (!this.coreExtensionRepository.exists(dependency.getId())) { InstalledExtension dependencyExtension = this.installedExtensionRepository.getInstalledExtension(dependency.getId(), namespace);
@Override public Extension resolveExtension(ExtensionDependency extensionDependency, String namespace) throws ResolveException { try { return this.coreExtensionRepository.resolve(extensionDependency); } catch (ResolveException notACoreExtension) { InstalledExtension extension = this.installedExtensionRepository.getInstalledExtension(extensionDependency.getId(), namespace); if (extension != null && extensionDependency.getVersionConstraint().containsVersion(extension.getId().getVersion())) { return extension; } try { return this.localExtensionRepository.resolve(extensionDependency); } catch (ResolveException notALocalExtension) { return this.repositoryManager.resolve(extensionDependency); } } }
@Override public InstalledExtension getFlavorExtension(Namespace namespace) { try { for (InstalledExtension extension : this.installedRepository .searchInstalledExtensions(namespace.serialize(), new FlavorQuery())) { // Assume there is only one non dependency with the tag "flavor" so return the first one found if (!extension.isDependency(namespace.serialize())) { // There should be only one flavor per wiki return extension; } } } catch (SearchException e) { // It should never happen with the local repository } // If nothing has been found, look for extensions that was not tagged as flavors but that are in the list of // old flavors for (String oldFlavor : getExtensionsConsideredAsFlavors()) { InstalledExtension installedExtension = this.installedRepository.getInstalledExtension(oldFlavor, namespace.serialize()); if (installedExtension != null) { return installedExtension; } } // It seems there is no known UI on this wiki return null; }
this.installedExtensionRepository.getInstalledExtension(extensionDependency.getId(), namespace);