public void addDependency(Artifact artifact, ImportType importType) { this.dependencies.add(new Dependency(artifact, importType)); }
private static Dependency toDependency(DependencyType dependencyType) { Artifact artifact = toArtifact(dependencyType, null); if (ImportType.CLASSES.equals(dependencyType.getImport())) { return new Dependency(artifact, org.apache.geronimo.kernel.repository.ImportType.CLASSES); } else if (ImportType.SERVICES.equals(dependencyType.getImport())) { return new Dependency(artifact, org.apache.geronimo.kernel.repository.ImportType.SERVICES); } else if (dependencyType.getImport() == null) { return new Dependency(artifact, org.apache.geronimo.kernel.repository.ImportType.ALL); } else { throw new IllegalArgumentException("Unknown import type: " + dependencyType.getImport()); } }
private ArrayList getChildDependencies(Dependency dependency) { ArrayList childDependencies = new ArrayList(); for (Iterator repositoryIterator = repositories.iterator(); repositoryIterator.hasNext();) { Repository repository = (Repository) repositoryIterator.next(); if (repository.contains(dependency.getArtifact())) { // get the child artifacts LinkedHashSet childArtifacts = repository.getDependencies(dependency.getArtifact()); for (Iterator artifactIterator = childArtifacts.iterator(); artifactIterator.hasNext();) { Artifact artifact = (Artifact) artifactIterator.next(); // add each child as a classes-only dependency childDependencies.add(new Dependency(artifact, ImportType.CLASSES)); } } } return childDependencies; } }
private static Dependency toDependency(DependencyType dependencyType) { Artifact artifact = toArtifact(dependencyType, null); if (ImportType.CLASSES.equals(dependencyType.getImport())) { return new Dependency(artifact, org.apache.geronimo.kernel.repository.ImportType.CLASSES); } else if (ImportType.SERVICES.equals(dependencyType.getImport())) { return new Dependency(artifact, org.apache.geronimo.kernel.repository.ImportType.SERVICES); } else if (dependencyType.getImport() == null) { return new Dependency(artifact, org.apache.geronimo.kernel.repository.ImportType.ALL); } else { throw new IllegalArgumentException("Unknown import type: " + dependencyType.getImport()); } }
private LinkedHashSet<Artifact> resolveParentIds(ConfigurationData configurationData) throws MissingDependencyException, InvalidConfigException { Environment environment = configurationData.getEnvironment(); LinkedHashSet<Artifact> parentIds = new LinkedHashSet<Artifact>(); List<Dependency> dependencies = new ArrayList<Dependency>(environment.getDependencies()); for (ListIterator<Dependency> iterator = dependencies.listIterator(); iterator.hasNext();) { Dependency dependency = iterator.next(); Artifact resolvedArtifact = artifactResolver.resolveInClassLoader(dependency.getArtifact()); if (isConfiguration(resolvedArtifact)) { parentIds.add(resolvedArtifact); // update the dependency list to contain the resolved artifact dependency = new Dependency(resolvedArtifact, dependency.getImportType()); iterator.set(dependency); } else if (dependency.getImportType() == ImportType.SERVICES) { // Service depdendencies require that the depdencency be a configuration throw new InvalidConfigException("Dependency does not have services: " + resolvedArtifact); } } for (Iterator iterator = configurationData.getChildConfigurations().values().iterator(); iterator.hasNext();) { ConfigurationData childConfigurationData = (ConfigurationData) iterator.next(); LinkedHashSet<Artifact> childParentIds = resolveParentIds(childConfigurationData); // remove this configuration's id from the parent Ids since it will cause an infinite loop childParentIds.remove(configurationData.getId()); parentIds.addAll(childParentIds); } return parentIds; }
private List<Dependency> getMissingPrerequisites(PluginType plugin) { if (plugin.getPluginArtifact().size() != 1) { throw new IllegalArgumentException("A plugin configuration must include one plugin artifact, not " + plugin.getPluginArtifact().size()); } PluginArtifactType metadata = plugin.getPluginArtifact().get(0); List<PrerequisiteType> prereqs = metadata.getPrerequisite(); ArrayList<Dependency> missingPrereqs = new ArrayList<Dependency>(); for (PrerequisiteType prereq : prereqs) { Artifact artifact = toArtifact(prereq.getId()); try { if (getServerInstance("default", servers).getArtifactResolver().queryArtifacts(artifact).length == 0) { missingPrereqs.add(new Dependency(artifact, ImportType.ALL)); } } catch (NoServerInstanceException e) { throw new RuntimeException("Invalid setup, no default server instance registered"); } } return missingPrereqs; }
private Dependency resolveDependency(Collection parents, Dependency dependency, Stack<Dependency> parentStack) throws MissingDependencyException { Artifact artifact = dependency.getArtifact(); // if it is already resolved we are done if (artifact.isResolved()) { return dependency; } // we need an artifact resolver at this point if (artifactResolver == null) { throw new MissingDependencyException("Artifact is not resolved and there no artifact resolver available: " + artifact); } // resolve the artifact try { artifact = artifactResolver.resolveInClassLoader(artifact, parents); } catch (MissingDependencyException e) { // I'm throwing away the original error as the new message is lost on the stack as // most folks will drill down to the message on the bottom of the stack. StringBuffer sb = new StringBuffer(); sb.append(e.getMessage().trim()+"\n"+" Parent stack:\n"); boolean first = true; for (Dependency d : parentStack) { sb.append(" "+d.getArtifact().toString().trim()+(first?" (top)":"")+"\n"); first = false; } throw new MissingDependencyException(sb.toString()); } // build a new dependency object to contain the resolved artifact Dependency resolvedDependency = new Dependency(artifact, dependency.getImportType()); return resolvedDependency; }
configurationData.getEnvironment().addDependency(new Dependency(ACTIVEMQ_ARTIFACT, ImportType.ALL));