Author: brett
Date: Sun Jul 17 22:54:20 2005
New Revision: 219459
URL: http://svn.apache.org/viewcvs?rev=219459&view=rev
Log:
default artifact versioning according to spec
Added:
maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/DefaultArtifactVersion.java
(with props)
maven/components/trunk/maven-artifact/src/test/java/org/apache/maven/artifact/versioning/
maven/components/trunk/maven-artifact/src/test/java/org/apache/maven/artifact/versioning/DefaultArtifactVersionTest.java
(with props)
Modified:
maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/ArtifactVersion.java
Modified:
maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/ArtifactVersion.java
URL:
http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/ArtifactVersion.java?rev=219459&r1=219458&r2=219459&view=diff
==============================================================================
---
maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/ArtifactVersion.java
(original)
+++
maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/ArtifactVersion.java
Sun Jul 17 22:54:20 2005
@@ -26,4 +26,15 @@
public interface ArtifactVersion
extends Comparable
{
+ int getMajorVersion();
+
+ int getMinorVersion();
+
+ int getIncrementalVersion();
+
+ int getBuildNumber();
+
+ String getQualifier();
+
+ void parseVersion( String version );
}
Added:
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=219459&view=auto
==============================================================================
---
maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/DefaultArtifactVersion.java
(added)
+++
maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/DefaultArtifactVersion.java
Sun Jul 17 22:54:20 2005
@@ -0,0 +1,197 @@
+package org.apache.maven.artifact.versioning;
+
+/*
+ * Copyright 2001-2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import java.util.StringTokenizer;
+
+/**
+ * Default implementation of artifact versioning.
+ *
+ * @author <a href="mailto:[EMAIL PROTECTED]">Brett Porter</a>
+ * @version $Id$
+ */
+public class DefaultArtifactVersion
+ implements ArtifactVersion
+{
+ private Integer majorVersion;
+
+ private Integer minorVersion;
+
+ private Integer incrementalVersion;
+
+ private Integer buildNumber;
+
+ private String qualifier;
+
+ public DefaultArtifactVersion( String version )
+ {
+ parseVersion( version );
+ }
+
+ 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 )
+ {
+ 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 )
+ {
+ if ( i1 == i2 )
+ {
+ return 0;
+ }
+ else if ( i1 == null )
+ {
+ return -1;
+ }
+ else if ( i2 == null )
+ {
+ return 1;
+ }
+ else
+ {
+ return i1.intValue() - i2.intValue();
+ }
+ }
+
+ public int getMajorVersion()
+ {
+ return majorVersion != null ? majorVersion.intValue() : 0;
+ }
+
+ public int getMinorVersion()
+ {
+ return minorVersion != null ? minorVersion.intValue() : 0;
+ }
+
+ public int getIncrementalVersion()
+ {
+ return incrementalVersion != null ? incrementalVersion.intValue() : 0;
+ }
+
+ public int getBuildNumber()
+ {
+ return buildNumber != null ? buildNumber.intValue() : 0;
+ }
+
+ public String getQualifier()
+ {
+ return qualifier;
+ }
+
+ public void parseVersion( String version )
+ {
+ int index = version.indexOf( "-" );
+
+ String part1 = null;
+ String part2 = null;
+
+ if ( index < 0 )
+ {
+ part1 = version;
+ }
+ else
+ {
+ part1 = version.substring( 0, index );
+ part2 = version.substring( index + 1 );
+ }
+
+ if ( part2 != null )
+ {
+ try
+ {
+ buildNumber = Integer.valueOf( part2 );
+ }
+ catch ( NumberFormatException e )
+ {
+ qualifier = part2;
+ }
+ }
+
+ 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 ( minorVersion != null )
+ {
+ buf.append( "." );
+ buf.append( minorVersion );
+ }
+ if ( incrementalVersion != null )
+ {
+ buf.append( "." );
+ buf.append( incrementalVersion );
+ }
+ if ( buildNumber != null )
+ {
+ buf.append( "-" );
+ buf.append( buildNumber );
+ }
+ else if ( qualifier != null )
+ {
+ buf.append( "-" );
+ buf.append( qualifier );
+ }
+ return buf.toString();
+ }
+}
Propchange:
maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/DefaultArtifactVersion.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/DefaultArtifactVersion.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Added:
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=219459&view=auto
==============================================================================
---
maven/components/trunk/maven-artifact/src/test/java/org/apache/maven/artifact/versioning/DefaultArtifactVersionTest.java
(added)
+++
maven/components/trunk/maven-artifact/src/test/java/org/apache/maven/artifact/versioning/DefaultArtifactVersionTest.java
Sun Jul 17 22:54:20 2005
@@ -0,0 +1,152 @@
+package org.apache.maven.artifact.versioning;
+
+/*
+ * Copyright 2001-2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import junit.framework.TestCase;
+
+/**
+ * Test DefaultArtifactVersion.
+ *
+ * @author <a href="mailto:[EMAIL PROTECTED]">Brett Porter</a>
+ * @version $Id$
+ */
+public class DefaultArtifactVersionTest
+ extends TestCase
+{
+ public void testVersionParsing()
+ {
+ DefaultArtifactVersion version = new DefaultArtifactVersion( "1" );
+ assertEquals( "check major version", 1, version.getMajorVersion() );
+ assertEquals( "check minor version", 0, version.getMinorVersion() );
+ assertEquals( "check incremental version", 0,
version.getIncrementalVersion() );
+ assertEquals( "check build number", 0, version.getBuildNumber() );
+ assertNull( "check qualifier", version.getQualifier() );
+
+ version = new DefaultArtifactVersion( "1.2" );
+ 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() );
+ assertNull( "check qualifier", version.getQualifier() );
+
+ version = new DefaultArtifactVersion( "1.2.3" );
+ assertEquals( "check major version", 1, version.getMajorVersion() );
+ assertEquals( "check minor version", 2, version.getMinorVersion() );
+ assertEquals( "check incremental version", 3,
version.getIncrementalVersion() );
+ assertEquals( "check build number", 0, version.getBuildNumber() );
+ assertNull( "check qualifier", version.getQualifier() );
+
+ version = new DefaultArtifactVersion( "1.2.3-1" );
+ assertEquals( "check major version", 1, version.getMajorVersion() );
+ assertEquals( "check minor version", 2, version.getMinorVersion() );
+ assertEquals( "check incremental version", 3,
version.getIncrementalVersion() );
+ assertEquals( "check build number", 1, version.getBuildNumber() );
+ assertNull( "check qualifier", version.getQualifier() );
+
+ version = new DefaultArtifactVersion( "1.2.3-alpha-1" );
+ assertEquals( "check major version", 1, version.getMajorVersion() );
+ assertEquals( "check minor version", 2, version.getMinorVersion() );
+ assertEquals( "check incremental version", 3,
version.getIncrementalVersion() );
+ assertEquals( "check build number", 0, version.getBuildNumber() );
+ assertEquals( "check qualifier", "alpha-1", version.getQualifier() );
+
+ version = new DefaultArtifactVersion( "1.2-alpha-1" );
+ 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", version.getQualifier() );
+
+ version = new DefaultArtifactVersion( "1.2-alpha-1-20050205.060708-1"
);
+ assertEquals( "check major version", 1, version.getMajorVersion() );
+ assertEquals( "check minor version", 2, version.getMinorVersion() );
+ assertEquals( "check incremental version", 0,
version.getIncrementalVersion() );
+ assertEquals( "check qualifier", "alpha-1-20050205.060708-1",
version.getQualifier() );
+ }
+
+ public void testVersionComparing()
+ {
+ DefaultArtifactVersion version = new DefaultArtifactVersion( "1" );
+ assertTrue( version.compareTo( new DefaultArtifactVersion( "2" ) ) < 0
);
+
+ version = new DefaultArtifactVersion( "1.5" );
+ assertTrue( version.compareTo( new DefaultArtifactVersion( "2" ) ) < 0
);
+
+ version = new DefaultArtifactVersion( "1" );
+ assertTrue( version.compareTo( new DefaultArtifactVersion( "1" ) ) ==
0 );
+
+ version = new DefaultArtifactVersion( "2" );
+ assertTrue( version.compareTo( new DefaultArtifactVersion( "1" ) ) > 0
);
+
+ version = new DefaultArtifactVersion( "2.5" );
+ assertTrue( version.compareTo( new DefaultArtifactVersion( "1" ) ) > 0
);
+
+ version = new DefaultArtifactVersion( "1.0" );
+ assertTrue( version.compareTo( new DefaultArtifactVersion( "1" ) ) > 0
);
+
+ version = new DefaultArtifactVersion( "1.0.0" );
+ assertTrue( version.compareTo( new DefaultArtifactVersion( "1" ) ) > 0
);
+
+ version = new DefaultArtifactVersion( "1.0" );
+ assertTrue( version.compareTo( new DefaultArtifactVersion( "1.1" ) ) <
0 );
+
+ version = new DefaultArtifactVersion( "1.2" );
+ assertTrue( version.compareTo( new DefaultArtifactVersion( "1.1" ) ) >
0 );
+
+ version = new DefaultArtifactVersion( "1.0.0" );
+ assertTrue( version.compareTo( new DefaultArtifactVersion( "1.1" ) ) <
0 );
+
+ version = new DefaultArtifactVersion( "1.2.0" );
+ assertTrue( version.compareTo( new DefaultArtifactVersion( "1.1" ) ) >
0 );
+
+ version = new DefaultArtifactVersion( "1.0-alpha-1" );
+ assertTrue( version.compareTo( new DefaultArtifactVersion( "1.0" ) ) <
0 );
+
+ version = new DefaultArtifactVersion( "1.0-alpha-1" );
+ assertTrue( version.compareTo( new DefaultArtifactVersion(
"1.0-alpha-2" ) ) < 0 );
+
+ version = new DefaultArtifactVersion( "1.0-alpha-1" );
+ assertTrue( version.compareTo( new DefaultArtifactVersion(
"1.0-beta-1" ) ) < 0 );
+
+ version = new DefaultArtifactVersion( "1.0" );
+ assertTrue( version.compareTo( new DefaultArtifactVersion(
"1.0-alpha-1" ) ) > 0 );
+
+ version = new DefaultArtifactVersion( "1.0-alpha-2" );
+ assertTrue( version.compareTo( new DefaultArtifactVersion(
"1.0-alpha-1" ) ) > 0 );
+
+ version = new DefaultArtifactVersion( "1.0-beta-1" );
+ assertTrue( version.compareTo( new DefaultArtifactVersion(
"1.0-alpha-1" ) ) > 0 );
+
+ version = new DefaultArtifactVersion( "1.0-beta-1" );
+ assertTrue( version.compareTo( new DefaultArtifactVersion(
"1.0-SNAPSHOT" ) ) > 0 );
+
+ version = new DefaultArtifactVersion( "1.0-SNAPSHOT" );
+ assertTrue( version.compareTo( new DefaultArtifactVersion(
"1.0-beta-1" ) ) < 0 );
+
+ version = new DefaultArtifactVersion( "1.0" );
+ assertTrue( version.compareTo( new DefaultArtifactVersion( "1.0-1" ) )
< 0 );
+
+ version = new DefaultArtifactVersion( "1.0-1" );
+ assertTrue( version.compareTo( new DefaultArtifactVersion( "1.0-2" ) )
< 0 );
+
+ version = new DefaultArtifactVersion( "1.0-1" );
+ assertTrue( version.compareTo( new DefaultArtifactVersion( "1.0" ) ) >
0 );
+
+ version = new DefaultArtifactVersion( "1.0-2" );
+ assertTrue( version.compareTo( new DefaultArtifactVersion( "1.0-1" ) )
> 0 );
+ }
+}
Propchange:
maven/components/trunk/maven-artifact/src/test/java/org/apache/maven/artifact/versioning/DefaultArtifactVersionTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
maven/components/trunk/maven-artifact/src/test/java/org/apache/maven/artifact/versioning/DefaultArtifactVersionTest.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]