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]

Reply via email to