From 00f9947613624b251551ba709824f97f1b6c2fb1 Mon Sep 17 00:00:00 2001 From: rfeng Date: Sat, 6 Feb 2010 00:28:36 +0000 Subject: Only search for bundles with SCA-Version: 1.1 header for Tuscany 2.x extension points and extensions git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@907138 13f79535-47bb-0310-9956-ffa450edef68 --- .../equinox/EquinoxServiceDiscoverer.java | 24 +++---- .../equinox/EquinoxServiceDiscovererTestCase.java | 73 +++++++-------------- .../src/test/resources/test-bundle-v1.jar | Bin 0 -> 2801 bytes .../src/test/resources/test-bundle-v2.jar | Bin 0 -> 2805 bytes .../src/test/resources/test-bundle.jar | Bin 1797 -> 0 bytes 5 files changed, 35 insertions(+), 62 deletions(-) create mode 100644 sca-java-2.x/trunk/modules/extensibility-equinox/src/test/resources/test-bundle-v1.jar create mode 100644 sca-java-2.x/trunk/modules/extensibility-equinox/src/test/resources/test-bundle-v2.jar delete mode 100644 sca-java-2.x/trunk/modules/extensibility-equinox/src/test/resources/test-bundle.jar diff --git a/sca-java-2.x/trunk/modules/extensibility-equinox/src/main/java/org/apache/tuscany/sca/extensibility/equinox/EquinoxServiceDiscoverer.java b/sca-java-2.x/trunk/modules/extensibility-equinox/src/main/java/org/apache/tuscany/sca/extensibility/equinox/EquinoxServiceDiscoverer.java index 5b3f7bdb39..34e08d5ef6 100644 --- a/sca-java-2.x/trunk/modules/extensibility-equinox/src/main/java/org/apache/tuscany/sca/extensibility/equinox/EquinoxServiceDiscoverer.java +++ b/sca-java-2.x/trunk/modules/extensibility-equinox/src/main/java/org/apache/tuscany/sca/extensibility/equinox/EquinoxServiceDiscoverer.java @@ -63,21 +63,14 @@ public class EquinoxServiceDiscoverer implements ServiceDiscoverer { this.context = context; Bundle bundle = context.getBundle(); this.version = getSCAVersion(bundle); + if (this.version.equals(Version.emptyVersion)) { + this.version = Version.parseVersion("1.1"); + } } private Version getSCAVersion(Bundle bundle) { - Version scaVersion = Version.emptyVersion; String header = (String)bundle.getHeaders().get("SCA-Version"); - if (header == null) { - scaVersion = Version.parseVersion("1.1"); - } else { - header = header.trim(); - if (header.equals("")) { - header = "1.1"; - } - scaVersion = Version.parseVersion(header); - } - return scaVersion; + return Version.parseVersion(header); } /* @@ -231,7 +224,7 @@ public class EquinoxServiceDiscoverer implements ServiceDiscoverer { } if (isTuscanyService) { Version scaVersion = getSCAVersion(bundle); - return scaVersion.compareTo(version) >= 0; + return scaVersion.compareTo(version) == 0; } return true; } @@ -242,11 +235,14 @@ public class EquinoxServiceDiscoverer implements ServiceDiscoverer { for (Bundle b : context.getBundles()) { if (isProviderBundle(b, isTuscanyService)) { set.add(b); - } else { - if (b.getBundleId() != 0) { + } + /* + else { + if (b.getBundleId() != 0 && isTuscanyService) { logger.warning("Bundle is skipped for service discovery: " + toString(b)); } } + */ } return set; } diff --git a/sca-java-2.x/trunk/modules/extensibility-equinox/src/test/java/org/apache/tuscany/sca/extensibility/equinox/EquinoxServiceDiscovererTestCase.java b/sca-java-2.x/trunk/modules/extensibility-equinox/src/test/java/org/apache/tuscany/sca/extensibility/equinox/EquinoxServiceDiscovererTestCase.java index deb4221f4f..0b0e46fd15 100644 --- a/sca-java-2.x/trunk/modules/extensibility-equinox/src/test/java/org/apache/tuscany/sca/extensibility/equinox/EquinoxServiceDiscovererTestCase.java +++ b/sca-java-2.x/trunk/modules/extensibility-equinox/src/test/java/org/apache/tuscany/sca/extensibility/equinox/EquinoxServiceDiscovererTestCase.java @@ -19,17 +19,9 @@ package org.apache.tuscany.sca.extensibility.equinox; -import java.io.BufferedInputStream; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; -import java.lang.reflect.Method; -import java.util.ArrayList; import java.util.Collection; -import java.util.List; -import java.util.jar.JarInputStream; -import java.util.jar.Manifest; import org.apache.tuscany.sca.extensibility.ServiceDeclaration; import org.junit.AfterClass; @@ -46,7 +38,8 @@ import org.osgi.framework.BundleContext; */ public class EquinoxServiceDiscovererTestCase { private static EquinoxServiceDiscoverer discoverer; - private static Bundle testBundle; + private static Bundle testBundle1; + private static Bundle testBundle2; private static TestEquinoxHost host; private static String getState(Bundle b) { @@ -82,44 +75,15 @@ public class EquinoxServiceDiscovererTestCase { host = new TestEquinoxHost(); BundleContext context = host.start(); - InputStream is = EquinoxServiceDiscovererTestCase.class.getResourceAsStream("/test-bundle.jar"); - testBundle = context.installBundle("test-bundle", is); + InputStream is = EquinoxServiceDiscovererTestCase.class.getResourceAsStream("/test-bundle-v1.jar"); + testBundle1 = context.installBundle("test-bundle-v1", is); is.close(); + + is = EquinoxServiceDiscovererTestCase.class.getResourceAsStream("/test-bundle-v2.jar"); + testBundle2 = context.installBundle("test-bundle-v2", is); + is.close(); + discoverer = new EquinoxServiceDiscoverer(context); - File dep = new File("target/bundles"); - List bundles = new ArrayList(); - if(dep.isDirectory()) { - for (File f : dep.listFiles()) { - BufferedInputStream bis = new BufferedInputStream(new FileInputStream(f)); - JarInputStream jis = new JarInputStream(bis); - Manifest manifest = jis.getManifest(); - if (manifest == null || manifest.getMainAttributes().getValue("Bundle-Name") == null) { - bis.close(); - continue; - } - bis.close(); - bis = new BufferedInputStream(new FileInputStream(f)); - Bundle b = context.installBundle(f.getName(), bis); - System.out.println("Installed " + b.getSymbolicName() + " [" + getState(b) + "]"); - bundles.add(b); - bis.close(); - } - } - for (Bundle b : bundles) { - b.start(); - System.out.println("Started "+b.getSymbolicName() + " [" + getState(b) + "]"); - /* - // Get the Platform.getExtensionRegistry() - if ("org.eclipse.core.runtime".equals(b.getSymbolicName())) { - // The Platform class loaded by the bundle is different that the one - // on the classpath - Class cls = b.loadClass("org.eclipse.core.runtime.Platform"); - Method m = cls.getMethod("getExtensionRegistry"); - Object reg = m.invoke(cls); - System.out.println(reg); - } - */ - } } /** @@ -127,9 +91,13 @@ public class EquinoxServiceDiscovererTestCase { */ @AfterClass public static void tearDownAfterClass() throws Exception { - if (testBundle != null) { + if (testBundle1 != null) { + // Uninstall the bundle to clean up the cache + testBundle1.uninstall(); + } + if (testBundle2 != null) { // Uninstall the bundle to clean up the cache - testBundle.uninstall(); + testBundle2.uninstall(); } host.stop(); System.out.println("Done"); @@ -137,8 +105,9 @@ public class EquinoxServiceDiscovererTestCase { @Test public void testDiscovery() throws IOException { + // Both version 1 and 2 should be found because test.TestService is not a Tuscany service Collection descriptors = discoverer.getServiceDeclarations("test.TestService"); - Assert.assertEquals(1, descriptors.size()); + Assert.assertEquals(2, descriptors.size()); descriptors = discoverer.getServiceDeclarations("notthere"); Assert.assertEquals(0, descriptors.size()); } @@ -151,5 +120,13 @@ public class EquinoxServiceDiscovererTestCase { Assert.assertNull(descriptor); } + @Test + public void testTuscanyDiscovery() throws IOException { + Collection descriptors = discoverer.getServiceDeclarations("org.apache.tuscany.sca.test.TestService"); + // Only the version 2 should be found + Assert.assertEquals(1, descriptors.size()); + ServiceDeclaration sd = descriptors.iterator().next(); + Assert.assertEquals("2", sd.getAttributes().get("version")); + } } diff --git a/sca-java-2.x/trunk/modules/extensibility-equinox/src/test/resources/test-bundle-v1.jar b/sca-java-2.x/trunk/modules/extensibility-equinox/src/test/resources/test-bundle-v1.jar new file mode 100644 index 0000000000..61c7b5a49e Binary files /dev/null and b/sca-java-2.x/trunk/modules/extensibility-equinox/src/test/resources/test-bundle-v1.jar differ diff --git a/sca-java-2.x/trunk/modules/extensibility-equinox/src/test/resources/test-bundle-v2.jar b/sca-java-2.x/trunk/modules/extensibility-equinox/src/test/resources/test-bundle-v2.jar new file mode 100644 index 0000000000..b02c368c58 Binary files /dev/null and b/sca-java-2.x/trunk/modules/extensibility-equinox/src/test/resources/test-bundle-v2.jar differ diff --git a/sca-java-2.x/trunk/modules/extensibility-equinox/src/test/resources/test-bundle.jar b/sca-java-2.x/trunk/modules/extensibility-equinox/src/test/resources/test-bundle.jar deleted file mode 100644 index afee051f61..0000000000 Binary files a/sca-java-2.x/trunk/modules/extensibility-equinox/src/test/resources/test-bundle.jar and /dev/null differ -- cgit v1.2.3