org.apache.geronimo.genesis.dependency.DependencyHelper Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of plugin-support Show documentation
Show all versions of plugin-support Show documentation
Provides common support classes used by plugins.
The newest version!
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.geronimo.genesis.dependency;
import java.util.Map;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import org.apache.maven.artifact.metadata.ArtifactMetadataSource;
import org.apache.maven.artifact.resolver.ArtifactCollector;
import org.apache.maven.artifact.resolver.ArtifactResolver;
import org.apache.maven.artifact.resolver.ArtifactResolutionException;
import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.artifact.repository.ArtifactRepositoryFactory;
import org.apache.maven.artifact.factory.ArtifactFactory;
import org.apache.maven.artifact.versioning.VersionRange;
import org.apache.maven.artifact.versioning.InvalidVersionSpecificationException;
import org.apache.maven.artifact.Artifact;
import org.apache.maven.project.MavenProject;
import org.apache.maven.project.ProjectBuildingException;
import org.apache.maven.project.artifact.InvalidDependencyVersionException;
import org.apache.maven.model.DependencyManagement;
import org.apache.maven.model.Dependency;
import org.codehaus.plexus.PlexusContainer;
import org.codehaus.plexus.PlexusConstants;
import org.codehaus.plexus.context.Context;
import org.codehaus.plexus.context.ContextException;
import org.codehaus.plexus.personality.plexus.lifecycle.phase.Contextualizable;
/**
* ???
*
* @version $Rev: 454266 $ $Date: 2006-10-08 20:20:03 -0700 (Sun, 08 Oct 2006) $
*/
public class DependencyHelper
implements Contextualizable
{
private ArtifactRepositoryFactory artifactRepositoryFactory = null;
private ArtifactMetadataSource artifactMetadataSource = null;
private ArtifactCollector artifactCollector = null;
private ArtifactFactory artifactFactory = null;
private ArtifactResolver artifactResolver = null;
private PlexusContainer container;
private ArtifactRepository repository;
//
// TODO: Figure out how to get ${localRepository} injected so we don't need it passed in.
//
public void setArtifactRepository(final ArtifactRepository repository) {
this.repository = repository;
}
private ArtifactRepository getArtifactRepository() {
if (repository == null) {
throw new IllegalStateException("Not initialized; missing ArtifactRepository");
}
return repository;
}
public DependencyTree getDependencies(final MavenProject project)
throws ProjectBuildingException, InvalidDependencyVersionException, ArtifactResolutionException
{
assert project != null;
Map managedVersions = getManagedVersionMap(project, artifactFactory);
DependencyResolutionListener listener = new DependencyResolutionListener();
if (project.getDependencyArtifacts() == null) {
project.setDependencyArtifacts(project.createArtifacts(artifactFactory, null, null));
}
artifactCollector.collect(
project.getDependencyArtifacts(),
project.getArtifact(),
managedVersions,
getArtifactRepository(),
project.getRemoteArtifactRepositories(),
artifactMetadataSource,
null,
Collections.singletonList(listener));
return listener.getDependencyTree();
}
public static Map getManagedVersionMap(final MavenProject project, final ArtifactFactory factory) throws ProjectBuildingException {
assert project != null;
assert factory != null;
DependencyManagement dependencyManagement = project.getDependencyManagement();
Map managedVersionMap;
if (dependencyManagement != null && dependencyManagement.getDependencies() != null) {
managedVersionMap = new HashMap();
Iterator iter = dependencyManagement.getDependencies().iterator();
while (iter.hasNext()) {
Dependency d = (Dependency) iter.next();
try {
VersionRange versionRange = VersionRange.createFromVersionSpec(d.getVersion());
Artifact artifact = factory.createDependencyArtifact(
d.getGroupId(),
d.getArtifactId(),
versionRange,
d.getType(),
d.getClassifier(),
d.getScope());
managedVersionMap.put(d.getManagementKey(), artifact);
}
catch (InvalidVersionSpecificationException e) {
throw new ProjectBuildingException(project.getId(),
"Unable to parse version '" + d.getVersion() +
"' for dependency '" + d.getManagementKey() + "': " + e.getMessage(), e);
}
}
}
else {
managedVersionMap = Collections.EMPTY_MAP;
}
return managedVersionMap;
}
//
// Contextualizable
//
public void contextualize(final Context context) throws ContextException {
container = (PlexusContainer) context.get(PlexusConstants.PLEXUS_KEY);
}
//
// Component Access
//
public ArtifactResolver getArtifactResolver() {
return artifactResolver;
}
public ArtifactRepositoryFactory getArtifactRepositoryFactory() {
return artifactRepositoryFactory;
}
public ArtifactMetadataSource getArtifactMetadataSource() {
return artifactMetadataSource;
}
public ArtifactCollector getArtifactCollector() {
return artifactCollector;
}
public ArtifactFactory getArtifactFactory() {
return artifactFactory;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy