added support for a, b and m aliases for alpha, beta and milestone when followed by a digit (a1, b1 and m1 for example)

git-svn-id: https://svn.apache.org/repos/asf/maven/artifact/branches/MNG-3010@653908 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/main/java/org/apache/maven/artifact/versioning/ComparableVersion.java b/src/main/java/org/apache/maven/artifact/versioning/ComparableVersion.java
index 2ed64c7..a06107a 100644
--- a/src/main/java/org/apache/maven/artifact/versioning/ComparableVersion.java
+++ b/src/main/java/org/apache/maven/artifact/versioning/ComparableVersion.java
@@ -115,7 +115,7 @@
     private static class StringItem
         implements Item
     {
-        private final static String[] QUALIFIERS = { "snapshot", "alpha", "beta", "rc", "", "sp" };
+        private final static String[] QUALIFIERS = { "snapshot", "alpha", "beta", "milestone", "rc", "", "sp" };
 
         private final static List _QUALIFIERS = Arrays.asList( QUALIFIERS );
 
@@ -133,8 +133,24 @@
 
         private String value;
 
-        public StringItem( String value )
+        public StringItem( String value, boolean followedByDigit )
         {
+            if ( followedByDigit && value.length() == 1 )
+            {
+                // a1 = alpha-1, b1 = beta-1, m1 = milestone-1
+                switch ( value.charAt( 0 ) )
+                {
+                    case 'a':
+                        value = "alpha";
+                        break;
+                    case 'b':
+                        value = "beta";
+                        break;
+                    case 'm':
+                        value = "milestone";
+                        break;
+                }
+            }
             this.value = ALIASES.getProperty( value , value );
         }
 
@@ -359,7 +375,7 @@
             {
                 if ( !isDigit && i > startIndex )
                 {
-                    list.add( new StringItem( version.substring( startIndex, i ) ) );
+                    list.add( new StringItem( version.substring( startIndex, i ), true ) );
                     startIndex = i;
                 }
 
@@ -393,7 +409,7 @@
 
     private static Item parseItem( boolean isDigit, String buf )
     {
-        return isDigit ? new IntegerItem( new Integer( buf ) ) : new StringItem( buf );
+        return isDigit ? new IntegerItem( new Integer( buf ) ) : new StringItem( buf, false );
     }
 
     public int compareTo( Object o )
diff --git a/src/test/java/org/apache/maven/artifact/versioning/ComparableVersionTest.java b/src/test/java/org/apache/maven/artifact/versioning/ComparableVersionTest.java
index 82c4310..e963e78 100644
--- a/src/test/java/org/apache/maven/artifact/versioning/ComparableVersionTest.java
+++ b/src/test/java/org/apache/maven/artifact/versioning/ComparableVersionTest.java
@@ -38,13 +38,13 @@
     }
 
     private static final String[] VERSIONS_QUALIFIER = {
-        "1-SNAPSHOT", "1-alpha2snapshot", "1-alpha2", "1-alpha-123", "1-beta-2", "1-beta123", "1-rc", "1-cr2", "1-rc123",
-        "1", "1-sp", "1-sp2", "1-sp123", "1-abc", "1-def", "1-1-snapshot", "1-1", "1-2", "1-123"
+        "1-SNAPSHOT", "1-alpha2snapshot", "1-alpha2", "1-alpha-123", "1-beta-2", "1-beta123", "1-m2", "1-m11", "1-rc",
+        "1-cr2", "1-rc123", "1", "1-sp", "1-sp2", "1-sp123", "1-abc", "1-def", "1-1-snapshot", "1-1", "1-2", "1-123"
     };
 
     private static final String[] VERSIONS_NUMBER = {
         "2.0", "2-1", "2.0.a", "2.0.0.a", "2.0.2", "2.0.123", "2.1.0", "2.1-a", "2.1b", "2.1-c", "2.1-1", "2.1.0.1",
-        "2.2", "2.123", "11", "11b", "11c"
+        "2.2", "2.123", "11.a2", "11.a11", "11.b2", "11.b11", "11.m2", "11.m11", "11", "11.a", "11b", "11c", "11m"
     };
 
     private void checkVersionsOrder( String[] versions )
@@ -116,6 +116,11 @@
         checkVersionsEqual( "1ga", "1" );
         checkVersionsEqual( "1final", "1" );
         checkVersionsEqual( "1cr", "1rc" );
+
+        // special "aliases" a, b and m for alpha, beta and milestone
+        checkVersionsEqual( "1a1", "1alpha1" );
+        checkVersionsEqual( "1b2", "1beta2" );
+        checkVersionsEqual( "1m3", "1milestone3" );
     }
 
     public void testVersionComparing()