Author: jdcasey Date: Thu May 29 10:41:01 2008 New Revision: 661417 URL: http://svn.apache.org/viewvc?rev=661417&view=rev Log: [MARTIFACT-18] Use BigInteger for version parsing.
Modified: maven/artifact/trunk/src/main/java/org/apache/maven/artifact/versioning/ComparableVersion.java maven/artifact/trunk/src/test/java/org/apache/maven/artifact/versioning/DefaultArtifactVersionTest.java Modified: maven/artifact/trunk/src/main/java/org/apache/maven/artifact/versioning/ComparableVersion.java URL: http://svn.apache.org/viewvc/maven/artifact/trunk/src/main/java/org/apache/maven/artifact/versioning/ComparableVersion.java?rev=661417&r1=661416&r2=661417&view=diff ============================================================================== --- maven/artifact/trunk/src/main/java/org/apache/maven/artifact/versioning/ComparableVersion.java (original) +++ maven/artifact/trunk/src/main/java/org/apache/maven/artifact/versioning/ComparableVersion.java Thu May 29 10:41:01 2008 @@ -19,13 +19,14 @@ * under the License. */ +import java.math.BigInteger; 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.Properties; import java.util.Stack; /** @@ -63,11 +64,20 @@ private static class IntegerItem implements Item { - private Integer value; + private static final BigInteger BigInteger_ZERO = new BigInteger( "0" ); + + private final BigInteger value; + + public static final IntegerItem ZERO = new IntegerItem(); + + private IntegerItem() + { + this.value = BigInteger_ZERO; + } - public IntegerItem( Integer i ) + public IntegerItem( String str ) { - this.value = i; + this.value = new BigInteger( str ); } public int getType() @@ -77,14 +87,14 @@ public boolean isNull() { - return (value == 0 ); + return BigInteger_ZERO.equals( value ); } public int compareTo( Item item ) { if ( item == null ) { - return value == 0 ? 0 : 1; // 1.0 == 1, 1.1 > 1 + return BigInteger_ZERO.equals( value ) ? 0 : 1; // 1.0 == 1, 1.1 > 1 } switch ( item.getType() ) @@ -337,7 +347,7 @@ { if ( i == startIndex ) { - list.add( new IntegerItem( 0 ) ); + list.add( IntegerItem.ZERO ); } else { @@ -349,7 +359,7 @@ { if ( i == startIndex ) { - list.add( new IntegerItem( 0 ) ); + list.add( IntegerItem.ZERO ); } else { @@ -409,7 +419,7 @@ private static Item parseItem( boolean isDigit, String buf ) { - return isDigit ? new IntegerItem( new Integer( buf ) ) : new StringItem( buf, false ); + return isDigit ? new IntegerItem( buf ) : new StringItem( buf, false ); } public int compareTo( Object o ) Modified: maven/artifact/trunk/src/test/java/org/apache/maven/artifact/versioning/DefaultArtifactVersionTest.java URL: http://svn.apache.org/viewvc/maven/artifact/trunk/src/test/java/org/apache/maven/artifact/versioning/DefaultArtifactVersionTest.java?rev=661417&r1=661416&r2=661417&view=diff ============================================================================== --- maven/artifact/trunk/src/test/java/org/apache/maven/artifact/versioning/DefaultArtifactVersionTest.java (original) +++ maven/artifact/trunk/src/test/java/org/apache/maven/artifact/versioning/DefaultArtifactVersionTest.java Thu May 29 10:41:01 2008 @@ -76,6 +76,10 @@ checkVersionParsing( "1.7.3.0-1" , 0, 0, 0, 0, "1.7.3.0-1" ); checkVersionParsing( "PATCH-1193602" , 0, 0, 0, 0, "PATCH-1193602" ); checkVersionParsing( "5.0.0alpha-2006020117" , 0, 0, 0, 0, "5.0.0alpha-2006020117" ); + + checkVersionParsing( "1.2.3.200705301630" , 0, 0, 0, 0, "1.2.3.200705301630" ); + checkVersionParsing( "1.2.3-200705301630" , 1, 2, 3, 0, "200705301630" ); + } public void testVersionComparing() @@ -112,6 +116,9 @@ assertVersionOlder( "2.0.1", "2.0.1-123" ); assertVersionOlder( "2.0.1-xyz", "2.0.1-123" ); + + assertVersionOlder( "1.2.3-10000000000", "1.2.3-10000000001" ); + assertVersionOlder( "1.2.3-1", "1.2.3-10000000001" ); } public void testVersionSnapshotComparing()