private void addDependencies(Document document, Element parentElement, String fieldName, Collection<ExtensionDependency> dependencies) { if (dependencies != null && !dependencies.isEmpty()) { Element dependenciesElement = document.createElement(fieldName); parentElement.appendChild(dependenciesElement); for (ExtensionDependency dependency : dependencies) { Element dependencyElement = document.createElement(ELEMENT_DDEPENDENCY); dependenciesElement.appendChild(dependencyElement); addElement(document, dependencyElement, ELEMENT_ID, dependency.getId()); addElement(document, dependencyElement, ELEMENT_VERSION, dependency.getVersionConstraint().getValue()); addElement(document, dependencyElement, ELEMENT_DDOPTIONAL, dependency.isOptional()); addProperties(document, dependencyElement, dependency.getProperties()); } } }
@Override public boolean equals(Object obj) { if (this == obj) { return true; } boolean equals; if (obj instanceof ExtensionDependency) { ExtensionDependency otherDependency = (ExtensionDependency) obj; EqualsBuilder builder = new EqualsBuilder(); builder.append(getId(), otherDependency.getId()); builder.append(getVersionConstraint(), otherDependency.getVersionConstraint()); builder.append(isOptional(), otherDependency.isOptional()); builder.append(getRepositories(), otherDependency.getRepositories()); builder.append(getProperties(), otherDependency.getProperties()); equals = builder.isEquals(); } else { equals = false; } return equals; } }
/** * Create new instance by cloning the provided one with different version constraint. * * @param dependency the extension dependency to copy * @param versionConstraint the version constraint to set */ public AbstractExtensionDependency(ExtensionDependency dependency, VersionConstraint versionConstraint) { this(dependency.getId(), versionConstraint != null ? versionConstraint : dependency.getVersionConstraint(), dependency.isOptional(), dependency.getProperties()); setRepositories(dependency.getRepositories()); }
/** * @param dependency the initial dependency * @param configuration the configuration * @param factory the factory * @return the modified {@link ExtensionDependency} or null if it does not match any recommended dependency or the * found recommendation is already equals to the passed one * @since 9.6 */ public static ExtensionDependency getRecommendedDependency(ExtensionDependency dependency, ExtensionManagerConfiguration configuration, ExtensionFactory factory) { VersionConstraint recommendedVersionConstraint = configuration.getRecomendedVersionConstraint(dependency.getId(), dependency.getVersionConstraint()); if (recommendedVersionConstraint != null) { try { recommendedVersionConstraint = dependency.getVersionConstraint().merge(recommendedVersionConstraint); return factory.getExtensionDependency(dependency.getId(), recommendedVersionConstraint, dependency.isOptional(), dependency.getProperties()); } catch (IncompatibleVersionConstraintException e) { // Not compatible, don't use the recommended version } } return null; }