public AbstractExtension(ExtensionRepository repository, Extension extension) { this(repository, extension.getId(), extension.getType()); setDescription(extension.getDescription()); setAuthor(extension.getAuthor()); setWebsite(extension.getWebSite()); this.dependencies.addAll(extension.getDependencies()); }
@Override public void set(Extension extension) { setName(extension.getName()); setDescription(extension.getDescription()); setAuthors(extension.getAuthors()); setWebsite(extension.getWebSite()); setLicenses(extension.getLicenses()); setSummary(extension.getSummary()); setIssueManagement(extension.getIssueManagement()); setScm(extension.getScm()); setCategory(extension.getCategory()); setExtensionFeatures(extension.getExtensionFeatures()); setAllowedNamespaces(extension.getAllowedNamespaces()); setDependencies(extension.getDependencies()); setManagedDependencies(extension.getManagedDependencies()); setRepositories(extension.getRepositories()); setProperties(extension.getProperties()); }
/** * Find of the passes extension if a webjar. * * @param extension the extension to test * @return true of the passed extension is a webjar, false otherwise * @since 9.0RC1 */ public static boolean isWebjar(Extension extension) { // Ideally webjar extensions should have "webjar" type if (extension.getType().equals(WEBJAR)) { return true; } /////////////////////////////// // But it's not the case for: // ** webjar.org releases (i.e. most of the webjars). We assume "org.webjars:*" id means it's a webjar if (StringUtils.startsWithAny(extension.getId().getId(), "org.webjars:", "org.webjars.")) { return true; } // ** contrib extensions which support version of XWiki older than 9.0RC1. We support a custom property which // does not have any effect on older versions of XWiki if (JarExtensionHandler.WEBJAR.equals(extension.getProperty(JarExtensionHandler.PROPERTY_TYPE))) { return true; } return false; }
/** * Create new extension descriptor by copying provided one. * * @param repository the repository where this extension comes from * @param extension the extension to copy */ public AbstractExtension(ExtensionRepository repository, Extension extension) { this(repository, extension.getId(), extension.getType()); set(extension); }
/** * Return the {@link ExtensionId} object that matches the passed feature id. * * @param featureId the id of the feature * @return the {@link ExtensionId} associated to the passed id * @since 8.0M1 */ default ExtensionId getExtensionFeature(String featureId) { return getFeatures().contains(featureId) ? new ExtensionId(featureId, getId().getVersion()) : null; }
document.appendChild(extensionElement); addElement(document, extensionElement, ELEMENT_ID, extension.getId().getId()); addElement(document, extensionElement, ELEMENT_VERSION, extension.getId().getVersion().getValue()); addElement(document, extensionElement, ELEMENT_TYPE, extension.getType()); addElement(document, extensionElement, ELEMENT_NAME, extension.getName()); addElement(document, extensionElement, ELEMENT_CATEGORY, extension.getCategory()); addElement(document, extensionElement, ELEMENT_SUMMARY, extension.getSummary()); addElement(document, extensionElement, ELEMENT_DESCRIPTION, extension.getDescription()); addElement(document, extensionElement, ELEMENT_WEBSITE, extension.getWebSite()); addManagedDependencies(document, extensionElement, extension); addProperties(document, extensionElement, extension.getProperties());
@Override public ExtensionId getId() { return getWrapped().getId(); }
rewrittenExtension.getId(), namespace, rewrittenExtension.getAllowedNamespaces())); || !previousExtension.getId().getId().equals(rewrittenExtension.getId().getId())) { if (namespace == null && previousExtension.getNamespaces() != null) { for (String previousNamespace : previousExtension.getNamespaces()) { Collection<? extends ExtensionDependency> dependencies = rewrittenExtension.getDependencies(); parents = ExtensionUtils.append(parents, rewrittenExtension.getId().getId()); if (rewrittenExtension.compareTo(previousExtensions.iterator().next()) < 0) { action = Action.DOWNGRADE; } else {
/** * Matches an extension in a case insensitive way. * * @param patternMatcher the pattern to match * @param filters the filters * @param extension the extension to match * @return false if one of the filter is not matching the extension * @since 7.0M2 */ public static boolean matches(Pattern patternMatcher, Collection<Filter> filters, Extension extension) { if (matches(patternMatcher, extension.getId().getId(), extension.getDescription(), extension.getSummary(), extension.getName(), ExtensionIdConverter.toStringList(extension.getExtensionFeatures()))) { for (Filter filter : filters) { if (!matches(filter, extension)) { return false; } } return true; } return false; }
private boolean checkExistingPlanNodeExtension(Extension extension, String namespace) throws InstallException { if (checkExistingPlanNodeExtension(extension.getId(), true, namespace)) { return true; } for (ExtensionId feature : extension.getExtensionFeatures()) { checkExistingPlanNodeExtension(feature, false, namespace); } return false; }
@Override public String getType() { if (this.overwrites.containsKey(Extension.FIELD_TYPE)) { return (String) this.overwrites.get(Extension.FIELD_TYPE); } return getWrapped().getType(); }
@Override public Collection<ExtensionDependency> getDependencies() { if (this.overwrites.containsKey(Extension.FIELD_DEPENDENCIES)) { return (Collection<ExtensionDependency>) this.overwrites.get(Extension.FIELD_DEPENDENCIES); } return getWrapped().getDependencies(); }
private static Integer compareTo(Extension e1, Extension e2) { // Try to find e1 id in e2 ExtensionId feature = e2.getExtensionFeature(e1.getId().getId()); if (feature != null) { return ObjectUtils.compare(e1.getId().getVersion(), feature.getVersion()); } // Try to find e1 features in e2 for (ExtensionId feature1 : e1.getExtensionFeatures()) { feature = e2.getExtensionFeature(feature1.getId()); if (feature != null) { return ObjectUtils.compare(feature1.getVersion(), feature.getVersion()); } } return null; } }
private void addAllowedNamespaces(Document document, Element parentElement, Extension extension) { Collection<String> namespaces = extension.getAllowedNamespaces(); if (namespaces != null) { Element namespacesElement = document.createElement(ELEMENT_ALLOWEDNAMESPACES); parentElement.appendChild(namespacesElement); for (String namespace : namespaces) { addElement(document, namespacesElement, ELEMENT_ANNAMESPACE, namespace); } } }
@Override public LocalExtension storeExtension(Extension extension) throws LocalExtensionRepositoryException { DefaultLocalExtension localExtension = this.extensions.get(extension.getId()); if (localExtension == null) { try { localExtension = createExtension(extension); InputStream is = extension.getFile().openStream(); FileUtils.copyInputStreamToFile(is, localExtension.getFile().getFile()); this.storage.saveDescriptor(localExtension); // Cache extension addLocalExtension(localExtension); } catch (Exception e) { // TODO: clean throw new LocalExtensionRepositoryException("Failed to save extension [" + extension + "] descriptor", e); } } else { throw new LocalExtensionRepositoryException( "Extension [" + extension + "] already exists in local repository"); } return localExtension; }
public LocalExtension installExtension(Extension extension, boolean dependency, String namespace) throws InstallException { LocalExtension localExtension = getInstalledExtension(extension.getId().getId(), namespace); if (localExtension == null || !extension.getId().getVersion().equals(localExtension.getId().getVersion()) || (localExtension.getNamespaces() != null && !localExtension.getNamespaces().contains(namespace))) { localExtension = createExtension(extension, dependency); try { extension.download(localExtension.getFile()); saveDescriptor(localExtension); addLocalExtension(localExtension, namespace); } catch (Exception e) { // TODO: clean throw new InstallException("Failed to download extension [" + extension + "]", e); } } return localExtension; }
extension.setDependencies(toAetherDependencies(mavenExtension.getDependencies(), session)); extension.setManagedDependencies(toAetherDependencies(mavenExtension.getManagedDependencies(), session));
/** * @param extension the extension * @return true if the extension is installed * @see InstalledExtension#isInstalled() */ public static boolean isInstalled(Extension extension) { return extension.getProperty(PKEY_INSTALLED, false); }
@Override public Collection<ExtensionDependency> getManagedDependencies() { if (this.overwrites.containsKey(Extension.FIELD_MANAGEDDEPENDENCIES)) { return (Collection<ExtensionDependency>) this.overwrites.get(Extension.FIELD_MANAGEDDEPENDENCIES); } return getWrapped().getManagedDependencies(); }
@Override public ExtensionRepository getRepository() { return getWrapped().getRepository(); }