Author: brett
Date: Tue Jul 19 01:23:01 2005
New Revision: 219630

URL: http://svn.apache.org/viewcvs?rev=219630&view=rev
Log:
PR: MNG-505
use comparable versions in ranges

Modified:
    
maven/components/trunk/maven-artifact-ant/src/main/java/org/apache/maven/artifact/ant/DependenciesTask.java
    
maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/DefaultArtifact.java
    
maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/DefaultArtifactVersion.java
    
maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/Restriction.java
    
maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/VersionRange.java
    
maven/components/trunk/maven-artifact/src/test/java/org/apache/maven/artifact/versioning/DefaultArtifactVersionTest.java
    
maven/components/trunk/maven-artifact/src/test/java/org/apache/maven/artifact/versioning/VersionRangeTest.java
    
maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
    
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
    
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java
    
maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/ProjectClasspathArtifactResolver.java

Modified: 
maven/components/trunk/maven-artifact-ant/src/main/java/org/apache/maven/artifact/ant/DependenciesTask.java
URL: 
http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact-ant/src/main/java/org/apache/maven/artifact/ant/DependenciesTask.java?rev=219630&r1=219629&r2=219630&view=diff
==============================================================================
--- 
maven/components/trunk/maven-artifact-ant/src/main/java/org/apache/maven/artifact/ant/DependenciesTask.java
 (original)
+++ 
maven/components/trunk/maven-artifact-ant/src/main/java/org/apache/maven/artifact/ant/DependenciesTask.java
 Tue Jul 19 01:23:01 2005
@@ -23,7 +23,9 @@
 import org.apache.maven.artifact.resolver.ArtifactResolutionException;
 import org.apache.maven.artifact.resolver.ArtifactResolutionResult;
 import org.apache.maven.artifact.resolver.ArtifactResolver;
+import 
org.apache.maven.artifact.versioning.InvalidVersionSpecificationException;
 import org.apache.maven.model.Dependency;
+import org.apache.maven.model.Repository;
 import org.apache.maven.project.MavenProjectBuilder;
 import org.apache.maven.project.artifact.MavenMetadataSource;
 import org.apache.tools.ant.BuildException;
@@ -56,6 +58,9 @@
 
     private boolean verbose;
 
+    /**
+     * @noinspection RefusedBequest
+     */
     public void execute()
     {
         ArtifactRepository localRepo = createLocalArtifactRepository();
@@ -79,7 +84,7 @@
 
             for ( Iterator i = pom.getRepositories().iterator(); i.hasNext(); )
             {
-                org.apache.maven.model.Repository pomRepository = 
(org.apache.maven.model.Repository) i.next();
+                Repository pomRepository = (Repository) i.next();
 
                 remoteRepositories.add( createAntRemoteRepository( 
pomRepository ) );
             }
@@ -91,7 +96,15 @@
             pom = createDummyPom();
         }
 
-        Set artifacts = MavenMetadataSource.createArtifacts( artifactFactory, 
dependencies, null, null );
+        Set artifacts;
+        try
+        {
+            artifacts = MavenMetadataSource.createArtifacts( artifactFactory, 
dependencies, null, null );
+        }
+        catch ( InvalidVersionSpecificationException e )
+        {
+            throw new BuildException( "Invalid version specification", e );
+        }
 
         log( "Resolving dependencies..." );
 

Modified: 
maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/DefaultArtifact.java
URL: 
http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/DefaultArtifact.java?rev=219630&r1=219629&r2=219630&view=diff
==============================================================================
--- 
maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/DefaultArtifact.java
 (original)
+++ 
maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/DefaultArtifact.java
 Tue Jul 19 01:23:01 2005
@@ -80,7 +80,7 @@
         this.artifactId = artifactId;
 
         // TODO: this would be where we might have a min/max instead
-        this.version = versionRange != null ? 
versionRange.getRecommendedVersion() : null;
+        this.version = versionRange != null ? 
versionRange.getRecommendedVersion().toString() : null;
 
         this.artifactHandler = artifactHandler;
 

Modified: 
maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/DefaultArtifactVersion.java
URL: 
http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/DefaultArtifactVersion.java?rev=219630&r1=219629&r2=219630&view=diff
==============================================================================
--- 
maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/DefaultArtifactVersion.java
 (original)
+++ 
maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/DefaultArtifactVersion.java
 Tue Jul 19 01:23:01 2005
@@ -142,11 +142,11 @@
         return qualifier;
     }
 
-    public void parseVersion( String version )
+    public final void parseVersion( String version )
     {
         int index = version.indexOf( "-" );
 
-        String part1 = null;
+        String part1;
         String part2 = null;
 
         if ( index < 0 )
@@ -171,22 +171,40 @@
             }
         }
 
-        StringTokenizer tok = new StringTokenizer( part1, "." );
-        majorVersion = Integer.valueOf( tok.nextToken() );
-        if ( tok.hasMoreTokens() )
+        if ( part1.indexOf( "." ) < 0 )
         {
-            minorVersion = Integer.valueOf( tok.nextToken() );
+            try
+            {
+                majorVersion = Integer.valueOf( part1 );
+            }
+            catch ( NumberFormatException e )
+            {
+                // qualifier is the whole version, including "-"
+                qualifier = version;
+            }
         }
-        if ( tok.hasMoreTokens() )
+        else
         {
-            incrementalVersion = Integer.valueOf( tok.nextToken() );
+            StringTokenizer tok = new StringTokenizer( part1, "." );
+            majorVersion = Integer.valueOf( tok.nextToken() );
+            if ( tok.hasMoreTokens() )
+            {
+                minorVersion = Integer.valueOf( tok.nextToken() );
+            }
+            if ( tok.hasMoreTokens() )
+            {
+                incrementalVersion = Integer.valueOf( tok.nextToken() );
+            }
         }
     }
 
     public String toString()
     {
         StringBuffer buf = new StringBuffer();
-        buf.append( majorVersion );
+        if ( majorVersion != null )
+        {
+            buf.append( majorVersion );
+        }
         if ( minorVersion != null )
         {
             buf.append( "." );
@@ -204,7 +222,10 @@
         }
         else if ( qualifier != null )
         {
-            buf.append( "-" );
+            if ( buf.length() > 0 )
+            {
+                buf.append( "-" );
+            }
             buf.append( qualifier );
         }
         return buf.toString();

Modified: 
maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/Restriction.java
URL: 
http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/Restriction.java?rev=219630&r1=219629&r2=219630&view=diff
==============================================================================
--- 
maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/Restriction.java
 (original)
+++ 
maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/Restriction.java
 Tue Jul 19 01:23:01 2005
@@ -24,15 +24,16 @@
  */
 public class Restriction
 {
-    private final String lowerBound;
+    private final ArtifactVersion lowerBound;
 
     private final boolean lowerBoundInclusive;
 
-    private final String upperBound;
+    private final ArtifactVersion upperBound;
 
     private final boolean upperBoundInclusive;
 
-    public Restriction( String lowerBound, boolean lowerBoundInclusive, String 
upperBound, boolean upperBoundInclusive )
+    public Restriction( ArtifactVersion lowerBound, boolean 
lowerBoundInclusive, ArtifactVersion upperBound,
+                        boolean upperBoundInclusive )
     {
         this.lowerBound = lowerBound;
         this.lowerBoundInclusive = lowerBoundInclusive;
@@ -40,7 +41,7 @@
         this.upperBoundInclusive = upperBoundInclusive;
     }
 
-    public String getLowerBound()
+    public ArtifactVersion getLowerBound()
     {
         return lowerBound;
     }
@@ -50,7 +51,7 @@
         return lowerBoundInclusive;
     }
 
-    public String getUpperBound()
+    public ArtifactVersion getUpperBound()
     {
         return upperBound;
     }

Modified: 
maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/VersionRange.java
URL: 
http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/VersionRange.java?rev=219630&r1=219629&r2=219630&view=diff
==============================================================================
--- 
maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/VersionRange.java
 (original)
+++ 
maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/VersionRange.java
 Tue Jul 19 01:23:01 2005
@@ -28,17 +28,17 @@
  */
 public class VersionRange
 {
-    private final String recommendedVersion;
+    private final ArtifactVersion recommendedVersion;
 
     private final List restrictions;
 
-    private VersionRange( String recommendedVersion, List restrictions )
+    private VersionRange( ArtifactVersion recommendedVersion, List 
restrictions )
     {
         this.recommendedVersion = recommendedVersion;
         this.restrictions = restrictions;
     }
 
-    public String getRecommendedVersion()
+    public ArtifactVersion getRecommendedVersion()
     {
         return recommendedVersion;
     }
@@ -51,9 +51,9 @@
     public static VersionRange createFromVersionSpec( String spec )
         throws InvalidVersionSpecificationException
     {
-        List exclusions = new ArrayList();
+        List restrictions = new ArrayList();
         String process = spec;
-        String version = null;
+        ArtifactVersion version = null;
 
         while ( process.startsWith( "[" ) || process.startsWith( "(" ) )
         {
@@ -74,7 +74,7 @@
                 throw new InvalidVersionSpecificationException( "Unbounded 
range: " + spec );
             }
 
-            exclusions.add( parseRestriction( process.substring( 0, index + 1 
) ) );
+            restrictions.add( parseRestriction( process.substring( 0, index + 
1 ) ) );
 
             process = process.substring( index + 1 ).trim();
 
@@ -86,18 +86,18 @@
 
         if ( process.length() > 0 )
         {
-            if ( exclusions.size() > 0 )
+            if ( restrictions.size() > 0 )
             {
                 throw new InvalidVersionSpecificationException(
                     "Only fully-qualified sets allowed in multiple set 
scenario: " + spec );
             }
             else
             {
-                version = process;
+                version = new DefaultArtifactVersion( process );
             }
         }
 
-        return new VersionRange( version, exclusions );
+        return new VersionRange( version, restrictions );
     }
 
     private static Restriction parseRestriction( String spec )
@@ -118,7 +118,10 @@
             {
                 throw new InvalidVersionSpecificationException( "Single 
version must be surrounded by []: " + spec );
             }
-            restriction = new Restriction( process, lowerBoundInclusive, 
process, upperBoundInclusive );
+
+            ArtifactVersion version = new DefaultArtifactVersion( process );
+
+            restriction = new Restriction( version, lowerBoundInclusive, 
version, upperBoundInclusive );
         }
         else
         {
@@ -129,16 +132,18 @@
                 throw new InvalidVersionSpecificationException( "Range cannot 
have identical boundaries: " + spec );
             }
 
-            if ( lowerBound.length() == 0 )
+            ArtifactVersion lowerVersion = null;
+            if ( lowerBound.length() > 0 )
             {
-                lowerBound = null;
+                lowerVersion = new DefaultArtifactVersion( lowerBound );
             }
-            if ( upperBound.length() == 0 )
+            ArtifactVersion upperVersion = null;
+            if ( upperBound.length() > 0 )
             {
-                upperBound = null;
+                upperVersion = new DefaultArtifactVersion( upperBound );
             }
 
-            restriction = new Restriction( lowerBound, lowerBoundInclusive, 
upperBound, upperBoundInclusive );
+            restriction = new Restriction( lowerVersion, lowerBoundInclusive, 
upperVersion, upperBoundInclusive );
         }
 
         return restriction;
@@ -146,6 +151,27 @@
 
     public static VersionRange createFromVersion( String version )
     {
+        return new VersionRange( new DefaultArtifactVersion( version ), 
Collections.EMPTY_LIST );
+    }
+
+    public VersionRange restrict( VersionRange restriction )
+    {
+        ArtifactVersion version = max( recommendedVersion, 
restriction.getRecommendedVersion() );
+
+        // TODO
+
         return new VersionRange( version, Collections.EMPTY_LIST );
+    }
+
+    private ArtifactVersion max( ArtifactVersion v1, ArtifactVersion v2 )
+    {
+        if ( v1.compareTo( v2 ) > 0 )
+        {
+            return v1;
+        }
+        else
+        {
+            return v2;
+        }
     }
 }

Modified: 
maven/components/trunk/maven-artifact/src/test/java/org/apache/maven/artifact/versioning/DefaultArtifactVersionTest.java
URL: 
http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact/src/test/java/org/apache/maven/artifact/versioning/DefaultArtifactVersionTest.java?rev=219630&r1=219629&r2=219630&view=diff
==============================================================================
--- 
maven/components/trunk/maven-artifact/src/test/java/org/apache/maven/artifact/versioning/DefaultArtifactVersionTest.java
 (original)
+++ 
maven/components/trunk/maven-artifact/src/test/java/org/apache/maven/artifact/versioning/DefaultArtifactVersionTest.java
 Tue Jul 19 01:23:01 2005
@@ -75,7 +75,15 @@
         assertEquals( "check major version", 1, version.getMajorVersion() );
         assertEquals( "check minor version", 2, version.getMinorVersion() );
         assertEquals( "check incremental version", 0, 
version.getIncrementalVersion() );
+        assertEquals( "check build number", 0, version.getBuildNumber() );
         assertEquals( "check qualifier", "alpha-1-20050205.060708-1", 
version.getQualifier() );
+
+        version = new DefaultArtifactVersion( "RELEASE" );
+        assertEquals( "check major version", 0, version.getMajorVersion() );
+        assertEquals( "check minor version", 0, version.getMinorVersion() );
+        assertEquals( "check incremental version", 0, 
version.getIncrementalVersion() );
+        assertEquals( "check build number", 0, version.getBuildNumber() );
+        assertEquals( "check qualifier", "RELEASE", version.getQualifier() );
     }
 
     public void testVersionComparing()

Modified: 
maven/components/trunk/maven-artifact/src/test/java/org/apache/maven/artifact/versioning/VersionRangeTest.java
URL: 
http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact/src/test/java/org/apache/maven/artifact/versioning/VersionRangeTest.java?rev=219630&r1=219629&r2=219630&view=diff
==============================================================================
--- 
maven/components/trunk/maven-artifact/src/test/java/org/apache/maven/artifact/versioning/VersionRangeTest.java
 (original)
+++ 
maven/components/trunk/maven-artifact/src/test/java/org/apache/maven/artifact/versioning/VersionRangeTest.java
 Tue Jul 19 01:23:01 2005
@@ -50,22 +50,22 @@
         Restriction restriction = (Restriction) restrictions.get( 0 );
         assertNull( CHECK_LOWER_BOUND, restriction.getLowerBound() );
         assertFalse( CHECK_LOWER_BOUND_INCLUSIVE, 
restriction.isLowerBoundInclusive() );
-        assertEquals( CHECK_UPPER_BOUND, "1.0", restriction.getUpperBound() );
+        assertEquals( CHECK_UPPER_BOUND, "1.0", 
restriction.getUpperBound().toString() );
         assertTrue( CHECK_UPPER_BOUND_INCLUSIVE, 
restriction.isUpperBoundInclusive() );
         assertNull( CHECK_VERSION_RECOMMENDATION, 
range.getRecommendedVersion() );
 
         range = VersionRange.createFromVersionSpec( "1.0" );
         restrictions = range.getRestrictions();
         assertEquals( CHECK_NUM_RESTRICTIONS, 0, restrictions.size() );
-        assertEquals( CHECK_VERSION_RECOMMENDATION, "1.0", 
range.getRecommendedVersion() );
+        assertEquals( CHECK_VERSION_RECOMMENDATION, "1.0", 
range.getRecommendedVersion().toString() );
 
         range = VersionRange.createFromVersionSpec( "[1.0]" );
         restrictions = range.getRestrictions();
         assertEquals( CHECK_NUM_RESTRICTIONS, 1, restrictions.size() );
         restriction = (Restriction) restrictions.get( 0 );
-        assertEquals( CHECK_LOWER_BOUND, "1.0", restriction.getLowerBound() );
+        assertEquals( CHECK_LOWER_BOUND, "1.0", 
restriction.getLowerBound().toString() );
         assertTrue( CHECK_LOWER_BOUND_INCLUSIVE, 
restriction.isLowerBoundInclusive() );
-        assertEquals( CHECK_UPPER_BOUND, "1.0", restriction.getUpperBound() );
+        assertEquals( CHECK_UPPER_BOUND, "1.0", 
restriction.getUpperBound().toString() );
         assertTrue( CHECK_UPPER_BOUND_INCLUSIVE, 
restriction.isUpperBoundInclusive() );
         assertNull( CHECK_VERSION_RECOMMENDATION, 
range.getRecommendedVersion() );
 
@@ -73,9 +73,9 @@
         restrictions = range.getRestrictions();
         assertEquals( CHECK_NUM_RESTRICTIONS, 1, restrictions.size() );
         restriction = (Restriction) restrictions.get( 0 );
-        assertEquals( CHECK_LOWER_BOUND, "1.2", restriction.getLowerBound() );
+        assertEquals( CHECK_LOWER_BOUND, "1.2", 
restriction.getLowerBound().toString() );
         assertTrue( CHECK_LOWER_BOUND_INCLUSIVE, 
restriction.isLowerBoundInclusive() );
-        assertEquals( CHECK_UPPER_BOUND, "1.3", restriction.getUpperBound() );
+        assertEquals( CHECK_UPPER_BOUND, "1.3", 
restriction.getUpperBound().toString() );
         assertTrue( CHECK_UPPER_BOUND_INCLUSIVE, 
restriction.isUpperBoundInclusive() );
         assertNull( CHECK_VERSION_RECOMMENDATION, 
range.getRecommendedVersion() );
 
@@ -83,9 +83,9 @@
         restrictions = range.getRestrictions();
         assertEquals( CHECK_NUM_RESTRICTIONS, 1, restrictions.size() );
         restriction = (Restriction) restrictions.get( 0 );
-        assertEquals( CHECK_LOWER_BOUND, "1.0", restriction.getLowerBound() );
+        assertEquals( CHECK_LOWER_BOUND, "1.0", 
restriction.getLowerBound().toString() );
         assertTrue( CHECK_LOWER_BOUND_INCLUSIVE, 
restriction.isLowerBoundInclusive() );
-        assertEquals( CHECK_UPPER_BOUND, "2.0", restriction.getUpperBound() );
+        assertEquals( CHECK_UPPER_BOUND, "2.0", 
restriction.getUpperBound().toString() );
         assertFalse( CHECK_UPPER_BOUND_INCLUSIVE, 
restriction.isUpperBoundInclusive() );
         assertNull( CHECK_VERSION_RECOMMENDATION, 
range.getRecommendedVersion() );
 
@@ -93,7 +93,7 @@
         restrictions = range.getRestrictions();
         assertEquals( CHECK_NUM_RESTRICTIONS, 1, restrictions.size() );
         restriction = (Restriction) restrictions.get( 0 );
-        assertEquals( CHECK_LOWER_BOUND, "1.5", restriction.getLowerBound() );
+        assertEquals( CHECK_LOWER_BOUND, "1.5", 
restriction.getLowerBound().toString() );
         assertTrue( CHECK_LOWER_BOUND_INCLUSIVE, 
restriction.isLowerBoundInclusive() );
         assertNull( CHECK_UPPER_BOUND, restriction.getUpperBound() );
         assertFalse( CHECK_UPPER_BOUND_INCLUSIVE, 
restriction.isUpperBoundInclusive() );
@@ -105,11 +105,11 @@
         restriction = (Restriction) restrictions.get( 0 );
         assertNull( CHECK_LOWER_BOUND, restriction.getLowerBound() );
         assertFalse( CHECK_LOWER_BOUND_INCLUSIVE, 
restriction.isLowerBoundInclusive() );
-        assertEquals( CHECK_UPPER_BOUND, "1.0", restriction.getUpperBound() );
+        assertEquals( CHECK_UPPER_BOUND, "1.0", 
restriction.getUpperBound().toString() );
         assertTrue( CHECK_UPPER_BOUND_INCLUSIVE, 
restriction.isUpperBoundInclusive() );
         assertNull( CHECK_VERSION_RECOMMENDATION, 
range.getRecommendedVersion() );
         restriction = (Restriction) restrictions.get( 1 );
-        assertEquals( CHECK_LOWER_BOUND, "1.2", restriction.getLowerBound() );
+        assertEquals( CHECK_LOWER_BOUND, "1.2", 
restriction.getLowerBound().toString() );
         assertTrue( CHECK_LOWER_BOUND_INCLUSIVE, 
restriction.isLowerBoundInclusive() );
         assertNull( CHECK_UPPER_BOUND, restriction.getUpperBound() );
         assertFalse( CHECK_UPPER_BOUND_INCLUSIVE, 
restriction.isUpperBoundInclusive() );
@@ -130,7 +130,20 @@
         checkInvalidRange( "[1.0,1.2),(1.1,1.3]" );
         // overlap
         checkInvalidRange( "[1.1,1.3),(1.0,1.2]" );
+        // ordering
+        checkInvalidRange( "(1.1,1.2],[1.0,1.1)" );
 */
+    }
+
+    public void testIntersections()
+    {
+        VersionRange range1 = VersionRange.createFromVersion( "1.0" );
+        VersionRange range2 = VersionRange.createFromVersion( "1.1" );
+        VersionRange mergedRange = range1.restrict( range2 );
+        assertEquals( CHECK_VERSION_RECOMMENDATION, "1.1", 
mergedRange.getRecommendedVersion().toString() );
+
+        mergedRange = range2.restrict( range1 );
+        assertEquals( CHECK_VERSION_RECOMMENDATION, "1.1", 
mergedRange.getRecommendedVersion().toString() );
     }
 
     private void checkInvalidRange( String version )

Modified: 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
URL: 
http://svn.apache.org/viewcvs/maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java?rev=219630&r1=219629&r2=219630&view=diff
==============================================================================
--- 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
 (original)
+++ 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
 Tue Jul 19 01:23:01 2005
@@ -29,6 +29,7 @@
 import org.apache.maven.artifact.resolver.filter.ExclusionSetFilter;
 import org.apache.maven.artifact.resolver.filter.InversionArtifactFilter;
 import org.apache.maven.artifact.resolver.filter.ScopeArtifactFilter;
+import 
org.apache.maven.artifact.versioning.InvalidVersionSpecificationException;
 import org.apache.maven.artifact.versioning.VersionRange;
 import org.apache.maven.execution.MavenSession;
 import org.apache.maven.model.Plugin;
@@ -105,7 +106,7 @@
     protected ArtifactResolver artifactResolver;
 
     protected MavenProjectBuilder mavenProjectBuilder;
-    
+
     protected MavenPluginMappingBuilder pluginMappingBuilder;
     // END component requirements
 
@@ -123,17 +124,19 @@
     {
         return pluginCollector.getPluginDescriptorForPrefix( prefix );
     }
-    
-    public Plugin getPluginDefinitionForPrefix( String prefix, MavenSession 
session, MavenProject project ) throws PluginManagerException
+
+    public Plugin getPluginDefinitionForPrefix( String prefix, MavenSession 
session, MavenProject project )
+        throws PluginManagerException
     {
         PluginMappingManager mappingManager = getPluginMappingManager( 
session, project );
 
         Plugin plugin = mappingManager.getByPrefix( prefix );
-        
+
         if ( plugin == null && !mappingManager.isRefreshed() )
         {
-            getLogger().info( "Refreshing plugin mapping metadata; looking for 
plugin with prefix: \'" + prefix + "\'." );
-            
+            getLogger().info(
+                "Refreshing plugin mapping metadata; looking for plugin with 
prefix: \'" + prefix + "\'." );
+
             try
             {
                 mappingManager = 
pluginMappingBuilder.refreshPluginMappingManager( session
@@ -148,10 +151,10 @@
             {
                 throw new PluginManagerException( "Error refreshing plugin 
mappings.", e );
             }
-            
+
             plugin = mappingManager.getByPrefix( prefix );
         }
-        
+
         return plugin;
     }
 
@@ -175,7 +178,7 @@
         {
             try
             {
-                VersionRange versionRange = new VersionRange( 
plugin.getVersion() );
+                VersionRange versionRange = 
VersionRange.createFromVersionSpec( plugin.getVersion() );
                 Artifact pluginArtifact = 
artifactFactory.createPluginArtifact( plugin.getGroupId(),
                                                                                
 plugin.getArtifactId(), versionRange );
 
@@ -198,9 +201,12 @@
                 String artifactId = plugin.getArtifactId();
                 String version = plugin.getVersion();
 
-                if ( ( groupId == null || artifactId == null || version == 
null || ( groupId.equals( e.getGroupId() ) &&
-                    artifactId.equals( e.getArtifactId() ) && version.equals( 
e.getVersion() ) ) ) &&
-                    "maven-plugin".equals( e.getType() ) )
+                if ( groupId == null || artifactId == null || version == null )
+                {
+                    throw new PluginNotFoundException( e );
+                }
+                else if ( groupId.equals( e.getGroupId() ) && 
artifactId.equals( e.getArtifactId() ) &&
+                    version.equals( e.getVersion() ) && "maven-plugin".equals( 
e.getType() ) )
                 {
                     throw new PluginNotFoundException( e );
                 }
@@ -209,6 +215,11 @@
                     throw e;
                 }
             }
+            catch ( InvalidVersionSpecificationException e )
+            {
+                throw new PluginVersionResolutionException( 
plugin.getGroupId(), plugin.getArtifactId(),
+                                                            "Invalid version 
specification", e );
+            }
         }
 
         return pluginCollector.getPluginDescriptor( plugin );
@@ -256,7 +267,7 @@
 
         String goalName = mojoDescriptor.getFullGoalName();
 
-        Mojo plugin = null;
+        Mojo plugin;
 
         try
         {
@@ -477,7 +488,7 @@
                 {
                     Artifact artifact = (Artifact) it.next();
 
-                    if ( artifact != pluginArtifact )
+                    if ( !artifact.equals( pluginArtifact ) )
                     {
                         pluginContainer.addJarResource( artifact.getFile() );
                     }
@@ -534,7 +545,7 @@
 
             if ( parameterMap.containsKey( child.getName() ) )
             {
-                extractedConfiguration.addChild( 
DefaultPluginManager.copyConfiguration( child ) );
+                extractedConfiguration.addChild( copyConfiguration( child ) );
             }
             else
             {
@@ -711,7 +722,7 @@
         for ( int i = 0; i < children.length; i++ )
         {
             PlexusConfiguration child = children[i];
-            PlexusConfiguration childDom = (XmlPlexusConfiguration) 
dominant.getChild( child.getName(), false );
+            PlexusConfiguration childDom = dominant.getChild( child.getName(), 
false );
             if ( childDom != null )
             {
                 mergeConfiguration( childDom, child );
@@ -803,22 +814,24 @@
     private Field findPluginField( Class clazz, String key )
         throws NoSuchFieldException
     {
-        try
-        {
-            return clazz.getDeclaredField( key );
-        }
-        catch ( NoSuchFieldException e )
+        Field field = null;
+
+        while ( field == null )
         {
-            Class superclass = clazz.getSuperclass();
-            if ( superclass != Object.class )
+            try
             {
-                return findPluginField( superclass, key );
+                field = clazz.getDeclaredField( key );
             }
-            else
+            catch ( NoSuchFieldException e )
             {
-                throw e;
+                clazz = clazz.getSuperclass();
+                if ( clazz.equals( Object.class ) )
+                {
+                    throw e;
+                }
             }
         }
+        return field;
     }
 
     public static String createPluginParameterRequiredMessage( MojoDescriptor 
mojo, Parameter parameter,
@@ -963,36 +976,36 @@
         return pluginContainer.lookup( role, roleHint );
     }
 
-    private PluginMappingManager getPluginMappingManager( MavenSession 
session, MavenProject project ) 
-    throws PluginManagerException
-{
-    PluginMappingManager mappingManager = session.getPluginMappingManager();
-
-    // don't reassemble the plugin mappings if the session has already been 
configured with them.
-    if ( mappingManager == null )
+    private PluginMappingManager getPluginMappingManager( MavenSession 
session, MavenProject project )
+        throws PluginManagerException
     {
-        try
+        PluginMappingManager mappingManager = 
session.getPluginMappingManager();
+
+        // don't reassemble the plugin mappings if the session has already 
been configured with them.
+        if ( mappingManager == null )
         {
-            List pluginGroupIds = session.getSettings().getPluginGroups();
-            List pluginRepositories = project.getPluginArtifactRepositories();
-            ArtifactRepository localRepository = session.getLocalRepository();
+            try
+            {
+                List pluginGroupIds = session.getSettings().getPluginGroups();
+                List pluginRepositories = 
project.getPluginArtifactRepositories();
+                ArtifactRepository localRepository = 
session.getLocalRepository();
 
-            mappingManager = pluginMappingBuilder.loadPluginMappings( 
pluginGroupIds, pluginRepositories,
-                                                                      
localRepository );
+                mappingManager = pluginMappingBuilder.loadPluginMappings( 
pluginGroupIds, pluginRepositories,
+                                                                          
localRepository );
 
-            // lazily configure this on the session.
-            session.setPluginMappingManager( mappingManager );
-        }
-        catch ( RepositoryMetadataManagementException e )
-        {
-            throw new PluginManagerException( "Cannot load plugin mappings.", 
e );
-        }
-        catch ( PluginMappingManagementException e )
-        {
-            throw new PluginManagerException( "Cannot load plugin mappings.", 
e );
+                // lazily configure this on the session.
+                session.setPluginMappingManager( mappingManager );
+            }
+            catch ( RepositoryMetadataManagementException e )
+            {
+                throw new PluginManagerException( "Cannot load plugin 
mappings.", e );
+            }
+            catch ( PluginMappingManagementException e )
+            {
+                throw new PluginManagerException( "Cannot load plugin 
mappings.", e );
+            }
         }
+
+        return mappingManager;
     }
-    
-    return mappingManager;
-}
 }

Modified: 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
URL: 
http://svn.apache.org/viewcvs/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java?rev=219630&r1=219629&r2=219630&view=diff
==============================================================================
--- 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
 (original)
+++ 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
 Tue Jul 19 01:23:01 2005
@@ -24,6 +24,7 @@
 import org.apache.maven.artifact.resolver.ArtifactResolutionException;
 import org.apache.maven.artifact.resolver.ArtifactResolutionResult;
 import org.apache.maven.artifact.resolver.ArtifactResolver;
+import 
org.apache.maven.artifact.versioning.InvalidVersionSpecificationException;
 import org.apache.maven.artifact.versioning.VersionRange;
 import org.apache.maven.model.Build;
 import org.apache.maven.model.Dependency;
@@ -158,6 +159,7 @@
     }
 
     private Map createManagedVersionMap( DependencyManagement 
dependencyManagement )
+        throws ProjectBuildingException
     {
         Map map;
         if ( dependencyManagement != null && 
dependencyManagement.getDependencies() != null )
@@ -167,11 +169,18 @@
             {
                 Dependency d = (Dependency) i.next();
 
-                Artifact artifact = artifactFactory.createDependencyArtifact( 
d.getGroupId(), d.getArtifactId(),
-                                                                              
new VersionRange( d.getVersion() ),
-                                                                              
d.getType(), d.getScope() );
-
-                map.put( d.getManagementKey(), artifact );
+                try
+                {
+                    VersionRange versionRange = 
VersionRange.createFromVersionSpec( d.getVersion() );
+                    Artifact artifact = 
artifactFactory.createDependencyArtifact( d.getGroupId(), d.getArtifactId(),
+                                                                               
   versionRange, d.getType(),
+                                                                               
   d.getScope() );
+                    map.put( d.getManagementKey(), artifact );
+                }
+                catch ( InvalidVersionSpecificationException e )
+                {
+                    throw new ProjectBuildingException( "Unable to parse 
dependency version", e );
+                }
             }
         }
         else
@@ -499,8 +508,7 @@
         try
         {
             reader = new FileReader( file );
-            Model model = modelReader.read( reader );
-            return model;
+            return modelReader.read( reader );
         }
         catch ( FileNotFoundException e )
         {
@@ -558,11 +566,20 @@
     }
 
     protected Set createArtifacts( List dependencies )
+        throws ProjectBuildingException
     {
-        return MavenMetadataSource.createArtifacts( artifactFactory, 
dependencies, null, null );
+        try
+        {
+            return MavenMetadataSource.createArtifacts( artifactFactory, 
dependencies, null, null );
+        }
+        catch ( InvalidVersionSpecificationException e )
+        {
+            throw new ProjectBuildingException( "Unable to parse dependency 
version", e );
+        }
     }
 
     protected Set createPluginArtifacts( List plugins )
+        throws ProjectBuildingException
     {
         Set pluginArtifacts = new HashSet();
 
@@ -580,8 +597,17 @@
                 version = p.getVersion();
             }
 
-            Artifact artifact = artifactFactory.createPluginArtifact( 
p.getGroupId(), p.getArtifactId(),
-                                                                      new 
VersionRange( version ) );
+            Artifact artifact = null;
+            try
+            {
+                artifact = artifactFactory.createPluginArtifact( 
p.getGroupId(), p.getArtifactId(),
+                                                                 
VersionRange.createFromVersionSpec( version ) );
+            }
+            catch ( InvalidVersionSpecificationException e )
+            {
+                throw new ProjectBuildingException( "Unable to parse plugin 
version", e );
+            }
+
             if ( artifact != null )
             {
                 pluginArtifacts.add( artifact );
@@ -630,9 +656,7 @@
     {
         URL url = DefaultMavenProjectBuilder.class.getResource( "pom-" + 
MAVEN_MODEL_VERSION + ".xml" );
 
-        Model superModel = readModel( url );
-
-        return superModel;
+        return readModel( url );
     }
 
     public void contextualize( Context context )

Modified: 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java
URL: 
http://svn.apache.org/viewcvs/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java?rev=219630&r1=219629&r2=219630&view=diff
==============================================================================
--- 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java
 (original)
+++ 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java
 Tue Jul 19 01:23:01 2005
@@ -22,10 +22,10 @@
 import org.apache.maven.artifact.metadata.ArtifactMetadataSource;
 import org.apache.maven.artifact.metadata.ResolutionGroup;
 import org.apache.maven.artifact.repository.ArtifactRepository;
-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.InvalidVersionSpecificationException;
 import org.apache.maven.artifact.versioning.VersionRange;
 import org.apache.maven.model.Dependency;
 import org.apache.maven.model.Exclusion;
@@ -62,7 +62,7 @@
     {
         // TODO: only metadata is really needed - resolve as metadata
         Artifact pomArtifact = artifactFactory.createProjectArtifact( 
artifact.getGroupId(), artifact.getArtifactId(),
-                                                               
artifact.getVersion(), artifact.getScope() );
+                                                                      
artifact.getVersion(), artifact.getScope() );
 
         // TODO: this a very thin wrapper around a project builder - is it 
needed?
         List dependencies = null;
@@ -85,10 +85,15 @@
         {
             throw new ArtifactMetadataRetrievalException( "Unable to read the 
metadata file", e );
         }
+        catch ( InvalidVersionSpecificationException e )
+        {
+            throw new ArtifactMetadataRetrievalException( "Unable to read the 
metadata file", e );
+        }
     }
 
     public static Set createArtifacts( ArtifactFactory artifactFactory, List 
dependencies, String inheritedScope,
                                        ArtifactFilter dependencyFilter )
+        throws InvalidVersionSpecificationException
     {
         Set projectArtifacts = new HashSet();
 
@@ -97,8 +102,10 @@
             Dependency d = (Dependency) i.next();
 
             Artifact artifact = artifactFactory.createDependencyArtifact( 
d.getGroupId(), d.getArtifactId(),
-                                                                          new 
VersionRange( d.getVersion() ),
-                                                                          
d.getType(), d.getScope(), inheritedScope );
+                                                                          
VersionRange.createFromVersionSpec(
+                                                                              
d.getVersion() ), d.getType(),
+                                                                               
                 d.getScope(),
+                                                                               
                 inheritedScope );
 
             if ( artifact != null && ( dependencyFilter == null || 
dependencyFilter.include( artifact ) ) )
             {

Modified: 
maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/ProjectClasspathArtifactResolver.java
URL: 
http://svn.apache.org/viewcvs/maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/ProjectClasspathArtifactResolver.java?rev=219630&r1=219629&r2=219630&view=diff
==============================================================================
--- 
maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/ProjectClasspathArtifactResolver.java
 (original)
+++ 
maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/ProjectClasspathArtifactResolver.java
 Tue Jul 19 01:23:01 2005
@@ -27,6 +27,7 @@
 import org.apache.maven.artifact.resolver.ArtifactResolutionResult;
 import org.apache.maven.artifact.resolver.DefaultArtifactResolver;
 import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
+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.Model;
@@ -81,7 +82,7 @@
             try
             {
                 String scope = artifact.getArtifactId().substring( 
"scope-".length() );
-                if ( artifact.getGroupId().equals( "maven-test" ) )
+                if ( "maven-test".equals( artifact.getGroupId() ) )
                 {
                     String name = "/projects/scope/transitive-" + scope + 
"-dep.xml";
                     r = new InputStreamReader( getClass().getResourceAsStream( 
name ) );
@@ -108,7 +109,15 @@
                 IOUtil.close( r );
             }
 
-            Set artifacts = createArtifacts( model.getDependencies(), 
artifact.getScope() );
+            Set artifacts = null;
+            try
+            {
+                artifacts = createArtifacts( model.getDependencies(), 
artifact.getScope() );
+            }
+            catch ( InvalidVersionSpecificationException e )
+            {
+                throw new ArtifactMetadataRetrievalException( e );
+            }
 
             List artifactRepositories;
             try
@@ -125,6 +134,7 @@
         }
 
         protected Set createArtifacts( List dependencies, String 
inheritedScope )
+            throws InvalidVersionSpecificationException
         {
             Set projectArtifacts = new HashSet();
 
@@ -132,9 +142,9 @@
             {
                 Dependency d = (Dependency) i.next();
 
+                VersionRange versionRange = 
VersionRange.createFromVersionSpec( d.getVersion() );
                 Artifact artifact = artifactFactory.createDependencyArtifact( 
d.getGroupId(), d.getArtifactId(),
-                                                                              
new VersionRange( d.getVersion() ),
-                                                                              
d.getType(), d.getScope(), 
+                                                                              
versionRange, d.getType(), d.getScope(),
                                                                               
inheritedScope );
                 if ( artifact != null )
                 {



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to