You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by jv...@apache.org on 2009/02/25 21:35:44 UTC
svn commit: r747911 -
/maven/components/trunk/maven-repository/src/main/java/org/apache/maven/repository/LegacyMavenRepositorySystem.java
Author: jvanzyl
Date: Wed Feb 25 20:35:44 2009
New Revision: 747911
URL: http://svn.apache.org/viewvc?rev=747911&view=rev
Log:
o one more class to decouple which i'll leave to oleg
Modified:
maven/components/trunk/maven-repository/src/main/java/org/apache/maven/repository/LegacyMavenRepositorySystem.java
Modified: maven/components/trunk/maven-repository/src/main/java/org/apache/maven/repository/LegacyMavenRepositorySystem.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-repository/src/main/java/org/apache/maven/repository/LegacyMavenRepositorySystem.java?rev=747911&r1=747910&r2=747911&view=diff
==============================================================================
--- maven/components/trunk/maven-repository/src/main/java/org/apache/maven/repository/LegacyMavenRepositorySystem.java (original)
+++ maven/components/trunk/maven-repository/src/main/java/org/apache/maven/repository/LegacyMavenRepositorySystem.java Wed Feb 25 20:35:44 2009
@@ -23,6 +23,7 @@
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
+import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -45,15 +46,17 @@
import org.apache.maven.artifact.resolver.ArtifactResolutionRequest;
import org.apache.maven.artifact.resolver.ArtifactResolutionResult;
import org.apache.maven.artifact.resolver.ArtifactResolver;
+import org.apache.maven.artifact.resolver.filter.AndArtifactFilter;
import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
+import org.apache.maven.artifact.resolver.filter.ExcludesArtifactFilter;
import org.apache.maven.artifact.versioning.ArtifactVersion;
import org.apache.maven.artifact.versioning.InvalidVersionSpecificationException;
import org.apache.maven.artifact.versioning.VersionRange;
import org.apache.maven.model.Dependency;
+import org.apache.maven.model.Exclusion;
import org.apache.maven.model.Repository;
import org.apache.maven.model.RepositoryPolicy;
import org.apache.maven.project.artifact.InvalidDependencyVersionException;
-import org.apache.maven.project.artifact.MavenMetadataSource;
import org.apache.maven.wagon.authentication.AuthenticationInfo;
import org.apache.maven.wagon.events.TransferListener;
import org.apache.maven.wagon.proxy.ProxyInfo;
@@ -180,14 +183,88 @@
return artifactFactory.createPluginArtifact( groupId, artifactId, versionRange );
}
- public Set<Artifact> createArtifacts( List<Dependency> dependencies, String inheritedScope, ArtifactFilter dependencyFilter, MavenRepositoryWrapper project )
+ /**
+ * @return {@link Set} < {@link Artifact} >
+ * @todo desperately needs refactoring. It's just here because it's implementation is maven-project specific
+ */
+ public Set<Artifact> createArtifacts( List<Dependency> dependencies, String inheritedScope, ArtifactFilter dependencyFilter, MavenRepositoryWrapper reactor )
throws InvalidDependencyVersionException
{
- return MavenMetadataSource.createArtifacts( artifactFactory, dependencies, inheritedScope, dependencyFilter, project );
- }
+ Set<Artifact> projectArtifacts = new LinkedHashSet<Artifact>( dependencies.size() );
+
+ for ( Iterator<Dependency> i = dependencies.iterator(); i.hasNext(); )
+ {
+ Dependency d = i.next();
+
+ String scope = d.getScope();
+
+ if ( StringUtils.isEmpty( scope ) )
+ {
+ scope = Artifact.SCOPE_COMPILE;
+
+ d.setScope( scope );
+ }
+
+ VersionRange versionRange;
+ try
+ {
+ versionRange = VersionRange.createFromVersionSpec( d.getVersion() );
+ }
+ catch ( InvalidVersionSpecificationException e )
+ {
+ throw new InvalidDependencyVersionException( reactor.getId(), d, reactor.getFile(), e );
+ }
+ Artifact artifact = artifactFactory.createDependencyArtifact( d.getGroupId(), d.getArtifactId(),
+ versionRange, d.getType(), d.getClassifier(),
+ scope, inheritedScope, d.isOptional() );
+
+ if ( Artifact.SCOPE_SYSTEM.equals( scope ) )
+ {
+ artifact.setFile( new File( d.getSystemPath() ) );
+ }
+
+ ArtifactFilter artifactFilter = dependencyFilter;
- //
+ if ( ( artifact != null ) && ( ( artifactFilter == null ) || artifactFilter.include( artifact ) ) )
+ {
+ if ( ( d.getExclusions() != null ) && !d.getExclusions().isEmpty() )
+ {
+ List<String> exclusions = new ArrayList<String>();
+ for ( Iterator<Exclusion> j = d.getExclusions().iterator(); j.hasNext(); )
+ {
+ Exclusion e = j.next();
+ exclusions.add( e.getGroupId() + ":" + e.getArtifactId() );
+ }
+
+ ArtifactFilter newFilter = new ExcludesArtifactFilter( exclusions );
+ if ( artifactFilter != null )
+ {
+ AndArtifactFilter filter = new AndArtifactFilter();
+ filter.add( artifactFilter );
+ filter.add( newFilter );
+ artifactFilter = filter;
+ }
+ else
+ {
+ artifactFilter = newFilter;
+ }
+ }
+
+ artifact.setDependencyFilter( artifactFilter );
+
+ if ( reactor != null )
+ {
+ artifact = reactor.find( artifact );
+ }
+
+ projectArtifacts.add( artifact );
+ }
+ }
+
+ return projectArtifacts;
+ }
+
public List<ArtifactVersion> retrieveAvailableVersions( Artifact artifact, ArtifactRepository localRepository, List<ArtifactRepository> remoteRepositories )
throws ArtifactMetadataRetrievalException
{