Repository: maven
Updated Branches:
  refs/heads/master 8788c90ab -> 09d64bdf5


[MNG-5730] added CLI to test Maven version parsing and comparison

Project: http://git-wip-us.apache.org/repos/asf/maven/repo
Commit: http://git-wip-us.apache.org/repos/asf/maven/commit/09d64bdf
Tree: http://git-wip-us.apache.org/repos/asf/maven/tree/09d64bdf
Diff: http://git-wip-us.apache.org/repos/asf/maven/diff/09d64bdf

Branch: refs/heads/master
Commit: 09d64bdf5ceb55dcda36356a04f3723e6440b65e
Parents: 8788c90
Author: Hervé Boutemy <[email protected]>
Authored: Sun Nov 30 21:56:58 2014 +0100
Committer: Hervé Boutemy <[email protected]>
Committed: Sun Nov 30 21:57:07 2014 +0100

----------------------------------------------------------------------
 maven-artifact/pom.xml                          | 11 +++++
 .../artifact/versioning/ComparableVersion.java  | 47 +++++++++++++++++---
 maven-artifact/src/site/apt/index.apt           | 16 ++++++-
 .../versioning/ComparableVersionTest.java       |  9 +++-
 4 files changed, 75 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/maven/blob/09d64bdf/maven-artifact/pom.xml
----------------------------------------------------------------------
diff --git a/maven-artifact/pom.xml b/maven-artifact/pom.xml
index b828dfa..b5f284c 100644
--- a/maven-artifact/pom.xml
+++ b/maven-artifact/pom.xml
@@ -42,6 +42,17 @@
         <groupId>org.codehaus.plexus</groupId>
         <artifactId>plexus-component-metadata</artifactId>
       </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-jar-plugin</artifactId>
+        <configuration>
+          <archive>
+            <manifestEntries>
+              
<Main-Class>org.apache.maven.artifact.versioning.ComparableVersion</Main-Class>
+            </manifestEntries>
+          </archive>
+        </configuration>
+      </plugin>
     </plugins>
   </build>
 </project>

http://git-wip-us.apache.org/repos/asf/maven/blob/09d64bdf/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/ComparableVersion.java
----------------------------------------------------------------------
diff --git 
a/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/ComparableVersion.java
 
b/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/ComparableVersion.java
index c83cbd1..df8543b 100644
--- 
a/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/ComparableVersion.java
+++ 
b/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/ComparableVersion.java
@@ -329,16 +329,16 @@ public class ComparableVersion
 
         public String toString()
         {
-            StringBuilder buffer = new StringBuilder( "(" );
+            StringBuilder buffer = new StringBuilder();
             for ( Iterator<Item> iter = iterator(); iter.hasNext(); )
             {
-                buffer.append( iter.next() );
-                if ( iter.hasNext() )
+                Item item = iter.next();
+                if ( buffer.length() > 0 )
                 {
-                    buffer.append( ',' );
+                    buffer.append( ( item instanceof ListItem ) ? '-' : '.' );
                 }
+                buffer.append( item );
             }
-            buffer.append( ')' );
             return buffer.toString();
         }
     }
@@ -458,6 +458,11 @@ public class ComparableVersion
         return value;
     }
 
+    public String getCanonical()
+    {
+        return canonical;
+    }
+
     public boolean equals( Object o )
     {
         return ( o instanceof ComparableVersion ) && canonical.equals( ( 
(ComparableVersion) o ).canonical );
@@ -467,4 +472,36 @@ public class ComparableVersion
     {
         return canonical.hashCode();
     }
+
+    /**
+     * Main to test version parsing and comparison.
+     *
+     * @param args the version strings to parse and compare
+     */
+    public static void main( String... args )
+    {
+        System.out.println( "Display parameters as parsed by Maven (in 
canonical form) and comparison result:" );
+        if ( args.length == 0 )
+        {
+            return;
+        }
+
+        ComparableVersion prev = null;
+        int i = 1;
+        for ( String version : args )
+        {
+            ComparableVersion c = new ComparableVersion( version );
+
+            if ( prev != null )
+            {
+                int compare = prev.compareTo( c );
+                System.out.println( "   " + prev.toString() + ' '
+                    + ( ( compare == 0 ) ? "==" : ( ( compare < 0 ) ? "<" : 
">" ) ) + ' ' + version );
+            }
+
+            System.out.println( String.valueOf( i++ ) + ". " + version + " == 
" + c.getCanonical() );
+
+            prev = c;
+        }
+    }
 }

http://git-wip-us.apache.org/repos/asf/maven/blob/09d64bdf/maven-artifact/src/site/apt/index.apt
----------------------------------------------------------------------
diff --git a/maven-artifact/src/site/apt/index.apt 
b/maven-artifact/src/site/apt/index.apt
index abe8550..f796c11 100644
--- a/maven-artifact/src/site/apt/index.apt
+++ b/maven-artifact/src/site/apt/index.apt
@@ -20,14 +20,26 @@
  -----
  Hervé Boutemy
  -----
- 2012-09-29
+ 2014-11-30
  -----
 
 Maven Artifact
 
- Maven Artifact classes, providing <<<Artifact>>> component 
({{{./apidocs/org/apache/maven/artifact/Artifact.html}javadoc}}),
+ Maven Artifact classes, providing <<<Artifact>>> interface 
({{{./apidocs/org/apache/maven/artifact/Artifact.html}javadoc}}),
  with its <<<DefaultArtifact>>> implementation 
({{{./xref/org/apache/maven/artifact/DefaultArtifact.html}source}}).
 
+ The jar file is executable and provides a little tool to display how Maven 
parses and compares versions:
+
++----+
+$ java -jar maven-artifact-*.jar 3.2.4-alpha-1 3.2.4-SNAPSHOT 3.2.4.0
+Display parameters as parsed by Maven (in canonical form) and comparison 
result:
+1. 3.2.4-alpha-1 == 3.2.4.alpha.1
+   3.2.4-alpha-1 < 3.2.4-SNAPSHOT
+2. 3.2.4-SNAPSHOT == 3.2.4.snapshot
+   3.2.4-SNAPSHOT < 3.2.4.0
+3. 3.2.4.0 == 3.2.4
++----+
+
 * Useful entry points
 
  * artifact version comparison 
{{{./apidocs/org/apache/maven/artifact/versioning/ComparableVersion.html}javadoc}},

http://git-wip-us.apache.org/repos/asf/maven/blob/09d64bdf/maven-artifact/src/test/java/org/apache/maven/artifact/versioning/ComparableVersionTest.java
----------------------------------------------------------------------
diff --git 
a/maven-artifact/src/test/java/org/apache/maven/artifact/versioning/ComparableVersionTest.java
 
b/maven-artifact/src/test/java/org/apache/maven/artifact/versioning/ComparableVersionTest.java
index 82b261f..7e37625 100644
--- 
a/maven-artifact/src/test/java/org/apache/maven/artifact/versioning/ComparableVersionTest.java
+++ 
b/maven-artifact/src/test/java/org/apache/maven/artifact/versioning/ComparableVersionTest.java
@@ -34,7 +34,14 @@ public class ComparableVersionTest
 {
     private Comparable newComparable( String version )
     {
-        return new ComparableVersion( version );
+        ComparableVersion ret = new ComparableVersion( version );
+        String canonical = ret.getCanonical();
+        String parsedCanonical = new ComparableVersion( canonical 
).getCanonical();
+
+        assertEquals( "canonical( " + version + " ) = " + canonical + " -> 
canonical: " + parsedCanonical, canonical,
+                      parsedCanonical );
+
+        return ret;
     }
 
     private static final String[] VERSIONS_QUALIFIER =

Reply via email to