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/02/11 15:40:56 UTC

svn commit: r1567152 - in /aries/trunk/spi-fly/spi-fly-static-tool/src: main/java/org/apache/aries/spifly/statictool/Main.java test/java/org/apache/aries/spifly/statictool/RequirementTest.java

Author: davidb
Date: Tue Feb 11 14:40:55 2014
New Revision: 1567152

URL: http://svn.apache.org/r1567152
Log:
[ARIES-1156] SPI-Fly static tool does not work with Require-Capability bundles

This commit should fix the issue.
Updated unit tests included.

Modified:
    aries/trunk/spi-fly/spi-fly-static-tool/src/main/java/org/apache/aries/spifly/statictool/Main.java
    aries/trunk/spi-fly/spi-fly-static-tool/src/test/java/org/apache/aries/spifly/statictool/RequirementTest.java

Modified: aries/trunk/spi-fly/spi-fly-static-tool/src/main/java/org/apache/aries/spifly/statictool/Main.java
URL: http://svn.apache.org/viewvc/aries/trunk/spi-fly/spi-fly-static-tool/src/main/java/org/apache/aries/spifly/statictool/Main.java?rev=1567152&r1=1567151&r2=1567152&view=diff
==============================================================================
--- aries/trunk/spi-fly/spi-fly-static-tool/src/main/java/org/apache/aries/spifly/statictool/Main.java (original)
+++ aries/trunk/spi-fly/spi-fly-static-tool/src/main/java/org/apache/aries/spifly/statictool/Main.java Tue Feb 11 14:40:55 2014
@@ -97,20 +97,22 @@ public class Main {
 
             if (SpiFlyConstants.SPI_CONSUMER_HEADER.equals(consumerHeaderKey)) {
                 manifest.getMainAttributes().remove(new Attributes.Name(SpiFlyConstants.SPI_CONSUMER_HEADER));
+                manifest.getMainAttributes().putValue(SpiFlyConstants.PROCESSED_SPI_CONSUMER_HEADER, consumerHeaderVal);
             } else {
                 // It's SpiFlyConstants.REQUIRE_CAPABILITY
 
                 // Take out the processor requirement, this probably needs to be improved a little bit
                 String newConsumerHeaderVal = consumerHeaderVal.replaceAll(
-                        "osgi[.]extender;\\s*filter[:][=][\"]?[(]osgi[.]extender[=]osgi[.]serviceloader[.]processor[)][\"]?", "");
+                        "osgi[.]extender;\\s*filter[:][=][\"]?[(]osgi[.]extender[=]osgi[.]serviceloader[.]processor[)][\"]?", "").
+                        trim();
                 if (newConsumerHeaderVal.startsWith(","))
                     newConsumerHeaderVal = newConsumerHeaderVal.substring(1);
 
                 if (newConsumerHeaderVal.endsWith(","))
                     newConsumerHeaderVal = newConsumerHeaderVal.substring(0, newConsumerHeaderVal.length()-1);
                 manifest.getMainAttributes().putValue(SpiFlyConstants.REQUIRE_CAPABILITY, newConsumerHeaderVal);
+                manifest.getMainAttributes().putValue("X-SpiFly-Processed-Require-Capability", consumerHeaderVal);
             }
-            manifest.getMainAttributes().putValue(SpiFlyConstants.PROCESSED_SPI_CONSUMER_HEADER, consumerHeaderVal);
 
             // TODO if new packages needed then...
             extendImportPackage(manifest);

Modified: aries/trunk/spi-fly/spi-fly-static-tool/src/test/java/org/apache/aries/spifly/statictool/RequirementTest.java
URL: http://svn.apache.org/viewvc/aries/trunk/spi-fly/spi-fly-static-tool/src/test/java/org/apache/aries/spifly/statictool/RequirementTest.java?rev=1567152&r1=1567151&r2=1567152&view=diff
==============================================================================
--- aries/trunk/spi-fly/spi-fly-static-tool/src/test/java/org/apache/aries/spifly/statictool/RequirementTest.java (original)
+++ aries/trunk/spi-fly/spi-fly-static-tool/src/test/java/org/apache/aries/spifly/statictool/RequirementTest.java Tue Feb 11 14:40:55 2014
@@ -58,7 +58,7 @@ public class RequirementTest {
             mainAttributes.putValue("Foo", "Bar Bar");
             mainAttributes.putValue("Import-Package", "org.foo.bar");
             mainAttributes.putValue(SpiFlyConstants.REQUIRE_CAPABILITY,
-                    "osgi.serviceloader; filter:=\"(osgi.serviceloader=org.apache.aries.spifly.mysvc.SPIProvider)\";cardinality:=multiple," +
+                    "osgi.serviceloader; filter:=\"(osgi.serviceloader=org.apache.aries.spifly.mysvc.SPIProvider)\";cardinality:=multiple, " +
                     "osgi.extender; filter:=\"(osgi.extender=osgi.serviceloader.processor)\"");
 
             JarOutputStream jos = new JarOutputStream(new FileOutputStream(jarFile), mf);
@@ -76,14 +76,16 @@ public class RequirementTest {
             Assert.assertTrue("A processed separate bundle should have been created", expectedFile.exists());
             // Check manifest in generated bundle.
             JarFile transformedJarFile = new JarFile(expectedFile);
-            Manifest expectedMF = transformedJarFile.getManifest();
-            Assert.assertEquals("1.0", expectedMF.getMainAttributes().getValue("Manifest-Version"));
-            Assert.assertEquals("2.0", expectedMF.getMainAttributes().getValue("Bundle-ManifestVersion"));
-            Assert.assertEquals("testbundle", expectedMF.getMainAttributes().getValue("Bundle-SymbolicName"));
-            Assert.assertEquals("Bar Bar", expectedMF.getMainAttributes().getValue("Foo"));
+            Manifest actualMF = transformedJarFile.getManifest();
+            Assert.assertEquals("1.0", actualMF.getMainAttributes().getValue("Manifest-Version"));
+            Assert.assertEquals("2.0", actualMF.getMainAttributes().getValue("Bundle-ManifestVersion"));
+            Assert.assertEquals("testbundle", actualMF.getMainAttributes().getValue("Bundle-SymbolicName"));
+            Assert.assertEquals("Bar Bar", actualMF.getMainAttributes().getValue("Foo"));
             Assert.assertEquals("osgi.serviceloader; filter:=\"(osgi.serviceloader=org.apache.aries.spifly.mysvc.SPIProvider)\";cardinality:=multiple",
-                    expectedMF.getMainAttributes().getValue(SpiFlyConstants.REQUIRE_CAPABILITY));
-            String importPackage = expectedMF.getMainAttributes().getValue("Import-Package");
+                    actualMF.getMainAttributes().getValue(SpiFlyConstants.REQUIRE_CAPABILITY));
+            Assert.assertNull("Should not generate this header when processing Require-Capability",
+                    actualMF.getMainAttributes().getValue(SpiFlyConstants.PROCESSED_SPI_CONSUMER_HEADER));
+            String importPackage = actualMF.getMainAttributes().getValue("Import-Package");
             Assert.assertTrue(
                 "org.foo.bar,org.apache.aries.spifly;version=\"[1.0.0,1.1.0)\"".equals(importPackage) ||
                 "org.apache.aries.spifly;version=\"[1.0.0,1.1.0)\",org.foo.bar".equals(importPackage));