You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@maven.apache.org by br...@apache.org on 2005/07/19 10:43:59 UTC

svn commit: r219631 - in /maven/components/trunk/maven-artifact/src: main/java/org/apache/maven/artifact/versioning/VersionRange.java test/java/org/apache/maven/artifact/versioning/VersionRangeTest.java

Author: brett
Date: Tue Jul 19 01:41:28 2005
New Revision: 219631

URL: http://svn.apache.org/viewcvs?rev=219631&view=rev
Log:
PR: MNG-505
test for correct ordering and overlap

Modified:
    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/VersionRangeTest.java

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=219631&r1=219630&r2=219631&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:41:28 2005
@@ -54,6 +54,8 @@
         List restrictions = new ArrayList();
         String process = spec;
         ArtifactVersion version = null;
+        ArtifactVersion upperBound = null;
+        ArtifactVersion lowerBound = null;
 
         while ( process.startsWith( "[" ) || process.startsWith( "(" ) )
         {
@@ -74,7 +76,20 @@
                 throw new InvalidVersionSpecificationException( "Unbounded range: " + spec );
             }
 
-            restrictions.add( parseRestriction( process.substring( 0, index + 1 ) ) );
+            Restriction restriction = parseRestriction( process.substring( 0, index + 1 ) );
+            if ( lowerBound == null )
+            {
+                lowerBound = restriction.getLowerBound();
+            }
+            if ( upperBound != null )
+            {
+                if ( restriction.getLowerBound() == null || restriction.getLowerBound().compareTo( upperBound ) < 0 )
+                {
+                    throw new InvalidVersionSpecificationException( "Ranges overlap: " + spec );
+                }
+            }
+            restrictions.add( restriction );
+            upperBound = restriction.getUpperBound();
 
             process = process.substring( index + 1 ).trim();
 
@@ -141,6 +156,11 @@
             if ( upperBound.length() > 0 )
             {
                 upperVersion = new DefaultArtifactVersion( upperBound );
+            }
+
+            if ( upperVersion != null && lowerVersion != null && upperVersion.compareTo( lowerVersion ) < 0 )
+            {
+                throw new InvalidVersionSpecificationException( "Range defies version ordering: " + spec );
             }
 
             restriction = new Restriction( lowerVersion, lowerBoundInclusive, upperVersion, upperBoundInclusive );

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=219631&r1=219630&r2=219631&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:41:28 2005
@@ -124,15 +124,14 @@
         checkInvalidRange( "(1.0,1.0]" );
         checkInvalidRange( "[1.0,1.0)" );
         checkInvalidRange( "(1.0,1.0)" );
+        checkInvalidRange( "[1.1,1.0]" );
         checkInvalidRange( "[1.0,1.2),1.3" );
-/* TODO: not testing this presently
         // overlap
         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()



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
For additional commands, e-mail: dev-help@maven.apache.org