You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by hb...@apache.org on 2008/04/27 21:49:13 UTC

svn commit: r652007 - in /maven/artifact/branches/MNG-3010/src: main/java/org/apache/maven/artifact/versioning/DefaultArtifactVersion.java test/java/org/apache/maven/artifact/versioning/DefaultArtifactVersionTest.java

Author: hboutemy
Date: Sun Apr 27 12:49:11 2008
New Revision: 652007

URL: http://svn.apache.org/viewvc?rev=652007&view=rev
Log:
[MNG-3010] integrated ComparableVersion to DefaultArtifactVersion for comparison and updated unit-tests

Modified:
    maven/artifact/branches/MNG-3010/src/main/java/org/apache/maven/artifact/versioning/DefaultArtifactVersion.java
    maven/artifact/branches/MNG-3010/src/test/java/org/apache/maven/artifact/versioning/DefaultArtifactVersionTest.java

Modified: maven/artifact/branches/MNG-3010/src/main/java/org/apache/maven/artifact/versioning/DefaultArtifactVersion.java
URL: http://svn.apache.org/viewvc/maven/artifact/branches/MNG-3010/src/main/java/org/apache/maven/artifact/versioning/DefaultArtifactVersion.java?rev=652007&r1=652006&r2=652007&view=diff
==============================================================================
--- maven/artifact/branches/MNG-3010/src/main/java/org/apache/maven/artifact/versioning/DefaultArtifactVersion.java (original)
+++ maven/artifact/branches/MNG-3010/src/main/java/org/apache/maven/artifact/versioning/DefaultArtifactVersion.java Sun Apr 27 12:49:11 2008
@@ -40,6 +40,8 @@
 
     private String qualifier;
 
+    private ComparableVersion comparable;
+
     public DefaultArtifactVersion( String version )
     {
         parseVersion( version );
@@ -60,78 +62,7 @@
     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()
@@ -161,6 +92,8 @@
 
     public final void parseVersion( String version )
     {
+        comparable = new ComparableVersion( version );
+
         int index = version.indexOf( "-" );
 
         String part1;

Modified: maven/artifact/branches/MNG-3010/src/test/java/org/apache/maven/artifact/versioning/DefaultArtifactVersionTest.java
URL: http://svn.apache.org/viewvc/maven/artifact/branches/MNG-3010/src/test/java/org/apache/maven/artifact/versioning/DefaultArtifactVersionTest.java?rev=652007&r1=652006&r2=652007&view=diff
==============================================================================
--- maven/artifact/branches/MNG-3010/src/test/java/org/apache/maven/artifact/versioning/DefaultArtifactVersionTest.java (original)
+++ maven/artifact/branches/MNG-3010/src/test/java/org/apache/maven/artifact/versioning/DefaultArtifactVersionTest.java Sun Apr 27 12:49:11 2008
@@ -93,7 +93,7 @@
 
         assertVersionOlder( "1.0-alpha-1", "1.0" );
         assertVersionOlder( "1.0-alpha-1", "1.0-alpha-2" );
-        //assertVersionOlder( "1.0-alpha-2", "1.0-alpha-15" );
+        assertVersionOlder( "1.0-alpha-2", "1.0-alpha-15" );
         assertVersionOlder( "1.0-alpha-1", "1.0-beta-1" );
 
         assertVersionOlder( "1.0-SNAPSHOT", "1.0-beta-1" );
@@ -108,7 +108,7 @@
         assertVersionOlder( "2.0-1", "2.0.1" );
 
         assertVersionOlder( "2.0.1-klm", "2.0.1-lmn" );
-        assertVersionOlder( "2.0.1-xyz", "2.0.1" );
+        //assertVersionOlder( "2.0.1-xyz", "2.0.1" );
 
         assertVersionOlder( "2.0.1", "2.0.1-123" );
         assertVersionOlder( "2.0.1-xyz", "2.0.1-123" );
@@ -135,25 +135,26 @@
         assertVersionOlder( "1.0-SNAPSHOT-SNAPSHOT", "1.0-SNAPSHOT" );
         assertVersionOlder( "1.0-alpha-1-SNAPSHOT-SNAPSHOT", "1.0-alpha-1-SNAPSHOT" );
 
-        //assertVersionOlder( "1.0-SNAPSHOT", "1.0-1-SNAPSHOT" );
-        //assertVersionOlder( "1.0-1-SNAPSHOT", "1.0-2-SNAPSHOT" );
+        assertVersionOlder( "1.0-SNAPSHOT", "1.0-1-SNAPSHOT" );
+        assertVersionOlder( "1.0-1-SNAPSHOT", "1.0-2-SNAPSHOT" );
         //assertVersionEqual( "2.0-0-SNAPSHOT", "2.0-SNAPSHOT" );
-        //assertVersionOlder( "2.0-SNAPSHOT", "2.0-1-SNAPSHOT" );
-        //assertVersionOlder( "2.0.0-SNAPSHOT", "2.0-1-SNAPSHOT" );
+        assertVersionOlder( "2.0-SNAPSHOT", "2.0-1-SNAPSHOT" );
+        assertVersionOlder( "2.0.0-SNAPSHOT", "2.0-1-SNAPSHOT" );
         assertVersionOlder( "2.0-1-SNAPSHOT", "2.0.1-SNAPSHOT" );
 
         assertVersionOlder( "2.0.1-klm-SNAPSHOT", "2.0.1-lmn-SNAPSHOT" );
         // assertVersionOlder( "2.0.1-xyz-SNAPSHOT", "2.0.1-SNAPSHOT" );
-        //assertVersionOlder( "2.0.1-SNAPSHOT", "2.0.1-123-SNAPSHOT" );
-        //assertVersionOlder( "2.0.1-xyz-SNAPSHOT", "2.0.1-123-SNAPSHOT" );
+        assertVersionOlder( "2.0.1-SNAPSHOT", "2.0.1-123-SNAPSHOT" );
+        assertVersionOlder( "2.0.1-xyz-SNAPSHOT", "2.0.1-123-SNAPSHOT" );
     }
 
 
     public void testSnapshotVsReleases()
     {
-        assertVersionOlder( "1.0-RC1", "1.0-SNAPSHOT" );
-        //assertVersionOlder( "1.0-rc1", "1.0-SNAPSHOT" );
-        //assertVersionOlder( "1.0-rc-1", "1.0-SNAPSHOT" );
+        //assertVersionOlder( "1.0-RC1", "1.0-SNAPSHOT" ); not feasible if "1.0-SNAPSHOT" < "1.0-beta-1" too
+        assertVersionOlder( "1.0-SNAPSHOT", "1.0-RC1" );
+        assertVersionOlder( "1.0-SNAPSHOT", "1.0-rc1" );
+        assertVersionOlder( "1.0-SNAPSHOT", "1.0-rc-1" );
     }
 
     private void assertVersionOlder( String left, String right )