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 2008/05/22 07:15:04 UTC

svn commit: r659009 [2/2] - in /maven/artifact/branches/CAP: ./ src/main/java/org/apache/maven/artifact/ src/main/java/org/apache/maven/artifact/manager/ src/main/java/org/apache/maven/artifact/repository/ src/main/java/org/apache/maven/artifact/reposi...

Modified: maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/ArtifactResolver.java
URL: http://svn.apache.org/viewvc/maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/ArtifactResolver.java?rev=659009&r1=659008&r2=659009&view=diff
==============================================================================
--- maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/ArtifactResolver.java (original)
+++ maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/ArtifactResolver.java Wed May 21 22:15:02 2008
@@ -23,6 +23,7 @@
 import org.apache.maven.artifact.metadata.ArtifactMetadataSource;
 import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
+import org.apache.maven.artifact.resolver.conflict.ConflictResolver;
 
 import java.util.List;
 import java.util.Map;
@@ -48,79 +49,79 @@
         throws ArtifactResolutionException, ArtifactNotFoundException;
 
     /** @deprecated use {@link #resolve(ArtifactResolutionRequest)} */
-    ArtifactResolutionResult resolveTransitively( Set artifacts,
+    ArtifactResolutionResult resolveTransitively( Set<Artifact> artifacts,
                                                   Artifact originatingArtifact,
-                                                  List remoteRepositories,
+                                                  List<ArtifactRepository> remoteRepositories,
                                                   ArtifactRepository localRepository,
                                                   ArtifactMetadataSource source )
         throws ArtifactResolutionException, ArtifactNotFoundException;
 
     /** @deprecated use {@link #resolve(ArtifactResolutionRequest)} */
-    ArtifactResolutionResult resolveTransitively( Set artifacts,
+    ArtifactResolutionResult resolveTransitively( Set<Artifact> artifacts,
                                                   Artifact originatingArtifact,
-                                                  List remoteRepositories,
+                                                  List<ArtifactRepository> remoteRepositories,
                                                   ArtifactRepository localRepository,
                                                   ArtifactMetadataSource source,
-                                                  List listeners )
+                                                  List<ResolutionListener> listeners )
         throws ArtifactResolutionException, ArtifactNotFoundException;
 
     /** @deprecated use {@link #resolve(ArtifactResolutionRequest)} */
-    ArtifactResolutionResult resolveTransitively( Set artifacts,
+    ArtifactResolutionResult resolveTransitively( Set<Artifact> artifacts,
                                                   Artifact originatingArtifact,
                                                   ArtifactRepository localRepository,
-                                                  List remoteRepositories,
+                                                  List<ArtifactRepository> remoteRepositories,
                                                   ArtifactMetadataSource source,
                                                   ArtifactFilter filter )
         throws ArtifactResolutionException, ArtifactNotFoundException;
 
     /** @deprecated use {@link #resolve(ArtifactResolutionRequest)} */
-    ArtifactResolutionResult resolveTransitively( Set artifacts,
+    ArtifactResolutionResult resolveTransitively( Set<Artifact> artifacts,
                                                   Artifact originatingArtifact,
                                                   Map managedVersions,
                                                   ArtifactRepository localRepository,
-                                                  List remoteRepositories,
+                                                  List<ArtifactRepository> remoteRepositories,
                                                   ArtifactMetadataSource source )
         throws ArtifactResolutionException, ArtifactNotFoundException;
 
     /** @deprecated use {@link #resolve(ArtifactResolutionRequest)} */
-    ArtifactResolutionResult resolveTransitively( Set artifacts,
+    ArtifactResolutionResult resolveTransitively( Set<Artifact> artifacts,
                                                   Artifact originatingArtifact,
                                                   Map managedVersions,
                                                   ArtifactRepository localRepository,
-                                                  List remoteRepositories,
+                                                  List<ArtifactRepository> remoteRepositories,
                                                   ArtifactMetadataSource source,
                                                   ArtifactFilter filter )
         throws ArtifactResolutionException, ArtifactNotFoundException;
 
     /** @deprecated use {@link #resolve(ArtifactResolutionRequest)} */
-    ArtifactResolutionResult resolveTransitively( Set artifacts,
+    ArtifactResolutionResult resolveTransitively( Set<Artifact> artifacts,
                                                   Artifact originatingArtifact,
                                                   Map managedVersions,
                                                   ArtifactRepository localRepository,
-                                                  List remoteRepositories,
+                                                  List<ArtifactRepository> remoteRepositories,
                                                   ArtifactMetadataSource source,
                                                   ArtifactFilter filter,
-                                                  List listeners )
+                                                  List<ResolutionListener> listeners )
         throws ArtifactResolutionException, ArtifactNotFoundException;
 
     /**
      * @since 3.0
      * @deprecated use {@link #resolve(ArtifactResolutionRequest)}
      */
-    ArtifactResolutionResult resolveTransitively( Set artifacts,
+    ArtifactResolutionResult resolveTransitively( Set<Artifact> artifacts,
                                                   Artifact originatingArtifact,
                                                   Map managedVersions,
                                                   ArtifactRepository localRepository,
-                                                  List remoteRepositories,
+                                                  List<ArtifactRepository> remoteRepositories,
                                                   ArtifactMetadataSource source,
                                                   ArtifactFilter filter,
-                                                  List listeners,
-                                                  List conflictResolvers )
+                                                  List<ResolutionListener> listeners,
+                                                  List<ConflictResolver> conflictResolvers )
         throws ArtifactResolutionException, ArtifactNotFoundException;
 
     /** @deprecated use {@link #resolve(ArtifactResolutionRequest)} */
     void resolveAlways( Artifact artifact,
-                        List remoteRepositories,
+                        List<ArtifactRepository> remoteRepositories,
                         ArtifactRepository localRepository )
         throws ArtifactResolutionException, ArtifactNotFoundException;
 

Modified: maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/DebugResolutionListener.java
URL: http://svn.apache.org/viewvc/maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/DebugResolutionListener.java?rev=659009&r1=659008&r2=659009&view=diff
==============================================================================
--- maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/DebugResolutionListener.java (original)
+++ maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/DebugResolutionListener.java Wed May 21 22:15:02 2008
@@ -40,7 +40,7 @@
 
     private String indent = "";
 
-    private static Set ignoredArtifacts = new HashSet();
+    private static Set<Artifact> ignoredArtifacts = new HashSet<Artifact>();
 
     public DebugResolutionListener( Logger logger )
     {

Modified: maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/ResolutionNode.java
URL: http://svn.apache.org/viewvc/maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/ResolutionNode.java?rev=659009&r1=659008&r2=659009&view=diff
==============================================================================
--- maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/ResolutionNode.java (original)
+++ maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/ResolutionNode.java Wed May 21 22:15:02 2008
@@ -20,7 +20,9 @@
  */
 
 import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
+import org.apache.maven.artifact.versioning.ArtifactVersion;
 import org.apache.maven.artifact.versioning.OverConstrainedVersionException;
 
 import java.util.ArrayList;
@@ -34,9 +36,9 @@
 {
     private final Artifact artifact;
 
-    private List children;
+    private List<ResolutionNode> children;
 
-    private final List parents;
+    private final List<Object> parents;
 
     private final int depth;
 
@@ -46,16 +48,16 @@
 
     private boolean active = true;
 
-    private List trail;
+    private List<Artifact> trail;
 
     public ResolutionNode( Artifact artifact,
                            List remoteRepositories )
     {
         this.artifact = artifact;
         this.remoteRepositories = remoteRepositories;
-        this.depth = 0;
-        this.parents = Collections.EMPTY_LIST;
-        this.parent = null;
+        depth = 0;
+        parents = Collections.emptyList();
+        parent = null;
     }
 
     public ResolutionNode( Artifact artifact,
@@ -64,13 +66,13 @@
     {
         this.artifact = artifact;
         this.remoteRepositories = remoteRepositories;
-        this.depth = parent.depth + 1;
-        this.parents = new ArrayList();
-        this.parents.addAll( parent.parents );
-        this.parents.add( parent.getKey() );
+        depth = parent.depth + 1;
+        parents = new ArrayList<Object>();
+        parents.addAll( parent.parents );
+        parents.add( parent.getKey() );
         this.parent = parent;
     }
-    
+
     public Artifact getArtifact()
     {
         return artifact;
@@ -81,56 +83,56 @@
         return artifact.getDependencyConflictId();
     }
 
-    public void addDependencies( Set artifacts,
-                                 List remoteRepositories,
+    public void addDependencies( Set<Artifact> artifacts,
+                                 List<ArtifactRepository> remoteRepositories,
                                  ArtifactFilter filter )
         throws CyclicDependencyException, OverConstrainedVersionException
     {
         if ( !artifacts.isEmpty() )
         {
-            children = new ArrayList( artifacts.size() );
-
-            for ( Iterator i = artifacts.iterator(); i.hasNext(); )
-            {
-                Artifact a = (Artifact) i.next();
+            children = new ArrayList<ResolutionNode>( artifacts.size() );
 
-                if ( parents.contains( a.getDependencyConflictId() ) )
-                {
-                    a.setDependencyTrail( getDependencyTrail() );
+            for (Artifact a : artifacts) {
+                if (parents.contains(a.getDependencyConflictId())) {
+                    a.setDependencyTrail(getDependencyTrail());
 
-                    throw new CyclicDependencyException( "A dependency has introduced a cycle", a );
+                    throw new CyclicDependencyException("A dependency has introduced a cycle", a);
                 }
 
-                children.add( new ResolutionNode( a, remoteRepositories, this ) );
+                children.add(new ResolutionNode(a, remoteRepositories, this));
             }
         }
         else
         {
-            children = Collections.EMPTY_LIST;
+            children = Collections.emptyList();
         }
         trail = null;
     }
 
-    public List getDependencyTrail()
+    /**
+     * @return {@link List} &lt; {@link String} > with artifact ids
+     * @throws OverConstrainedVersionException
+     */
+    public List<String> getDependencyTrail()
         throws OverConstrainedVersionException
     {
-        List trial = getTrail();
+        List<Artifact> trial = getTrail();
 
-        List ret = new ArrayList( trial.size() );
-        for ( Iterator i = trial.iterator(); i.hasNext(); )
-        {
-            Artifact artifact = (Artifact) i.next();
-            ret.add( artifact.getId() );
+        List<String> ret = new ArrayList<String>( trial.size() );
+        
+        for (Artifact artifact : trial) {
+            ret.add(artifact.getId());
         }
+
         return ret;
     }
 
-    private List getTrail()
+    private List<Artifact> getTrail()
         throws OverConstrainedVersionException
     {
         if ( trail == null )
         {
-            List ids = new LinkedList();
+            List<Artifact> ids = new LinkedList<Artifact>();
             ResolutionNode node = this;
             while ( node != null )
             {
@@ -138,8 +140,17 @@
                 if ( artifact.getVersion() == null )
                 {
                     // set the recommended version
-                    String version = artifact.getSelectedVersion().toString();
-                    artifact.selectVersion( version );
+                    ArtifactVersion selected = artifact.getSelectedVersion();
+                    //MNG-2123: null is a valid response to getSelectedVersion, don't
+                    //assume it won't ever be.
+                    if (selected != null)
+                    {
+                        artifact.selectVersion( selected.toString() );
+                    }
+                    else
+                    {
+                        throw new OverConstrainedVersionException("Unable to get a selected Version for "+ artifact.getArtifactId(),artifact);
+                    }
                 }
 
                 ids.add( 0, artifact );
@@ -156,8 +167,7 @@
     }
 
     /**
-     * test whether the node is direct or transitive dependency.
-     * @return
+     * Test whether the node is direct or transitive dependency.
      */
     public boolean isChildOfRootNode()
     {
@@ -186,13 +196,12 @@
 
     public void enable()
     {
-        this.active = true;
+        active = true;
+
         // TODO: if it was null, we really need to go find them now... or is this taken care of by the ordering?
         if ( children != null )
         {
-            for ( Iterator i = children.iterator(); i.hasNext(); )
-            {
-                ResolutionNode node = (ResolutionNode) i.next();
+            for (ResolutionNode node : children) {
                 node.enable();
             }
         }
@@ -200,12 +209,10 @@
 
     public void disable()
     {
-        this.active = false;
+        active = false;
         if ( children != null )
         {
-            for ( Iterator i = children.iterator(); i.hasNext(); )
-            {
-                ResolutionNode node = (ResolutionNode) i.next();
+            for (ResolutionNode node : children) {
                 node.disable();
             }
         }
@@ -229,6 +236,7 @@
         return success;
     }
 
+    @Override
     public String toString()
     {
         return artifact.toString() + " (" + depth + "; " + ( active ? "enabled" : "disabled" ) + ")";

Modified: maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/UnresolvedArtifacts.java
URL: http://svn.apache.org/viewvc/maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/UnresolvedArtifacts.java?rev=659009&r1=659008&r2=659009&view=diff
==============================================================================
--- maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/UnresolvedArtifacts.java (original)
+++ maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/UnresolvedArtifacts.java Wed May 21 22:15:02 2008
@@ -1,6 +1,7 @@
 package org.apache.maven.artifact.resolver;
 
 import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.repository.ArtifactRepository;
 
 import java.util.List;
 
@@ -14,13 +15,13 @@
 {
     private Artifact originatingArtifact;
 
-    private List artifacts;
+    private List<Artifact> artifacts;
 
-    private List remoteRepositories;
+    private List<ArtifactRepository> remoteRepositories;
 
     public UnresolvedArtifacts( Artifact originatingArtifact,
-                                List artifacts,
-                                List remoteRepositories )
+                                List<Artifact> artifacts,
+                                List<ArtifactRepository> remoteRepositories )
     {
         this.originatingArtifact = originatingArtifact;
 

Modified: maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/conflict/DefaultGraphConflictResolver.java
URL: http://svn.apache.org/viewvc/maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/conflict/DefaultGraphConflictResolver.java?rev=659009&r1=659008&r2=659009&view=diff
==============================================================================
--- maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/conflict/DefaultGraphConflictResolver.java (original)
+++ maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/conflict/DefaultGraphConflictResolver.java Wed May 21 22:15:02 2008
@@ -19,20 +19,16 @@
  * under the License.
  */
 
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.TreeSet;
-
 import org.apache.maven.artifact.ArtifactScopeEnum;
 import org.apache.maven.artifact.resolver.metadata.ArtifactMetadata;
 import org.apache.maven.artifact.resolver.metadata.MetadataGraph;
 import org.apache.maven.artifact.resolver.metadata.MetadataGraphEdge;
 import org.apache.maven.artifact.resolver.metadata.MetadataGraphVertex;
 import org.apache.maven.artifact.resolver.metadata.MetadataResolutionException;
-import org.apache.maven.artifact.versioning.ArtifactVersion;
-import org.apache.maven.artifact.versioning.DefaultArtifactVersion;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.TreeSet;
 
 /**
  * Default conflict resolver.Implements closer newer first policy 

Modified: maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/conflict/GraphConflictResolutionException.java
URL: http://svn.apache.org/viewvc/maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/conflict/GraphConflictResolutionException.java?rev=659009&r1=659008&r2=659009&view=diff
==============================================================================
--- maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/conflict/GraphConflictResolutionException.java (original)
+++ maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/conflict/GraphConflictResolutionException.java Wed May 21 22:15:02 2008
@@ -10,9 +10,6 @@
 public class GraphConflictResolutionException
 extends Exception
 {
-	/**
-	 * 
-	 */
 	private static final long serialVersionUID = 2677613140287940255L;
 
 	public GraphConflictResolutionException()

Modified: maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/filter/AndArtifactFilter.java
URL: http://svn.apache.org/viewvc/maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/filter/AndArtifactFilter.java?rev=659009&r1=659008&r2=659009&view=diff
==============================================================================
--- maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/filter/AndArtifactFilter.java (original)
+++ maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/filter/AndArtifactFilter.java Wed May 21 22:15:02 2008
@@ -34,7 +34,7 @@
 public class AndArtifactFilter
     implements ArtifactFilter
 {
-    private final List filters = new ArrayList();
+    private final List<ArtifactFilter> filters = new ArrayList<ArtifactFilter>();
 
     public boolean include( Artifact artifact )
     {

Modified: maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/filter/ExcludesArtifactFilter.java
URL: http://svn.apache.org/viewvc/maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/filter/ExcludesArtifactFilter.java?rev=659009&r1=659008&r2=659009&view=diff
==============================================================================
--- maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/filter/ExcludesArtifactFilter.java (original)
+++ maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/filter/ExcludesArtifactFilter.java Wed May 21 22:15:02 2008
@@ -33,7 +33,7 @@
 public class ExcludesArtifactFilter
     extends IncludesArtifactFilter
 {
-    public ExcludesArtifactFilter( List patterns )
+    public ExcludesArtifactFilter( List<String> patterns )
     {
         super( patterns );
     }

Modified: maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/filter/ExclusionSetFilter.java
URL: http://svn.apache.org/viewvc/maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/filter/ExclusionSetFilter.java?rev=659009&r1=659008&r2=659009&view=diff
==============================================================================
--- maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/filter/ExclusionSetFilter.java (original)
+++ maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/filter/ExclusionSetFilter.java Wed May 21 22:15:02 2008
@@ -32,25 +32,20 @@
 public class ExclusionSetFilter
     implements ArtifactFilter
 {
-    private Set excludes;
+    private Set<String> excludes;
 
     public ExclusionSetFilter( String[] excludes )
     {
-        this.excludes = new HashSet( Arrays.asList( excludes ) );
+        this.excludes = new HashSet<String>( Arrays.asList( excludes ) );
     }
 
-    public ExclusionSetFilter( Set excludes )
+    public ExclusionSetFilter( Set<String> excludes )
     {
         this.excludes = excludes;
     }
 
     public boolean include( Artifact artifact )
     {
-        if ( excludes.contains( artifact.getArtifactId() ) )
-        {
-            return false;
-        }
-
-        return true;
+        return !excludes.contains(artifact.getArtifactId());
     }
 }

Modified: maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/filter/IncludesArtifactFilter.java
URL: http://svn.apache.org/viewvc/maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/filter/IncludesArtifactFilter.java?rev=659009&r1=659008&r2=659009&view=diff
==============================================================================
--- maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/filter/IncludesArtifactFilter.java (original)
+++ maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/filter/IncludesArtifactFilter.java Wed May 21 22:15:02 2008
@@ -33,9 +33,9 @@
 public class IncludesArtifactFilter
     implements ArtifactFilter
 {
-    private final List patterns;
+    private final List<String> patterns;
 
-    public IncludesArtifactFilter( List patterns )
+    public IncludesArtifactFilter( List<String> patterns )
     {
         this.patterns = patterns;
     }

Modified: maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/filter/InversionArtifactFilter.java
URL: http://svn.apache.org/viewvc/maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/filter/InversionArtifactFilter.java?rev=659009&r1=659008&r2=659009&view=diff
==============================================================================
--- maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/filter/InversionArtifactFilter.java (original)
+++ maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/filter/InversionArtifactFilter.java Wed May 21 22:15:02 2008
@@ -24,7 +24,6 @@
 public class InversionArtifactFilter
     implements ArtifactFilter
 {
-
     private final ArtifactFilter toInvert;
 
     public InversionArtifactFilter( ArtifactFilter toInvert )
@@ -36,5 +35,4 @@
     {
         return !toInvert.include( artifact );
     }
-
 }

Modified: maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/transform/AbstractVersionTransformation.java
URL: http://svn.apache.org/viewvc/maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/transform/AbstractVersionTransformation.java?rev=659009&r1=659008&r2=659009&view=diff
==============================================================================
--- maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/transform/AbstractVersionTransformation.java (original)
+++ maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/transform/AbstractVersionTransformation.java Wed May 21 22:15:02 2008
@@ -53,7 +53,7 @@
 
     protected String resolveVersion( Artifact artifact,
                                      ArtifactRepository localRepository,
-                                     List remoteRepositories )
+                                     List<ArtifactRepository> remoteRepositories )
         throws RepositoryMetadataResolutionException
     {
         RepositoryMetadata metadata;

Modified: maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/transform/ArtifactTransformation.java
URL: http://svn.apache.org/viewvc/maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/transform/ArtifactTransformation.java?rev=659009&r1=659008&r2=659009&view=diff
==============================================================================
--- maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/transform/ArtifactTransformation.java (original)
+++ maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/transform/ArtifactTransformation.java Wed May 21 22:15:02 2008
@@ -46,7 +46,7 @@
      * @param localRepository    the local repository
      */
     void transformForResolve( Artifact artifact,
-                              List remoteRepositories,
+                              List<ArtifactRepository> remoteRepositories,
                               ArtifactRepository localRepository )
         throws ArtifactResolutionException, ArtifactNotFoundException;
 

Modified: maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/transform/ArtifactTransformationManager.java
URL: http://svn.apache.org/viewvc/maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/transform/ArtifactTransformationManager.java?rev=659009&r1=659008&r2=659009&view=diff
==============================================================================
--- maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/transform/ArtifactTransformationManager.java (original)
+++ maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/transform/ArtifactTransformationManager.java Wed May 21 22:15:02 2008
@@ -43,7 +43,7 @@
      * @param localRepository    the local repository
      */
     void transformForResolve( Artifact artifact,
-                              List remoteRepositories,
+                              List<ArtifactRepository> remoteRepositories,
                               ArtifactRepository localRepository )
         throws ArtifactResolutionException, ArtifactNotFoundException;
 

Modified: maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/transform/DefaultArtifactTransformationManager.java
URL: http://svn.apache.org/viewvc/maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/transform/DefaultArtifactTransformationManager.java?rev=659009&r1=659008&r2=659009&view=diff
==============================================================================
--- maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/transform/DefaultArtifactTransformationManager.java (original)
+++ maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/transform/DefaultArtifactTransformationManager.java Wed May 21 22:15:02 2008
@@ -41,17 +41,14 @@
      *    role="org.apache.maven.artifact.transform.ArtifactTransformation"
      *    role-hints="release,latest,snapshot"
      */
-    private List artifactTransformations;
+    private List<ArtifactTransformation> artifactTransformations;
 
     public void transformForResolve( Artifact artifact,
-                                     List remoteRepositories,
+                                     List<ArtifactRepository> remoteRepositories,
                                      ArtifactRepository localRepository )
         throws ArtifactResolutionException, ArtifactNotFoundException
     {
-        for ( Iterator i = artifactTransformations.iterator(); i.hasNext(); )
-        {
-            ArtifactTransformation transform = (ArtifactTransformation) i.next();
-
+        for (ArtifactTransformation transform : artifactTransformations) {
             transform.transformForResolve( artifact, remoteRepositories, localRepository );
         }
     }
@@ -60,9 +57,7 @@
                                      ArtifactRepository localRepository )
         throws ArtifactInstallationException
     {
-        for ( Iterator i = artifactTransformations.iterator(); i.hasNext(); )
-        {
-            ArtifactTransformation transform = (ArtifactTransformation) i.next();
+        for (ArtifactTransformation transform : artifactTransformations) {
             transform.transformForInstall( artifact, localRepository );
         }
     }
@@ -72,9 +67,7 @@
                                         ArtifactRepository localRepository )
         throws ArtifactDeploymentException
     {
-        for ( Iterator i = artifactTransformations.iterator(); i.hasNext(); )
-        {
-            ArtifactTransformation transform = (ArtifactTransformation) i.next();
+        for (ArtifactTransformation transform : artifactTransformations) {
             transform.transformForDeployment( artifact, remoteRepository, localRepository );
         }
     }

Modified: maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/transform/DefaultClasspathTransformation.java
URL: http://svn.apache.org/viewvc/maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/transform/DefaultClasspathTransformation.java?rev=659009&r1=659008&r2=659009&view=diff
==============================================================================
--- maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/transform/DefaultClasspathTransformation.java (original)
+++ maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/transform/DefaultClasspathTransformation.java Wed May 21 22:15:02 2008
@@ -4,8 +4,6 @@
 import java.util.Arrays;
 import java.util.Comparator;
 import java.util.List;
-import java.util.Map;
-import java.util.TreeSet;
 
 import org.apache.maven.artifact.ArtifactScopeEnum;
 import org.apache.maven.artifact.resolver.conflict.GraphConflictResolutionException;

Modified: maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/transform/LatestArtifactTransformation.java
URL: http://svn.apache.org/viewvc/maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/transform/LatestArtifactTransformation.java?rev=659009&r1=659008&r2=659009&view=diff
==============================================================================
--- maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/transform/LatestArtifactTransformation.java (original)
+++ maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/transform/LatestArtifactTransformation.java Wed May 21 22:15:02 2008
@@ -33,7 +33,7 @@
     extends AbstractVersionTransformation
 {
     public void transformForResolve( Artifact artifact,
-                                     List remoteRepositories,
+                                     List<ArtifactRepository> remoteRepositories,
                                      ArtifactRepository localRepository )
         throws ArtifactResolutionException, ArtifactNotFoundException
     {

Modified: maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/transform/MetadataGraphTransformationException.java
URL: http://svn.apache.org/viewvc/maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/transform/MetadataGraphTransformationException.java?rev=659009&r1=659008&r2=659009&view=diff
==============================================================================
--- maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/transform/MetadataGraphTransformationException.java (original)
+++ maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/transform/MetadataGraphTransformationException.java Wed May 21 22:15:02 2008
@@ -5,12 +5,8 @@
  *
  */
 public class MetadataGraphTransformationException
-extends Exception
+    extends Exception
 {
-
-	/**
-	 * 
-	 */
 	private static final long serialVersionUID = -4029897098314019152L;
 
 	public MetadataGraphTransformationException()

Modified: maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/transform/ReleaseArtifactTransformation.java
URL: http://svn.apache.org/viewvc/maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/transform/ReleaseArtifactTransformation.java?rev=659009&r1=659008&r2=659009&view=diff
==============================================================================
--- maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/transform/ReleaseArtifactTransformation.java (original)
+++ maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/transform/ReleaseArtifactTransformation.java Wed May 21 22:15:02 2008
@@ -41,7 +41,7 @@
     extends AbstractVersionTransformation
 {
     public void transformForResolve( Artifact artifact,
-                                     List remoteRepositories,
+                                     List<ArtifactRepository> remoteRepositories,
                                      ArtifactRepository localRepository )
         throws ArtifactResolutionException, ArtifactNotFoundException
     {

Modified: maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/transform/SnapshotTransformation.java
URL: http://svn.apache.org/viewvc/maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/transform/SnapshotTransformation.java?rev=659009&r1=659008&r2=659009&view=diff
==============================================================================
--- maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/transform/SnapshotTransformation.java (original)
+++ maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/transform/SnapshotTransformation.java Wed May 21 22:15:02 2008
@@ -54,7 +54,7 @@
 
 
     public void transformForResolve( Artifact artifact,
-                                     List remoteRepositories,
+                                     List<ArtifactRepository> remoteRepositories,
                                      ArtifactRepository localRepository )
         throws ArtifactResolutionException
     {

Added: maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/versioning/ComparableVersion.java
URL: http://svn.apache.org/viewvc/maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/versioning/ComparableVersion.java?rev=659009&view=auto
==============================================================================
--- maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/versioning/ComparableVersion.java (added)
+++ maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/versioning/ComparableVersion.java Wed May 21 22:15:02 2008
@@ -0,0 +1,434 @@
+package org.apache.maven.artifact.versioning;
+
+/*
+ * 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.
+ */
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Iterator;
+import java.util.List;
+import java.util.ListIterator;
+import java.util.Properties;
+import java.util.Locale;
+import java.util.Stack;
+
+/**
+ * Generic implementation of version comparison.
+ *
+ * @author <a href="mailto:kenney@apache.org">Kenney Westerhof</a>
+ * @author <a href="mailto:hboutemy@apache.org">Herve Boutemy</a>
+ * @version $Id$
+ */
+public class ComparableVersion
+    implements Comparable
+{
+    private String value;
+
+    private String canonical;
+
+    private ListItem items;
+
+    private interface Item
+    {
+        public static final int INTEGER_ITEM = 0;
+        public static final int STRING_ITEM = 1;
+        public static final int LIST_ITEM = 2;
+
+        public int compareTo( Item item );
+
+        public int getType();
+
+        public boolean isNull();
+    }
+
+    /**
+     * Represents a numeric item in the version item list.
+     */
+    private static class IntegerItem
+        implements Item
+    {
+        private Integer value;
+
+        public IntegerItem( Integer i )
+        {
+            this.value = i;
+        }
+
+        public int getType()
+        {
+            return INTEGER_ITEM;
+        }
+
+        public boolean isNull()
+        {
+            return (value == 0 );
+        }
+
+        public int compareTo( Item item )
+        {
+            if ( item == null )
+            {
+                return value == 0 ? 0 : 1; // 1.0 == 1, 1.1 > 1
+            }
+
+            switch ( item.getType() )
+            {
+                case INTEGER_ITEM:
+                    return value.compareTo( ( (IntegerItem) item ).value );
+
+                case STRING_ITEM:
+                    return 1; // 1.1 > 1-sp
+
+                case LIST_ITEM:
+                    return 1; // 1.1 > 1-1
+
+                default:
+                    throw new RuntimeException( "invalid item: " + item.getClass() );
+            }
+        }
+
+        public String toString()
+        {
+            return value.toString();
+        }
+    }
+
+    /**
+     * Represents a string in the version item list, usually a qualifier.
+     */
+    private static class StringItem
+        implements Item
+    {
+        private final static String[] QUALIFIERS = { "snapshot", "alpha", "beta", "milestone", "rc", "", "sp" };
+
+        private final static List _QUALIFIERS = Arrays.asList( QUALIFIERS );
+
+        private final static Properties ALIASES = new Properties();
+        static {
+            ALIASES.put( "ga", "" );
+            ALIASES.put( "final", "" );
+            ALIASES.put( "cr", "rc" );
+        }
+        /**
+         * A comparable for the empty-string qualifier. This one is used to determine if a given qualifier makes the
+         * version older than one without a qualifier, or more recent.
+         */
+        private static Comparable RELEASE_VERSION_INDEX = String.valueOf( _QUALIFIERS.indexOf( "" ) );
+
+        private String value;
+
+        public StringItem( String value, boolean followedByDigit )
+        {
+            if ( followedByDigit && value.length() == 1 )
+            {
+                // a1 = alpha-1, b1 = beta-1, m1 = milestone-1
+                switch ( value.charAt( 0 ) )
+                {
+                    case 'a':
+                        value = "alpha";
+                        break;
+                    case 'b':
+                        value = "beta";
+                        break;
+                    case 'm':
+                        value = "milestone";
+                        break;
+                }
+            }
+            this.value = ALIASES.getProperty( value , value );
+        }
+
+        public int getType()
+        {
+            return STRING_ITEM;
+        }
+
+        public boolean isNull()
+        {
+            return ( comparableQualifier( value ).compareTo( RELEASE_VERSION_INDEX ) == 0 );
+        }
+
+        /**
+         * Returns a comparable for a qualifier.
+         *
+         * This method both takes into account the ordering of known qualifiers as well as lexical ordering for unknown
+         * qualifiers.
+         *
+         * just returning an Integer with the index here is faster, but requires a lot of if/then/else to check for -1
+         * or QUALIFIERS.size and then resort to lexical ordering. Most comparisons are decided by the first character,
+         * so this is still fast. If more characters are needed then it requires a lexical sort anyway.
+         *
+         * @param qualifier
+         * @return
+         */
+        public static Comparable comparableQualifier( String qualifier )
+        {
+            int i = _QUALIFIERS.indexOf( qualifier );
+
+            return i == -1 ? _QUALIFIERS.size() + "-" + qualifier : String.valueOf( i );
+        }
+
+        public int compareTo( Item item )
+        {
+            if ( item == null )
+            {
+                // 1-rc < 1, 1-ga > 1
+                return comparableQualifier( value ).compareTo( RELEASE_VERSION_INDEX );
+            }
+            switch ( item.getType() )
+            {
+                case INTEGER_ITEM:
+                    return -1; // 1.any < 1.1 ?
+
+                case STRING_ITEM:
+                    return comparableQualifier( value ).compareTo( comparableQualifier( ( (StringItem) item ).value ) );
+
+                case LIST_ITEM:
+                    return -1; // 1.any < 1-1
+
+                default:
+                    throw new RuntimeException( "invalid item: " + item.getClass() );
+            }
+        }
+
+        public String toString()
+        {
+            return value;
+        }
+    }
+
+    /**
+     * Represents a version list item. This class is used both for the global item list and for sub-lists (which start
+     * with '-(number)' in the version specification).
+     */
+    private static class ListItem
+        extends ArrayList
+        implements Item
+    {
+        public int getType()
+        {
+            return LIST_ITEM;
+        }
+
+        public boolean isNull()
+        {
+            return ( size() == 0 );
+        }
+
+        void normalize()
+        {
+            for( ListIterator iterator = listIterator( size() ); iterator.hasPrevious(); )
+            {
+                Item item = (Item) iterator.previous();
+                if ( item.isNull() )
+                {
+                    iterator.remove(); // remove null trailing items: 0, "", empty list
+                }
+                else
+                {
+                    break;
+                }
+            }
+        }
+
+        public int compareTo( Item item )
+        {
+            if ( item == null )
+            {
+                if ( size() == 0 )
+                {
+                    return 0; // 1-0 = 1- (normalize) = 1
+                }
+                Item first = (Item) get(0);
+                return first.compareTo( null );
+            }
+            switch ( item.getType() )
+            {
+                case INTEGER_ITEM:
+                    return -1; // 1-1 < 1.0.x
+
+                case STRING_ITEM:
+                    return 1; // 1-1 > 1-sp
+
+                case LIST_ITEM:
+                    Iterator left = iterator();
+                    Iterator right = ( (ListItem) item ).iterator();
+    
+                    while ( left.hasNext() || right.hasNext() )
+                    {
+                        Item l = left.hasNext() ? (Item) left.next() : null;
+                        Item r = right.hasNext() ? (Item) right.next() : null;
+    
+                        // if this is shorter, then invert the compare and mul with -1
+                        int result = l == null ? -1 * r.compareTo( l ) : l.compareTo( r );
+    
+                        if ( result != 0 )
+                        {
+                            return result;
+                        }
+                    }
+    
+                    return 0;
+
+                default:
+                    throw new RuntimeException( "invalid item: " + item.getClass() );
+            }
+        }
+
+        public String toString()
+        {
+            StringBuffer buffer = new StringBuffer( "(" );
+            for( Iterator iter = iterator(); iter.hasNext(); )
+            {
+                buffer.append( iter.next() );
+                if ( iter.hasNext() )
+                {
+                    buffer.append( ',' );
+                }
+            }
+            buffer.append( ')' );
+            return buffer.toString();
+        }
+    }
+
+    public ComparableVersion( String version )
+    {
+        parseVersion( version );
+    }
+
+    public final void parseVersion( String version )
+    {
+        this.value = version;
+
+        items = new ListItem();
+
+        version = version.toLowerCase( Locale.ENGLISH );
+
+        ListItem list = items;
+
+        Stack stack = new Stack();
+        stack.push( list );
+
+        boolean isDigit = false;
+
+        int startIndex = 0;
+
+        for ( int i = 0; i < version.length(); i++ )
+        {
+            char c = version.charAt( i );
+
+            if ( c == '.' )
+            {
+                if ( i == startIndex )
+                {
+                    list.add( new IntegerItem( 0 ) );
+                }
+                else
+                {
+                    list.add( parseItem( isDigit, version.substring( startIndex, i ) ) );
+                }
+                startIndex = i + 1;
+            }
+            else if ( c == '-' )
+            {
+                if ( i == startIndex )
+                {
+                    list.add( new IntegerItem( 0 ) );
+                }
+                else
+                {
+                    list.add( parseItem( isDigit, version.substring( startIndex, i ) ) );
+                }
+                startIndex = i + 1;
+
+                if ( isDigit )
+                {
+                    list.normalize(); // 1.0-* = 1-*
+                    
+                    if ( ( i + 1 < version.length() ) && Character.isDigit( version.charAt( i + 1 ) ) )
+                    {
+                        // new ListItem only if previous were digits and new char is a digit,
+                        // ie need to differentiate only 1.1 from 1-1
+                        list.add( list = new ListItem() );
+
+                        stack.push( list );
+                    }
+                }
+            }
+            else if ( Character.isDigit( c ) )
+            {
+                if ( !isDigit && i > startIndex )
+                {
+                    list.add( new StringItem( version.substring( startIndex, i ), true ) );
+                    startIndex = i;
+                }
+
+                isDigit = true;
+            }
+            else
+            {
+                if ( isDigit && i > startIndex )
+                {
+                    list.add( parseItem( true, version.substring( startIndex, i ) ) );
+                    startIndex = i;
+                }
+
+                isDigit = false;
+            }
+        }
+
+        if ( version.length() > startIndex )
+        {
+            list.add( parseItem( isDigit, version.substring( startIndex ) ) );
+        }
+
+        while ( !stack.isEmpty() )
+        {
+            list = (ListItem) stack.pop();
+            list.normalize();
+        }
+
+        canonical = items.toString();
+    }
+
+    private static Item parseItem( boolean isDigit, String buf )
+    {
+        return isDigit ? new IntegerItem( new Integer( buf ) ) : new StringItem( buf, false );
+    }
+
+    public int compareTo( Object o )
+    {
+        return items.compareTo( ( (ComparableVersion) o ).items );
+    }
+
+    public String toString()
+    {
+        return value;
+    }
+
+    public boolean equals( Object o )
+    {
+        return ( o instanceof ComparableVersion ) && canonical.equals( ( ( ComparableVersion )o ).canonical );
+    }
+
+    public int hashCode()
+    {
+        return canonical.hashCode();
+    }
+}

Propchange: maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/versioning/ComparableVersion.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/versioning/ComparableVersion.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Modified: maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/versioning/DefaultArtifactVersion.java
URL: http://svn.apache.org/viewvc/maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/versioning/DefaultArtifactVersion.java?rev=659009&r1=659008&r2=659009&view=diff
==============================================================================
--- maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/versioning/DefaultArtifactVersion.java (original)
+++ maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/versioning/DefaultArtifactVersion.java Wed May 21 22:15:02 2008
@@ -40,6 +40,8 @@
 
     private String qualifier;
 
+    private ComparableVersion comparable;
+
     public DefaultArtifactVersion( String version )
     {
         parseVersion( version );
@@ -48,7 +50,7 @@
     @Override
     public int hashCode()
     {
-        return 11 + toString().hashCode();
+        return 11 + comparable.hashCode();
     }
 
     @Override
@@ -60,98 +62,27 @@
     public int compareTo( Object o )
     {
         DefaultArtifactVersion otherVersion = (DefaultArtifactVersion) o;
-
-        int result = compareIntegers( majorVersion, otherVersion.majorVersion );
-        if ( result == 0 )
-        {
-            result = compareIntegers( minorVersion, otherVersion.minorVersion );
-        }
-        if ( result == 0 )
-        {
-            result = compareIntegers( incrementalVersion, otherVersion.incrementalVersion );
-        }
-        if ( result == 0 )
-        {
-            if ( ( buildNumber != null ) || ( otherVersion.buildNumber != null ) )
-            {
-                result = compareIntegers( buildNumber, otherVersion.buildNumber );
-            }
-            else if ( qualifier != null )
-            {
-                if ( otherVersion.qualifier != null )
-                {
-                    if ( ( qualifier.length() > otherVersion.qualifier.length() ) &&
-                        qualifier.startsWith( otherVersion.qualifier ) )
-                    {
-                        // here, the longer one that otherwise match is considered older
-                        result = -1;
-                    }
-                    else if ( ( qualifier.length() < otherVersion.qualifier.length() ) &&
-                        otherVersion.qualifier.startsWith( qualifier ) )
-                    {
-                        // here, the longer one that otherwise match is considered older
-                        result = 1;
-                    }
-                    else
-                    {
-                        result = qualifier.compareTo( otherVersion.qualifier );
-                    }
-                }
-                else
-                {
-                    // otherVersion has no qualifier but we do - that's newer
-                    result = -1;
-                }
-            }
-            else if ( otherVersion.qualifier != null )
-            {
-                // otherVersion has a qualifier but we don't, we're newer
-                result = 1;
-            }
-        }
-        return result;
-    }
-
-    private int compareIntegers( Integer i1,
-                                 Integer i2 )
-    {
-        // treat null as 0 in comparison
-        if ( i1 == null ? i2 == null : i1.equals( i2 ) )
-        {
-            return 0;
-        }
-        else if ( i1 == null )
-        {
-            return -i2.intValue();
-        }
-        else if ( i2 == null )
-        {
-            return i1.intValue();
-        }
-        else
-        {
-            return i1.intValue() - i2.intValue();
-        }
+        return this.comparable.compareTo( otherVersion.comparable );
     }
 
     public int getMajorVersion()
     {
-        return majorVersion != null ? majorVersion.intValue() : 0;
+        return majorVersion != null ? majorVersion : 0;
     }
 
     public int getMinorVersion()
     {
-        return minorVersion != null ? minorVersion.intValue() : 0;
+        return minorVersion != null ? minorVersion : 0;
     }
 
     public int getIncrementalVersion()
     {
-        return incrementalVersion != null ? incrementalVersion.intValue() : 0;
+        return incrementalVersion != null ? incrementalVersion : 0;
     }
 
     public int getBuildNumber()
     {
-        return buildNumber != null ? buildNumber.intValue() : 0;
+        return buildNumber != null ? buildNumber : 0;
     }
 
     public String getQualifier()
@@ -161,6 +92,8 @@
 
     public final void parseVersion( String version )
     {
+        comparable = new ComparableVersion( version );
+
         int index = version.indexOf( "-" );
 
         String part1;

Modified: maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/versioning/OverConstrainedVersionException.java
URL: http://svn.apache.org/viewvc/maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/versioning/OverConstrainedVersionException.java?rev=659009&r1=659008&r2=659009&view=diff
==============================================================================
--- maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/versioning/OverConstrainedVersionException.java (original)
+++ maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/versioning/OverConstrainedVersionException.java Wed May 21 22:15:02 2008
@@ -20,6 +20,7 @@
  */
 
 import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.artifact.resolver.ArtifactResolutionException;
 
 import java.util.List;
@@ -41,7 +42,7 @@
 
     public OverConstrainedVersionException( String msg,
                                             Artifact artifact,
-                                            List remoteRepositories )
+                                            List<ArtifactRepository> remoteRepositories )
     {
         super( msg, artifact, remoteRepositories );
     }

Modified: maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/versioning/VersionRange.java
URL: http://svn.apache.org/viewvc/maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/versioning/VersionRange.java?rev=659009&r1=659008&r2=659009&view=diff
==============================================================================
--- maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/versioning/VersionRange.java (original)
+++ maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/versioning/VersionRange.java Wed May 21 22:15:02 2008
@@ -19,13 +19,13 @@
  * under the License.
  */
 
-import org.apache.maven.artifact.Artifact;
-
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Iterator;
 import java.util.List;
 
+import org.apache.maven.artifact.Artifact;
+
 /**
  * Construct a version range from a specification.
  *
@@ -36,10 +36,10 @@
 {
     private final ArtifactVersion recommendedVersion;
 
-    private final List restrictions;
+    private final List<Restriction> restrictions;
 
     private VersionRange( ArtifactVersion recommendedVersion,
-                          List restrictions )
+                          List<Restriction> restrictions )
     {
         this.recommendedVersion = recommendedVersion;
         this.restrictions = restrictions;
@@ -57,11 +57,11 @@
 
     public VersionRange cloneOf()
     {
-        List copiedRestrictions = null;
+        List<Restriction> copiedRestrictions = null;
 
         if ( restrictions != null )
         {
-            copiedRestrictions = new ArrayList();
+            copiedRestrictions = new ArrayList<Restriction>();
 
             if ( !restrictions.isEmpty() )
             {
@@ -97,7 +97,7 @@
             return null;
         }
 
-        List restrictions = new ArrayList();
+        List<Restriction> restrictions = new ArrayList<Restriction>();
         String process = spec;
         ArtifactVersion version = null;
         ArtifactVersion upperBound = null;
@@ -251,12 +251,13 @@
      */
     public VersionRange restrict( VersionRange restriction )
     {
-        List r1 = this.restrictions;
-        List r2 = restriction.restrictions;
-        List restrictions;
+        List<Restriction> r1 = this.restrictions;
+        List<Restriction> r2 = restriction.restrictions;
+        List<Restriction> restrictions;
+
         if ( r1.isEmpty() || r2.isEmpty() )
         {
-            restrictions = Collections.EMPTY_LIST;
+            restrictions = Collections.emptyList();
         }
         else
         {
@@ -307,10 +308,9 @@
         return new VersionRange( version, restrictions );
     }
 
-    private List intersection( List r1,
-                               List r2 )
+    private List<Restriction> intersection( List<Restriction> r1, List<Restriction> r2 )
     {
-        List restrictions = new ArrayList( r1.size() + r2.size() );
+        List<Restriction> restrictions = new ArrayList<Restriction>( r1.size() + r2.size() );
         Iterator i1 = r1.iterator();
         Iterator i2 = r2.iterator();
         Restriction res1 = (Restriction) i1.next();
@@ -508,17 +508,7 @@
             {
                 Restriction r = (Restriction) i.next();
 
-                buf.append( r.isLowerBoundInclusive() ? "[" : "(" );
-                if ( r.getLowerBound() != null )
-                {
-                    buf.append( r.getLowerBound().toString() );
-                }
-                buf.append( "," );
-                if ( r.getUpperBound() != null )
-                {
-                    buf.append( r.getUpperBound().toString() );
-                }
-                buf.append( r.isUpperBoundInclusive() ? "]" : ")" );
+                buf.append( r.toString() );
 
                 if ( i.hasNext() )
                 {
@@ -529,19 +519,15 @@
         }
     }
 
-    public ArtifactVersion matchVersion( List versions )
+    public ArtifactVersion matchVersion( List<ArtifactVersion> versions )
     {
         // TODO: could be more efficient by sorting the list and then moving along the restrictions in order?
 
         ArtifactVersion matched = null;
-        for ( Iterator i = versions.iterator(); i.hasNext(); )
-        {
-            ArtifactVersion version = (ArtifactVersion) i.next();
-            if ( containsVersion( version ) )
-            {
+        for (ArtifactVersion version : versions) {
+            if (containsVersion(version)) {
                 // valid - check if it is greater than the currently matched version
-                if ( matched == null || version.compareTo( matched ) > 0 )
-                {
+                if (matched == null || version.compareTo(matched) > 0) {
                     matched = version;
                 }
             }
@@ -551,20 +537,44 @@
 
     public boolean containsVersion( ArtifactVersion version )
     {
-        boolean matched = false;
-        for ( Iterator i = restrictions.iterator(); i.hasNext() && !matched; )
-        {
-            Restriction restriction = (Restriction) i.next();
-            if ( restriction.containsVersion( version ) )
-            {
-                matched = true;
+        for (Restriction restriction : restrictions) {
+            if (restriction.containsVersion(version)) {
+                return true;
             }
         }
-        return matched;
+        return false;
     }
 
     public boolean hasRestrictions()
     {
         return !restrictions.isEmpty() && recommendedVersion == null;
     }
+
+    public boolean equals( Object obj )
+    {
+        if (this == obj){
+            return true;
+        }
+        if (!(obj instanceof VersionRange ))
+        {
+            return false;
+        }
+        VersionRange other = (VersionRange) obj;
+        
+        boolean equals =
+            recommendedVersion == other.recommendedVersion ||
+                ( ( recommendedVersion != null ) && recommendedVersion.equals( other.recommendedVersion ) );
+        equals &=
+            restrictions == other.restrictions ||
+                ( ( restrictions != null ) && restrictions.equals( other.restrictions ) );
+        return equals;
+    }
+
+    public int hashCode()
+    {
+        int hash = 7;
+        hash = 31 * hash + ( recommendedVersion == null ? 0 : recommendedVersion.hashCode() );
+        hash = 31 * hash + ( restrictions == null ? 0 : restrictions.hashCode() );
+        return hash;
+    }
 }

Modified: maven/artifact/branches/CAP/src/test/java/org/apache/maven/artifact/repository/metadata/DefaultRepositoryMetadataManagerTest.java
URL: http://svn.apache.org/viewvc/maven/artifact/branches/CAP/src/test/java/org/apache/maven/artifact/repository/metadata/DefaultRepositoryMetadataManagerTest.java?rev=659009&r1=659008&r2=659009&view=diff
==============================================================================
--- maven/artifact/branches/CAP/src/test/java/org/apache/maven/artifact/repository/metadata/DefaultRepositoryMetadataManagerTest.java (original)
+++ maven/artifact/branches/CAP/src/test/java/org/apache/maven/artifact/repository/metadata/DefaultRepositoryMetadataManagerTest.java Wed May 21 22:15:02 2008
@@ -1,5 +1,14 @@
 package org.apache.maven.artifact.repository.metadata;
 
+import java.io.File;
+import java.io.IOException;
+import java.text.ParseException;
+import java.util.Collections;
+import java.util.Date;
+
+import junit.framework.TestCase;
+
+import org.apache.maven.artifact.manager.DefaultUpdateCheckManager;
 import org.apache.maven.artifact.manager.WagonManager;
 import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.artifact.repository.ArtifactRepositoryPolicy;
@@ -12,14 +21,6 @@
 import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
 import org.easymock.MockControl;
 
-import java.io.File;
-import java.io.IOException;
-import java.text.ParseException;
-import java.util.Collections;
-import java.util.Date;
-
-import junit.framework.TestCase;
-
 public class DefaultRepositoryMetadataManagerTest
     extends TestCase
 {
@@ -34,6 +35,8 @@
 
     private WagonManager wagonManager;
 
+	private DefaultUpdateCheckManager updateCheckManager;
+
     @Override
     public void setUp()
         throws Exception
@@ -44,6 +47,8 @@
         mockManager.add( wagonManagerCtl );
 
         wagonManager = (WagonManager) wagonManagerCtl.getMock();
+        
+        updateCheckManager = new DefaultUpdateCheckManager( new ConsoleLogger( Logger.LEVEL_DEBUG, "test" ) );
     }
 
     @Override
@@ -89,7 +94,7 @@
 
         try
         {
-            wagonManager.getArtifactMetadata( null, null, null, null );
+            wagonManager.getArtifactMetadataFromDeploymentRepository( null, null, null, null );
             wagonManagerCtl.setMatcher( MockControl.ALWAYS_MATCHER );
             wagonManagerCtl.setThrowable( new ResourceDoesNotExistException( "Test error" ) );
         }
@@ -124,17 +129,16 @@
 
         Logger logger = new ConsoleLogger( Logger.LEVEL_DEBUG, "test" );
 
-        new DefaultRepositoryMetadataManager( wagonManager, logger ).resolveAlways( metadata,
-                                                                                    localRepo,
-                                                                                    localRepo );
+        new DefaultRepositoryMetadataManager( wagonManager, updateCheckManager, logger ).resolveAlways( metadata,
+                                                                                                       localRepo,
+                                                                                                       localRepo );
 
         // helps the lastUpdate interval be significantly different.
         Thread.sleep( 1000 );
 
         Date end = new Date();
 
-        MetadataTouchfile touchfile = new MetadataTouchfile( metadata, localRepo );
-        Date checkDate = touchfile.getLastCheckDate( localRepo.getId(), filename, logger );
+        Date checkDate = updateCheckManager.readLastUpdated( metadata, localRepo, new File( dir, path ) );
 
         assertNotNull( checkDate );
         assertTrue( checkDate.after( start ) );
@@ -180,7 +184,7 @@
 
         try
         {
-            wagonManager.getArtifactMetadata( null, null, null, null );
+            wagonManager.getArtifactMetadataFromDeploymentRepository( null, null, null, null );
             wagonManagerCtl.setMatcher( MockControl.ALWAYS_MATCHER );
             wagonManagerCtl.setThrowable( new TransferFailedException( "Test error" ) );
         }
@@ -215,17 +219,24 @@
 
         Logger logger = new ConsoleLogger( Logger.LEVEL_DEBUG, "test" );
 
-        new DefaultRepositoryMetadataManager( wagonManager, logger ).resolveAlways( metadata,
-                                                                                    localRepo,
-                                                                                    localRepo );
+        try
+        {
+            new DefaultRepositoryMetadataManager( wagonManager, updateCheckManager, logger ).resolveAlways( metadata,
+                                                                                                            localRepo,
+                                                                                                            localRepo );
+            fail( "Should have thrown an exception due to transfer failure" );
+        }
+        catch ( RepositoryMetadataResolutionException e )
+        {
+            assertTrue( true );
+        }
 
         // helps the lastUpdate interval be significantly different.
         Thread.sleep( 1000 );
 
         Date end = new Date();
 
-        MetadataTouchfile touchfile = new MetadataTouchfile( metadata, localRepo );
-        Date checkDate = touchfile.getLastCheckDate( localRepo.getId(), filename, logger );
+        Date checkDate = updateCheckManager.readLastUpdated( metadata, localRepo, new File( dir, path ) );
 
         assertNotNull( checkDate );
         assertTrue( checkDate.after( start ) );
@@ -268,7 +279,7 @@
 
         try
         {
-            wagonManager.getArtifactMetadata( null, null, null, null );
+            wagonManager.getArtifactMetadataFromDeploymentRepository( null, null, null, null );
             wagonManagerCtl.setMatcher( MockControl.ALWAYS_MATCHER );
             wagonManagerCtl.setVoidCallable();
         }
@@ -303,17 +314,16 @@
 
         Logger logger = new ConsoleLogger( Logger.LEVEL_DEBUG, "test" );
 
-        new DefaultRepositoryMetadataManager( wagonManager, logger ).resolveAlways( metadata,
-                                                                                    localRepo,
-                                                                                    localRepo );
+        new DefaultRepositoryMetadataManager( wagonManager, updateCheckManager, logger ).resolveAlways( metadata,
+                                                                                                        localRepo,
+                                                                                                        localRepo );
 
         // helps the lastUpdate interval be significantly different.
         Thread.sleep( 1000 );
 
         Date end = new Date();
 
-        MetadataTouchfile touchfile = new MetadataTouchfile( metadata, localRepo );
-        Date checkDate = touchfile.getLastCheckDate( localRepo.getId(), filename, logger );
+        Date checkDate = updateCheckManager.readLastUpdated( metadata, localRepo, new File( dir, path ) );
 
         assertNotNull( checkDate );
         assertTrue( checkDate.after( start ) );
@@ -421,17 +431,16 @@
 
         System.out.println( "Testing re-check proofing..." );
 
-        RepositoryMetadataManager mgr = new DefaultRepositoryMetadataManager( wagonManager, logger );
+        RepositoryMetadataManager mgr = new DefaultRepositoryMetadataManager( wagonManager, updateCheckManager, logger );
         mgr.resolve( metadata, Collections.singletonList( remoteRepo ), localRepo );
 
-        MetadataTouchfile touchfile = new MetadataTouchfile( metadata, localRepo );
-        Date checkDate = touchfile.getLastCheckDate( repoId, filename, logger );
+        Date checkDate = updateCheckManager.readLastUpdated( metadata, remoteRepo, new File( dir, path ) );
 
         assertNotNull( checkDate );
 
         mgr.resolve( metadata, Collections.singletonList( remoteRepo ), localRepo );
 
-        checkDate = touchfile.getLastCheckDate( repoId, filename, logger );
+        checkDate = updateCheckManager.readLastUpdated( metadata, remoteRepo, new File( dir, path ) );
 
         assertNotNull( checkDate );