You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by jd...@apache.org on 2008/05/29 19:41:01 UTC
svn commit: r661417 - in /maven/artifact/trunk/src:
main/java/org/apache/maven/artifact/versioning/ComparableVersion.java
test/java/org/apache/maven/artifact/versioning/DefaultArtifactVersionTest.java
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()