Author: rotty3000 Date: Mon Jul 16 20:03:38 2018 New Revision: 1836064 URL: http://svn.apache.org/viewvc?rev=1836064&view=rev Log: ARIES-1814 Solve the start order limitations with SPI Fly by changing the verification approach to rely on uses constraints instead of package attributes
Signed-off-by: Raymond Auge <[email protected]> Modified: aries/trunk/spi-fly/spi-fly-dynamic-bundle/pom.xml aries/trunk/spi-fly/spi-fly-dynamic-bundle/src/main/java/org/apache/aries/spifly/dynamic/ClientWeavingHook.java aries/trunk/spi-fly/spi-fly-dynamic-bundle/src/test/java/org/apache/aries/spifly/dynamic/ClientWeavingHookGenericCapabilityTest.java aries/trunk/spi-fly/spi-fly-dynamic-bundle/src/test/java/org/apache/aries/spifly/dynamic/ClientWeavingHookOSGi43Test.java aries/trunk/spi-fly/spi-fly-dynamic-bundle/src/test/java/org/apache/aries/spifly/dynamic/ClientWeavingHookTest.java Modified: aries/trunk/spi-fly/spi-fly-dynamic-bundle/pom.xml URL: http://svn.apache.org/viewvc/aries/trunk/spi-fly/spi-fly-dynamic-bundle/pom.xml?rev=1836064&r1=1836063&r2=1836064&view=diff ============================================================================== --- aries/trunk/spi-fly/spi-fly-dynamic-bundle/pom.xml (original) +++ aries/trunk/spi-fly/spi-fly-dynamic-bundle/pom.xml Mon Jul 16 20:03:38 2018 @@ -124,7 +124,8 @@ </Private-Package> <Embed-Dependency>org.apache.aries.spifly.*;scope=compile;inline=true</Embed-Dependency> <Provide-Capability> - osgi.extender;osgi.extender=osgi.serviceloader.registrar;version:Version=1.0,osgi.extender;osgi.extender=osgi.serviceloader.processor;version:Version=1.0 + osgi.extender;osgi.extender=osgi.serviceloader.registrar;version:Version=1.0, + osgi.extender;osgi.extender=osgi.serviceloader.processor;version:Version=1.0;uses:="org.apache.aries.spifly" </Provide-Capability> </instructions> </configuration> Modified: aries/trunk/spi-fly/spi-fly-dynamic-bundle/src/main/java/org/apache/aries/spifly/dynamic/ClientWeavingHook.java URL: http://svn.apache.org/viewvc/aries/trunk/spi-fly/spi-fly-dynamic-bundle/src/main/java/org/apache/aries/spifly/dynamic/ClientWeavingHook.java?rev=1836064&r1=1836063&r2=1836064&view=diff ============================================================================== --- aries/trunk/spi-fly/spi-fly-dynamic-bundle/src/main/java/org/apache/aries/spifly/dynamic/ClientWeavingHook.java (original) +++ aries/trunk/spi-fly/spi-fly-dynamic-bundle/src/main/java/org/apache/aries/spifly/dynamic/ClientWeavingHook.java Mon Jul 16 20:03:38 2018 @@ -38,13 +38,7 @@ public class ClientWeavingHook implement ClientWeavingHook(BundleContext context, DynamicWeavingActivator dwActivator) { activator = dwActivator; - Bundle b = context.getBundle(); - String bver = b.getVersion().toString(); - String bsn = b.getSymbolicName(); - - addedImport = Util.class.getPackage().getName() + - ";bundle-symbolic-name=" + bsn + - ";bundle-version=" + bver; + addedImport = Util.class.getPackage().getName(); } @Override Modified: aries/trunk/spi-fly/spi-fly-dynamic-bundle/src/test/java/org/apache/aries/spifly/dynamic/ClientWeavingHookGenericCapabilityTest.java URL: http://svn.apache.org/viewvc/aries/trunk/spi-fly/spi-fly-dynamic-bundle/src/test/java/org/apache/aries/spifly/dynamic/ClientWeavingHookGenericCapabilityTest.java?rev=1836064&r1=1836063&r2=1836064&view=diff ============================================================================== --- aries/trunk/spi-fly/spi-fly-dynamic-bundle/src/test/java/org/apache/aries/spifly/dynamic/ClientWeavingHookGenericCapabilityTest.java (original) +++ aries/trunk/spi-fly/spi-fly-dynamic-bundle/src/test/java/org/apache/aries/spifly/dynamic/ClientWeavingHookGenericCapabilityTest.java Mon Jul 16 20:03:38 2018 @@ -101,10 +101,9 @@ public class ClientWeavingHookGenericCap Assert.assertEquals("Precondition", 0, wc.getDynamicImports().size()); wh.weave(wc); Assert.assertEquals(1, wc.getDynamicImports().size()); - String di1 = "org.apache.aries.spifly;bundle-symbolic-name=spifly;bundle-version=1.9.4"; - String di2 = "org.apache.aries.spifly;bundle-version=1.9.4;bundle-symbolic-name=spifly"; + String di1 = "org.apache.aries.spifly"; String di = wc.getDynamicImports().get(0); - Assert.assertTrue("Weaving should have added a dynamic import", di1.equals(di) || di2.equals(di)); + Assert.assertTrue("Weaving should have added a dynamic import", di1.equals(di)); // Invoke the woven class and check that it properly sets the TCCL so that the // META-INF/services/org.apache.aries.mytest.MySPI file from impl1 is visible. @@ -158,10 +157,9 @@ public class ClientWeavingHookGenericCap Assert.assertEquals("Precondition", 0, wc.getDynamicImports().size()); wh.weave(wc); Assert.assertEquals(1, wc.getDynamicImports().size()); - String di1 = "org.apache.aries.spifly;bundle-symbolic-name=spifly;bundle-version=1.9.4"; - String di2 = "org.apache.aries.spifly;bundle-version=1.9.4;bundle-symbolic-name=spifly"; + String di1 = "org.apache.aries.spifly"; String di = wc.getDynamicImports().get(0); - Assert.assertTrue("Weaving should have added a dynamic import", di1.equals(di) || di2.equals(di)); + Assert.assertTrue("Weaving should have added a dynamic import", di1.equals(di)); // Invoke the woven class and check that it properly sets the TCCL so that the // META-INF/services/org.apache.aries.mytest.MySPI file from impl1 is visible. @@ -201,10 +199,9 @@ public class ClientWeavingHookGenericCap Assert.assertEquals("Precondition", 0, wc.getDynamicImports().size()); wh.weave(wc); Assert.assertEquals(1, wc.getDynamicImports().size()); - String di1 = "org.apache.aries.spifly;bundle-symbolic-name=spifly;bundle-version=1.9.4"; - String di2 = "org.apache.aries.spifly;bundle-version=1.9.4;bundle-symbolic-name=spifly"; + String di1 = "org.apache.aries.spifly"; String di = wc.getDynamicImports().get(0); - Assert.assertTrue("Weaving should have added a dynamic import", di1.equals(di) || di2.equals(di)); + Assert.assertTrue("Weaving should have added a dynamic import", di1.equals(di)); // Invoke the woven class and check that it properly sets the TCCL so that the // META-INF/services/org.apache.aries.mytest.MySPI file from impl1 is visible. Modified: aries/trunk/spi-fly/spi-fly-dynamic-bundle/src/test/java/org/apache/aries/spifly/dynamic/ClientWeavingHookOSGi43Test.java URL: http://svn.apache.org/viewvc/aries/trunk/spi-fly/spi-fly-dynamic-bundle/src/test/java/org/apache/aries/spifly/dynamic/ClientWeavingHookOSGi43Test.java?rev=1836064&r1=1836063&r2=1836064&view=diff ============================================================================== --- aries/trunk/spi-fly/spi-fly-dynamic-bundle/src/test/java/org/apache/aries/spifly/dynamic/ClientWeavingHookOSGi43Test.java (original) +++ aries/trunk/spi-fly/spi-fly-dynamic-bundle/src/test/java/org/apache/aries/spifly/dynamic/ClientWeavingHookOSGi43Test.java Mon Jul 16 20:03:38 2018 @@ -96,10 +96,9 @@ public class ClientWeavingHookOSGi43Test Assert.assertEquals("Precondition", 0, wc.getDynamicImports().size()); wh.weave(wc); Assert.assertEquals(1, wc.getDynamicImports().size()); - String di1 = "org.apache.aries.spifly;bundle-symbolic-name=spifly;bundle-version=1.9.4"; - String di2 = "org.apache.aries.spifly;bundle-version=1.9.4;bundle-symbolic-name=spifly"; + String di1 = "org.apache.aries.spifly"; String di = wc.getDynamicImports().get(0); - Assert.assertTrue("Weaving should have added a dynamic import", di1.equals(di) || di2.equals(di)); + Assert.assertTrue("Weaving should have added a dynamic import", di1.equals(di)); // Invoke the woven class and check that it properly sets the TCCL so that the // META-INF/services/org.apache.aries.mytest.MySPI file from impl1 is visible. Modified: aries/trunk/spi-fly/spi-fly-dynamic-bundle/src/test/java/org/apache/aries/spifly/dynamic/ClientWeavingHookTest.java URL: http://svn.apache.org/viewvc/aries/trunk/spi-fly/spi-fly-dynamic-bundle/src/test/java/org/apache/aries/spifly/dynamic/ClientWeavingHookTest.java?rev=1836064&r1=1836063&r2=1836064&view=diff ============================================================================== --- aries/trunk/spi-fly/spi-fly-dynamic-bundle/src/test/java/org/apache/aries/spifly/dynamic/ClientWeavingHookTest.java (original) +++ aries/trunk/spi-fly/spi-fly-dynamic-bundle/src/test/java/org/apache/aries/spifly/dynamic/ClientWeavingHookTest.java Mon Jul 16 20:03:38 2018 @@ -18,25 +18,6 @@ */ package org.apache.aries.spifly.dynamic; -import org.apache.aries.mytest.MySPI; -import org.apache.aries.spifly.BaseActivator; -import org.apache.aries.spifly.SpiFlyConstants; -import org.apache.aries.spifly.Streams; -import org.easymock.EasyMock; -import org.easymock.IAnswer; -import org.junit.After; -import org.junit.Assert; -import org.junit.Before; -import org.junit.Test; -import org.osgi.framework.Bundle; -import org.osgi.framework.BundleContext; -import org.osgi.framework.BundleReference; -import org.osgi.framework.Version; -import org.osgi.framework.hooks.weaving.WeavingHook; -import org.osgi.framework.hooks.weaving.WovenClass; -import org.osgi.framework.wiring.BundleRevision; -import org.osgi.framework.wiring.BundleWiring; - import java.io.BufferedReader; import java.io.File; import java.io.FileReader; @@ -62,6 +43,25 @@ import java.util.concurrent.ConcurrentHa import javax.xml.parsers.DocumentBuilderFactory; +import org.apache.aries.mytest.MySPI; +import org.apache.aries.spifly.BaseActivator; +import org.apache.aries.spifly.SpiFlyConstants; +import org.apache.aries.spifly.Streams; +import org.easymock.EasyMock; +import org.easymock.IAnswer; +import org.junit.After; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; +import org.osgi.framework.Bundle; +import org.osgi.framework.BundleContext; +import org.osgi.framework.BundleReference; +import org.osgi.framework.Version; +import org.osgi.framework.hooks.weaving.WeavingHook; +import org.osgi.framework.hooks.weaving.WovenClass; +import org.osgi.framework.wiring.BundleRevision; +import org.osgi.framework.wiring.BundleWiring; + public class ClientWeavingHookTest { DynamicWeavingActivator activator; @@ -103,10 +103,9 @@ public class ClientWeavingHookTest { Assert.assertEquals("Precondition", 0, wc.getDynamicImports().size()); wh.weave(wc); Assert.assertEquals(1, wc.getDynamicImports().size()); - String di1 = "org.apache.aries.spifly;bundle-symbolic-name=spifly;bundle-version=1.9.4"; - String di2 = "org.apache.aries.spifly;bundle-version=1.9.4;bundle-symbolic-name=spifly"; + String di1 = "org.apache.aries.spifly"; String di = wc.getDynamicImports().get(0); - Assert.assertTrue("Weaving should have added a dynamic import", di1.equals(di) || di2.equals(di)); + Assert.assertTrue("Weaving should have added a dynamic import", di1.equals(di)); // Invoke the woven class and check that it properly sets the TCCL so that the // META-INF/services/org.apache.aries.mytest.MySPI file from impl1 is visible. @@ -140,10 +139,9 @@ public class ClientWeavingHookTest { Assert.assertEquals("Precondition", 0, wc.getDynamicImports().size()); wh.weave(wc); Assert.assertEquals(1, wc.getDynamicImports().size()); - String di1 = "org.apache.aries.spifly;bundle-symbolic-name=spifly;bundle-version=1.9.4"; - String di2 = "org.apache.aries.spifly;bundle-version=1.9.4;bundle-symbolic-name=spifly"; + String di1 = "org.apache.aries.spifly"; String di = wc.getDynamicImports().get(0); - Assert.assertTrue("Weaving should have added a dynamic import", di1.equals(di) || di2.equals(di)); + Assert.assertTrue("Weaving should have added a dynamic import", di1.equals(di)); // Invoke the woven class and check that it properly sets the TCCL so that the // META-INF/services/org.apache.aries.mytest.MySPI file from impl1 is visible. @@ -181,10 +179,9 @@ public class ClientWeavingHookTest { Assert.assertEquals("Precondition", 0, wc.getDynamicImports().size()); wh.weave(wc); Assert.assertEquals(1, wc.getDynamicImports().size()); - String di1 = "org.apache.aries.spifly;bundle-symbolic-name=spifly;bundle-version=1.9.4"; - String di2 = "org.apache.aries.spifly;bundle-version=1.9.4;bundle-symbolic-name=spifly"; + String di1 = "org.apache.aries.spifly"; String di = wc.getDynamicImports().get(0); - Assert.assertTrue("Weaving should have added a dynamic import", di1.equals(di) || di2.equals(di)); + Assert.assertTrue("Weaving should have added a dynamic import", di1.equals(di)); // Invoke the woven class and check that it properly sets the TCCL so that the // META-INF/services/org.apache.aries.mytest.MySPI file from impl1 is visible.
