You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by hb...@apache.org on 2017/12/09 17:23:25 UTC

[maven-osgi] 03/44: use major.minor.service always, filling with 0s if required

This is an automated email from the ASF dual-hosted git repository.

hboutemy pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/maven-osgi.git

commit d0a5fa84aa3fb71a700d6d9f698f7790698cf7b3
Author: Carlos Sanchez Gonzalez <ca...@apache.org>
AuthorDate: Fri Sep 7 23:45:40 2007 +0000

    use major.minor.service always, filling with 0s if required
    
    git-svn-id: https://svn.apache.org/repos/asf/maven/shared/trunk@573759 13f79535-47bb-0310-9956-ffa450edef68
---
 .../shared/osgi/DefaultMaven2OsgiConverter.java    |  61 +++++++++++++++++----
 .../maven/shared/osgi/Maven2OsgiConverterTest.java |  25 +++++++--
 src/test/resources/aopalliance-1.0.jar             | Bin 0 -> 4467 bytes
 3 files changed, 70 insertions(+), 16 deletions(-)

diff --git a/src/main/java/org/apache/maven/shared/osgi/DefaultMaven2OsgiConverter.java b/src/main/java/org/apache/maven/shared/osgi/DefaultMaven2OsgiConverter.java
index 8e44c60..477cf58 100644
--- a/src/main/java/org/apache/maven/shared/osgi/DefaultMaven2OsgiConverter.java
+++ b/src/main/java/org/apache/maven/shared/osgi/DefaultMaven2OsgiConverter.java
@@ -48,7 +48,7 @@ public class DefaultMaven2OsgiConverter
 
     /** Bundle-Version must match this pattern */
     private static final Pattern OSGI_VERSION_PATTERN = Pattern
-        .compile( "[0-9]+(\\.[0-9]+(\\.[0-9]+(\\.[0-9A-Za-z_-]+)?)?)?" );
+        .compile( "[0-9]+\\.[0-9]+\\.[0-9]+(\\.[0-9A-Za-z_-]+)?" );
 
     /** pattern used to change - to . */
     // private static final Pattern P_VERSION = Pattern.compile("([0-9]+(\\.[0-9])*)-(.*)");
@@ -291,21 +291,47 @@ public class DefaultMaven2OsgiConverter
             }
         }
 
-        /* convert 1.string into 1.0.0.string and 1.2.string into 1.2.0.string */
-        Pattern NEED_TO_FILL_ZEROS = Pattern.compile( "([0-9])(\\.([0-9]))?\\.([0-9A-Za-z_-]+)" );
+        /* convert
+         * 1.string   -> 1.0.0.string
+         * 1.2.string -> 1.2.0.string
+         * 1          -> 1.0.0
+         * 1.1        -> 1.1.0
+         */
+        //Pattern NEED_TO_FILL_ZEROS = Pattern.compile( "([0-9])(\\.([0-9]))?\\.([0-9A-Za-z_-]+)" );
+        Pattern NEED_TO_FILL_ZEROS = Pattern.compile( "([0-9])(\\.([0-9]))?(\\.([0-9A-Za-z_-]+))?" );
         m = NEED_TO_FILL_ZEROS.matcher( osgiVersion );
         if ( m.matches() )
         {
             String major = m.group( 1 );
-            String minor = ( m.group( 3 ) != null ) ? m.group( 3 ) : "0";
-            String service = "0";
-            String qualifier = m.group( 4 );
+            String minor = m.group( 3 );
+            String service = null;
+            String qualifier = m.group( 5 );
 
-            Matcher qualifierMatcher = ONLY_NUMBERS.matcher( qualifier );
-            /* if last portion is only numbers then it's not a qualifier */
-            if ( !qualifierMatcher.matches() )
+            /* if there's no qualifier just fill with 0s */
+            if ( qualifier == null )
             {
-                osgiVersion = major + "." + minor + "." + service + "." + qualifier;
+                osgiVersion = getVersion( major, minor, service, qualifier );
+            }
+            else
+            {
+                /* if last portion is only numbers then it's not a qualifier */
+                Matcher qualifierMatcher = ONLY_NUMBERS.matcher( qualifier );
+                if ( qualifierMatcher.matches() )
+                {
+                    if ( minor == null )
+                    {
+                        minor = qualifier;
+                    }
+                    else
+                    {
+                        service = qualifier;
+                    }
+                    osgiVersion = getVersion( major, minor, service, null );
+                }
+                else
+                {
+                    osgiVersion = getVersion( major, minor, service, qualifier );
+                }
             }
         }
 
@@ -323,4 +349,19 @@ public class DefaultMaven2OsgiConverter
         return osgiVersion;
     }
 
+    private String getVersion( String major, String minor, String service, String qualifier )
+    {
+        StringBuffer sb = new StringBuffer();
+        sb.append( major != null ? major : "0" );
+        sb.append( '.' );
+        sb.append( minor != null ? minor : "0" );
+        sb.append( '.' );
+        sb.append( service != null ? service : "0" );
+        if ( qualifier != null )
+        {
+            sb.append( '.' );
+            sb.append( qualifier );
+        }
+        return sb.toString();
+    }
 }
diff --git a/src/test/java/org/apache/maven/shared/osgi/Maven2OsgiConverterTest.java b/src/test/java/org/apache/maven/shared/osgi/Maven2OsgiConverterTest.java
index 7582b91..39f8188 100644
--- a/src/test/java/org/apache/maven/shared/osgi/Maven2OsgiConverterTest.java
+++ b/src/test/java/org/apache/maven/shared/osgi/Maven2OsgiConverterTest.java
@@ -38,7 +38,8 @@ public class Maven2OsgiConverterTest
     public void testGetBundleSymbolicName()
     {
         ArtifactStub artifact = getTestArtifact();
-        String s = maven2Osgi.getBundleSymbolicName( artifact );
+        String s;
+        s = maven2Osgi.getBundleSymbolicName( artifact );
         assertEquals( "org.apache.commons.logging", s );
 
         artifact.setGroupId( "org.apache.commons" );
@@ -72,20 +73,32 @@ public class Maven2OsgiConverterTest
         artifact.setArtifactId( "xercesImpl" );
         s = maven2Osgi.getBundleSymbolicName( artifact );
         assertEquals( "xerces.Impl", s );
+
+        artifact.setFile( getTestFile( "aopalliance-1.0.jar" ) );
+        artifact.setGroupId( "org.aopalliance" );
+        artifact.setArtifactId( "aopalliance" );
+        s = maven2Osgi.getBundleSymbolicName( artifact );
+        assertEquals( "org.aopalliance", s );
     }
 
     public void testGetBundleFileName()
     {
         ArtifactStub artifact = getTestArtifact();
-        String s = maven2Osgi.getBundleFileName( artifact );
-        assertEquals( "org.apache.commons.logging_1.1.jar", s );
+        String s;
+        s = maven2Osgi.getBundleFileName( artifact );
+        assertEquals( "org.apache.commons.logging_1.1.0.jar", s );
+
+        artifact.setGroupId( "org.aopalliance" );
+        artifact.setArtifactId( "aopalliance" );
+        s = maven2Osgi.getBundleFileName( artifact );
+        assertEquals( "org.aopalliance_1.1.0.jar", s );
     }
 
     public void testGetVersion()
     {
         ArtifactStub artifact = getTestArtifact();
         String s = maven2Osgi.getVersion( artifact );
-        assertEquals( "1.1", s );
+        assertEquals( "1.1.0", s );
     }
 
     public void testConvertVersionToOsgi()
@@ -102,10 +115,10 @@ public class Maven2OsgiConverterTest
         assertEquals( "2.0.0.SNAPSHOT", osgiVersion );
 
         osgiVersion = maven2Osgi.getVersion( "2" );
-        assertEquals( "2", osgiVersion );
+        assertEquals( "2.0.0", osgiVersion );
 
         osgiVersion = maven2Osgi.getVersion( "2.1" );
-        assertEquals( "2.1", osgiVersion );
+        assertEquals( "2.1.0", osgiVersion );
 
         osgiVersion = maven2Osgi.getVersion( "2.1.3" );
         assertEquals( "2.1.3", osgiVersion );
diff --git a/src/test/resources/aopalliance-1.0.jar b/src/test/resources/aopalliance-1.0.jar
new file mode 100644
index 0000000..578b1a0
Binary files /dev/null and b/src/test/resources/aopalliance-1.0.jar differ

-- 
To stop receiving notification emails like this one, please contact
"commits@maven.apache.org" <co...@maven.apache.org>.