@Override public Set<File> getResources() { resolveResources(builder); return builder.getResources(); }
public static AddonInfoBuilder from(AddonId addonId) { AddonInfoBuilder builder = new AddonInfoBuilder(addonId); return builder; }
protected boolean isExcluded(Dependency dependency) { boolean result = isExcludedFromParent(dependency); if (!result && parentSelector != null) { result = parentSelector.isExcluded(dependency); } return result; }
AddonInfoBuilder builder = AddonInfoBuilder.from(addonId); try ArtifactDescriptorResult result = readArtifactDescriptor(addonId); AddonId furnaceContainerId = null; for (Dependency dependency : result.getDependencies()) if (isFurnaceAPI(artifact)) builder.setAPIVersion(apiVersion); else if (isAddon(artifact)) AddonId childId = toAddonId(artifact); if (isFurnaceContainer(artifact)) boolean exported = isExported(scope); boolean optional = dependency.isOptional(); if (optional) builder.addOptionalDependency(childId, exported); builder.addRequiredDependency(childId, exported); org.jboss.forge.furnace.versions.Version addonAPIVersion = builder.getAddon().getApiVersion(); if (resolveAddonAPIVersions && (addonAPIVersion == null || EmptyVersion.getInstance().equals(addonAPIVersion))) ArtifactDescriptorResult containerDescriptor = readArtifactDescriptor(furnaceContainerId); apiVersion = findDependencyVersion(containerDescriptor.getDependencies(), FURNACE_API_GROUP_ID,
Settings settings = getSettings(); DefaultRepositorySystemSession session = container.setupRepoSession(system, settings); final String mavenCoords = toMavenCoords(addonId); Artifact queryArtifact = new DefaultArtifact(mavenCoords); session.setDependencyTraverser(new AddonDependencyTraverser(classifier)); session.setDependencySelector(new AddonDependencySelector(classifier)); Dependency dependency = new Dependency(queryArtifact, null); if (isFurnaceAPI(artifact) || (this.classifier.equals(artifact.getClassifier()) && !addonId.getName().equals(artifact.getGroupId() + ":" + artifact.getArtifactId())))
String mavenCoords = toMavenCoords(addonId); Artifact queryArtifact = new DefaultArtifact(mavenCoords); session.setDependencyTraverser(new AddonDependencyTraverser(classifier)); session.setDependencySelector(new DependencySelector() String apiVersion = findVersion(result.getRoot().getChildren(), FURNACE_API_GROUP_ID, FURNACE_API_ARTIFACT_ID); return new MavenResponseBuilder<String>(apiVersion).setExceptions(exceptions);
@Override public Response<String> resolveAPIVersion(AddonId addonId) { RepositorySystem system = container.getRepositorySystem(); Settings settings = getSettings(); DefaultRepositorySystemSession session = container.setupRepoSession(system, settings); return resolveAPIVersion(addonId, system, settings, session); }
public void resolveResources(AddonInfoBuilder addonInfo) { AddonId addon = addonInfo.getAddon(); Response<File[]> resources = resolver.resolveResources(addon); for (File resource : resources.get()) { addonInfo.addResource(resource); } } }
private ArtifactDescriptorResult readArtifactDescriptor(AddonId addonId) throws ArtifactDescriptorException { String coords = toMavenCoords(addonId); RepositorySystem system = container.getRepositorySystem(); Settings settings = getSettings(); DefaultRepositorySystemSession session = container.setupRepoSession(system, settings); List<RemoteRepository> repositories = MavenRepositories.getRemoteRepositories(container, settings); ArtifactDescriptorRequest request = new ArtifactDescriptorRequest(); request.setArtifact(new DefaultArtifact(coords)); request.setRepositories(repositories); ArtifactDescriptorResult result = system.readArtifactDescriptor(session, request); return result; }
@Override public Set<AddonDependencyEntry> getDependencyEntries() { return builder.getDependencyEntries(); }
@Override public Set<AddonId> getRequiredAddons() { return builder.getRequiredAddons(); }
@Override public Set<AddonId> getOptionalAddons() { return builder.getOptionalAddons(); }
@Override public AddonId getAddon() { return builder.getAddon(); }
@Override public boolean equals(Object obj) { return builder.equals(obj); }
@Override public int hashCode() { return builder.hashCode(); }
@Override public String toString() { return builder.toString(); }
@Override public boolean selectDependency(Dependency dependency) { boolean result = false; if (!isExcluded(dependency)) { boolean module = this.classifier.equals(dependency.getArtifact().getClassifier()); String scope = dependency.getScope(); if (dependency.isOptional() && depth > 1) result = false; else if ("test".equals(scope)) result = false; else result = (module && depth == 1) || (!module && !"provided".equals(scope)); } return result; }
private AddonId toAddonId(Artifact artifact) { if (isAddon(artifact)) { return AddonId.from(artifact.getGroupId() + ":" + artifact.getArtifactId(), artifact.getBaseVersion()); } throw new IllegalArgumentException("Not a forge-addon: " + artifact); }
private String findVersion(List<DependencyNode> dependencies, String groupId, String artifactId) { for (DependencyNode child : dependencies) { Artifact childArtifact = child.getArtifact(); if (groupId.equals(childArtifact.getGroupId()) && artifactId.equals(childArtifact.getArtifactId())) { return childArtifact.getBaseVersion(); } else { String version = findVersion(child.getChildren(), groupId, artifactId); if (version != null) { return version; } } } return null; }
@Override public DependencySelector deriveChildSelector(DependencyCollectionContext context) { boolean module = this.classifier.equals(context.getDependency().getArtifact().getClassifier()); if ((depth > 0) && module) { return new StaticDependencySelector(false); } return new AddonDependencySelector(this, context.getDependency(), this.classifier, depth + 1); }