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));