You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aries.apache.org by da...@apache.org on 2014/10/03 17:16:08 UTC

svn commit: r1629224 - in /aries/trunk/esa-maven-plugin/src: main/java/org/apache/aries/plugin/esa/ test/java/org/apache/aries/plugin/esa/ test/java/org/apache/aries/plugin/esa/stubs/

Author: davidb
Date: Fri Oct  3 15:16:08 2014
New Revision: 1629224

URL: http://svn.apache.org/r1629224
Log:
[ARIES-1255] Support Subsystem-Content version ranges from Maven version ranges

If a Maven version range is specified in the Maven dependency, then use this range as the version range in the generated Subsystem-Content header. For example:
  <dependency>
    <groupId>org.foo.bar</groupId>
    <artifactId>mybundle</artifactId>
    <version>[3.0, 3.8.2)</version>
  </dependency>
Will generate a subsystem content header of:
  Subsystem-Content: mySymbolicName;version="[3.0,3.8.2)"

For Maven dependencies that don't use a version range the version is declared as version="[a.b.c,a.b.c]"

Unit test included.

Modified:
    aries/trunk/esa-maven-plugin/src/main/java/org/apache/aries/plugin/esa/ContentInfo.java
    aries/trunk/esa-maven-plugin/src/test/java/org/apache/aries/plugin/esa/EsaMojoTest.java
    aries/trunk/esa-maven-plugin/src/test/java/org/apache/aries/plugin/esa/stubs/EsaArtifactStub.java
    aries/trunk/esa-maven-plugin/src/test/java/org/apache/aries/plugin/esa/stubs/EsaMavenProjectStub9.java

Modified: aries/trunk/esa-maven-plugin/src/main/java/org/apache/aries/plugin/esa/ContentInfo.java
URL: http://svn.apache.org/viewvc/aries/trunk/esa-maven-plugin/src/main/java/org/apache/aries/plugin/esa/ContentInfo.java?rev=1629224&r1=1629223&r2=1629224&view=diff
==============================================================================
--- aries/trunk/esa-maven-plugin/src/main/java/org/apache/aries/plugin/esa/ContentInfo.java (original)
+++ aries/trunk/esa-maven-plugin/src/main/java/org/apache/aries/plugin/esa/ContentInfo.java Fri Oct  3 15:16:08 2014
@@ -30,6 +30,7 @@ import java.util.zip.ZipFile;
 import aQute.lib.osgi.Analyzer;
 
 import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.versioning.VersionRange;
 import org.apache.maven.plugin.logging.Log;
 import org.apache.maven.shared.osgi.DefaultMaven2OsgiConverter;
 import org.apache.maven.shared.osgi.Maven2OsgiConverter;
@@ -44,6 +45,7 @@ public class ContentInfo {
     private String symbolicName;
     private String type;
     private String version;
+    private VersionRange mavenVersionRange;
 
     public String getSymbolicName() {
         return symbolicName;
@@ -62,8 +64,12 @@ public class ContentInfo {
         if (type != null) {
             line += ";type=\"" + type + "\"";
         }
-        if (version != null) {
-            line += ";version=\"[" + version + "," + version + "]\"";
+        if (mavenVersionRange != null && mavenVersionRange.hasRestrictions()) {
+            line += ";version=\"" + mavenVersionRange + '"';
+        } else {
+            if (version != null) {
+                line += ";version=\"[" + version + "," + version + "]\"";
+            }
         }
         return line;
     }
@@ -101,6 +107,7 @@ public class ContentInfo {
         ContentInfo info = new ContentInfo();
         info.symbolicName = maven2OsgiConverter.getBundleSymbolicName(artifact);
         info.version = Analyzer.cleanupVersion(artifact.getVersion());
+        info.mavenVersionRange = artifact.getVersionRange();
         return info;
     }
 
@@ -128,6 +135,7 @@ public class ContentInfo {
             info.type = header.keySet().iterator().next();
         }
 
+        info.mavenVersionRange = artifact.getVersionRange();
         return info;
     }
 
@@ -153,6 +161,7 @@ public class ContentInfo {
                 info.type = Constants.FRAGMENT_TYPE;
             }
 
+            info.mavenVersionRange = artifact.getVersionRange();
             return info;
         }
     }

Modified: aries/trunk/esa-maven-plugin/src/test/java/org/apache/aries/plugin/esa/EsaMojoTest.java
URL: http://svn.apache.org/viewvc/aries/trunk/esa-maven-plugin/src/test/java/org/apache/aries/plugin/esa/EsaMojoTest.java?rev=1629224&r1=1629223&r2=1629224&view=diff
==============================================================================
--- aries/trunk/esa-maven-plugin/src/test/java/org/apache/aries/plugin/esa/EsaMojoTest.java (original)
+++ aries/trunk/esa-maven-plugin/src/test/java/org/apache/aries/plugin/esa/EsaMojoTest.java Fri Oct  3 15:16:08 2014
@@ -567,7 +567,7 @@ public class EsaMojoTest
 
         attributes = header.get("maven-artifact02-1.0-SNAPSHOT");
         assertNotNull(attributes);
-        assertEquals("[1.0.0.SNAPSHOT,1.0.0.SNAPSHOT]", attributes.get("version"));
+        assertEquals("[1.3,2.5)", attributes.get("version"));
         assertNull(attributes.get("type"));
 
         attributes = header.get("maven-artifact03");

Modified: aries/trunk/esa-maven-plugin/src/test/java/org/apache/aries/plugin/esa/stubs/EsaArtifactStub.java
URL: http://svn.apache.org/viewvc/aries/trunk/esa-maven-plugin/src/test/java/org/apache/aries/plugin/esa/stubs/EsaArtifactStub.java?rev=1629224&r1=1629223&r2=1629224&view=diff
==============================================================================
--- aries/trunk/esa-maven-plugin/src/test/java/org/apache/aries/plugin/esa/stubs/EsaArtifactStub.java (original)
+++ aries/trunk/esa-maven-plugin/src/test/java/org/apache/aries/plugin/esa/stubs/EsaArtifactStub.java Fri Oct  3 15:16:08 2014
@@ -21,6 +21,7 @@ package org.apache.aries.plugin.esa.stub
 
 import java.io.File;
 
+import org.apache.maven.artifact.versioning.VersionRange;
 import org.apache.maven.plugin.testing.stubs.ArtifactStub;
 
 /**
@@ -30,17 +31,19 @@ public class EsaArtifactStub
     extends ArtifactStub
 {
     private String groupId;
-    
+
     private String artifactId;
-    
+
     private String version;
-    
+
     private String scope;
-    
+
     private boolean optional;
-    
+
     private File file;
 
+    private VersionRange versionRange;
+
     public String getArtifactId()
     {
         return artifactId;
@@ -105,9 +108,19 @@ public class EsaArtifactStub
     {
         return getGroupId() + ":" + getArtifactId() + ":" + getVersion();
     }
-    
+
     public String getBaseVersion()
     {
         return getVersion();
     }
+
+    @Override
+    public VersionRange getVersionRange() {
+        return versionRange;
+    }
+
+    @Override
+    public void setVersionRange(VersionRange versionRange) {
+        this.versionRange = versionRange;
+    }
 }

Modified: aries/trunk/esa-maven-plugin/src/test/java/org/apache/aries/plugin/esa/stubs/EsaMavenProjectStub9.java
URL: http://svn.apache.org/viewvc/aries/trunk/esa-maven-plugin/src/test/java/org/apache/aries/plugin/esa/stubs/EsaMavenProjectStub9.java?rev=1629224&r1=1629223&r2=1629224&view=diff
==============================================================================
--- aries/trunk/esa-maven-plugin/src/test/java/org/apache/aries/plugin/esa/stubs/EsaMavenProjectStub9.java (original)
+++ aries/trunk/esa-maven-plugin/src/test/java/org/apache/aries/plugin/esa/stubs/EsaMavenProjectStub9.java Fri Oct  3 15:16:08 2014
@@ -23,6 +23,10 @@ import java.io.File;
 import java.util.HashSet;
 import java.util.Set;
 
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.versioning.InvalidVersionSpecificationException;
+import org.apache.maven.artifact.versioning.VersionRange;
+
 public class EsaMavenProjectStub9
     extends EsaMavenProjectStub
 {
@@ -30,15 +34,24 @@ public class EsaMavenProjectStub9
     {
         return new File( getBasedir(), "src/test/resources/unit/basic-esa-content-type/plugin-config.xml" );
     }
-    
+
     public Set getArtifacts()
-    {   
-        Set artifacts = new HashSet();
- 
-        artifacts.add( createArtifact( "org.apache.maven.test", "maven-artifact01", "1.0-SNAPSHOT", false ) );
-        artifacts.add( createArtifact( "org.apache.maven.test", "maven-artifact02", "1.0-SNAPSHOT", false ) );
-        artifacts.add( createArtifact( "org.apache.maven.test", "maven-artifact03", "1.1-SNAPSHOT", false ) );
-        artifacts.add( createArtifact( "org.apache.maven.test", "maven-artifact04", "1.2-SNAPSHOT", "esa", true ) );
-        return artifacts;
+    {
+        try
+        {
+            Set artifacts = new HashSet();
+
+            artifacts.add( createArtifact( "org.apache.maven.test", "maven-artifact01", "1.0-SNAPSHOT", false ) );
+            Artifact artifact02 = createArtifact( "org.apache.maven.test", "maven-artifact02", "1.0-SNAPSHOT", false );
+            artifact02.setVersionRange(VersionRange.createFromVersionSpec("[1.3, 2.5)"));
+            artifacts.add( artifact02 );
+            artifacts.add( createArtifact( "org.apache.maven.test", "maven-artifact03", "1.1-SNAPSHOT", false ) );
+            artifacts.add( createArtifact( "org.apache.maven.test", "maven-artifact04", "1.2-SNAPSHOT", "esa", true ) );
+            return artifacts;
+        }
+        catch (InvalidVersionSpecificationException e)
+        {
+            throw new RuntimeException(e);
+        }
     }
 }