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 <car...@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" <commits@maven.apache.org>.