/** * Default constructor. */ public DefaultCoreExtensionRepository() { super(new DefaultExtensionRepositoryDescriptor("core", "xwiki-core", null)); }
@Override public int hashCode() { if (this.hashCode == 0) { HashCodeBuilder builder = new HashCodeBuilder(); builder.append(getId()); builder.append(getType()); builder.append(getURI()); builder.append(getProperties()); this.hashCode = builder.toHashCode(); } return this.hashCode; }
/** * @param descriptor the repository descriptor to update with custom properties */ private void setRepositoryProperties(DefaultExtensionRepositoryDescriptor descriptor) { String id = descriptor.getId(); String prefix = CK_REPOSITORIES_PREFIX + id + '.'; ConfigurationSource configurationSource = this.configuration.get(); for (String key : configurationSource.getKeys()) { if (key.startsWith(prefix)) { descriptor.putProperty(key.substring(prefix.length()), configurationSource.getProperty(key, String.class)); } } }
/** * @param descriptor the identifier to clone */ public DefaultExtensionRepositoryDescriptor(ExtensionRepositoryDescriptor descriptor) { this(descriptor.getId(), descriptor.getType(), descriptor.getURI()); setProperties(descriptor.getProperties()); }
@Override public boolean equals(Object obj) { if (obj instanceof ExtensionRepositoryDescriptor) { ExtensionRepositoryDescriptor repository = (ExtensionRepositoryDescriptor) obj; return Objects.equal(getId(), repository.getId()) && Objects.equal(getType(), repository.getType()) && Objects.equal(getURI(), repository.getURI()) && Objects.equal(getProperties(), repository.getProperties()); } return false; }
/** * Store and return a weak reference equals to the passed {@link ExtensionRepositoryDescriptor} elements. * * @param id the unique identifier * @param type the repository type (maven, xwiki, etc.) * @param uri the repository address * @return unique instance of {@link ExtensionRepositoryDescriptor} equals to the passed one */ public ExtensionRepositoryDescriptor getExtensionRepositoryDescriptor(String id, String type, URI uri) { return getExtensionRepositoryDescriptor(new DefaultExtensionRepositoryDescriptor(id, type, uri)); }
@Override public Collection<ExtensionRepositoryDescriptor> getExtensionRepositoryDescriptors() { Collection<ExtensionRepositoryDescriptor> configuredRepositories = this.configuration.getExtensionRepositoryDescriptors(); Collection<ExtensionRepositoryDescriptor> repositories = new ArrayList<>(); if (configuredRepositories == null) { try { repositories.add(new DefaultExtensionRepositoryDescriptor("maven-xwiki", "maven", new URI("http://nexus.xwiki.org/nexus/content/groups/public"))); } catch (URISyntaxException e) { // Should never happen return Collections.emptyList(); } } return repositories; } }
@Override public void initialize() throws InitializationException { // Set descriptor setDescriptor(new DefaultExtensionRepositoryDescriptor(ID)); // Filter recommended extensions addFilter(RemoteExtension.FIELD_RECOMMENDED, true, COMPARISON.EQUAL); } }
@Override public void initialize() throws InitializationException { // Set descriptor setDescriptor(new DefaultExtensionRepositoryDescriptor("remote")); // Load default extension repositories for (ExtensionRepositorySource repositoriesSource : this.repositoriesSources) { for (ExtensionRepositoryDescriptor repositoryDescriptor : repositoriesSource .getExtensionRepositoryDescriptors()) { try { addRepository(repositoryDescriptor, repositoriesSource.getPriority()); } catch (ExtensionRepositoryException e) { this.logger.error("Failed to add repository [" + repositoryDescriptor + "]", e); } } } }
@Override public void initialize() throws InitializationException { try { this.storage = new LocalExtensionStorage(this, this.configuration.getLocalRepository(), this.componentManager); } catch (ComponentLookupException e) { throw new InitializationException("Failed to intialize local extension storage", e); } setDescriptor(new DefaultExtensionRepositoryDescriptor(ID, ID, this.storage.getRootFolder().toURI())); try { this.storage.loadExtensions(); } catch (IOException e) { throw new InitializationException("Failed to load load etensions", e); } }
@Override public void initialize() throws InitializationException { setDescriptor(new DefaultExtensionRepositoryDescriptor("installed", "installed", this.localRepository.getDescriptor().getURI())); // Wait for all installed extension to be registered // before calculating backward dependencies this.updateBackwardDependencies = false; // Get installed extensions from local repository this.localInstalledExtensionsCache = new HashMap<>(); for (LocalExtension localExtension : this.localRepository.getLocalExtensions()) { if (DefaultInstalledExtension.isInstalled(localExtension)) { getInstalledLocalExtension(localExtension); } } // Validate installed extensions validate(); // Update backward dependencies updateMissingBackwardDependencies(); // Put back backdependencies update for each extension add this.updateBackwardDependencies = true; // Reset temporary cache this.localInstalledExtensionsCache = null; }