You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by rs...@apache.org on 2008/03/14 17:02:52 UTC
svn commit: r637139 - in /incubator/tuscany/java/sca:
itest/osgi-contribution/contribution-test/src/test/resources/osgi/felix/
itest/osgi-implementation/src/test/resources/osgi/felix/
itest/osgi-tuscany/osgi-tuscany-test/src/main/java/org/apache/tuscan...
Author: rsivaram
Date: Fri Mar 14 09:02:49 2008
New Revision: 637139
URL: http://svn.apache.org/viewvc?rev=637139&view=rev
Log:
Support OSGi bundle URLs for contribution artifacts
Added:
incubator/tuscany/java/sca/itest/osgi-tuscany/osgi-tuscany-test/src/test/java/org/apache/tuscany/sca/test/osgi/tuscany/CallbackWsClientTestCase.java
incubator/tuscany/java/sca/itest/osgi-tuscany/osgi-tuscany-test/src/test/java/org/apache/tuscany/sca/test/osgi/tuscany/CallbackWsServiceTestCase.java
incubator/tuscany/java/sca/itest/osgi-tuscany/osgi-tuscany-test/src/test/java/org/apache/tuscany/sca/test/osgi/tuscany/TuscanySampleExtensionsTestCase.java
incubator/tuscany/java/sca/itest/osgi-tuscany/osgi-tuscany-test/src/test/java/org/apache/tuscany/sca/test/osgi/tuscany/TuscanySamplesUsingOldDomainTestCase.java
incubator/tuscany/java/sca/modules/contribution-osgi/src/main/java/org/apache/tuscany/sca/contribution/osgi/impl/OSGiBundleContributionProcessor.java
incubator/tuscany/java/sca/modules/contribution-osgi/src/main/resources/META-INF/services/org.apache.tuscany.sca.contribution.processor.PackageProcessor
Modified:
incubator/tuscany/java/sca/itest/osgi-contribution/contribution-test/src/test/resources/osgi/felix/felix.config.properties
incubator/tuscany/java/sca/itest/osgi-implementation/src/test/resources/osgi/felix/felix.config.properties
incubator/tuscany/java/sca/itest/osgi-tuscany/osgi-tuscany-test/src/main/java/org/apache/tuscany/sca/test/util/TuscanyLoader.java
incubator/tuscany/java/sca/itest/osgi-tuscany/osgi-tuscany-test/src/test/java/org/apache/tuscany/sca/test/osgi/harness/OSGiTuscanyTestHarness.java
incubator/tuscany/java/sca/itest/osgi-tuscany/osgi-tuscany-test/src/test/java/org/apache/tuscany/sca/test/osgi/harness/TestBundleActivator.java
incubator/tuscany/java/sca/itest/osgi-tuscany/osgi-tuscany-test/src/test/java/org/apache/tuscany/sca/test/osgi/tuscany/OSGiTuscanyRuntimeTestCase.java
incubator/tuscany/java/sca/itest/osgi-tuscany/osgi-tuscany-test/src/test/resources/felix/felix.config.properties
incubator/tuscany/java/sca/itest/osgi-tuscany/tuscany-3rdparty/pom.xml
incubator/tuscany/java/sca/itest/osgi-tuscany/tuscany-extensions/pom.xml
incubator/tuscany/java/sca/itest/osgi-tuscany/tuscany-runtime/pom.xml
incubator/tuscany/java/sca/itest/osgi-tuscany/tuscany-spi/pom.xml
incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/PackageTypeDescriberImpl.java
incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/PackageType.java
incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/DefaultSCADomain.java
incubator/tuscany/java/sca/modules/osgi-runtime/src/main/java/org/apache/tuscany/sca/osgi/runtime/OSGiRuntime.java
Modified: incubator/tuscany/java/sca/itest/osgi-contribution/contribution-test/src/test/resources/osgi/felix/felix.config.properties
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/osgi-contribution/contribution-test/src/test/resources/osgi/felix/felix.config.properties?rev=637139&r1=637138&r2=637139&view=diff
==============================================================================
--- incubator/tuscany/java/sca/itest/osgi-contribution/contribution-test/src/test/resources/osgi/felix/felix.config.properties (original)
+++ incubator/tuscany/java/sca/itest/osgi-contribution/contribution-test/src/test/resources/osgi/felix/felix.config.properties Fri Mar 14 09:02:49 2008
@@ -27,9 +27,9 @@
felix.auto.start.1= \
- "file://${FELIX_DIR}/org.apache.felix.shell/1.0.0/org.apache.felix.shell-1.0.0.jar" \
- "file://${FELIX_DIR}/org.apache.felix.shell.tui/1.0.0/org.apache.felix.shell.tui-1.0.0.jar" \
- "file://${FELIX_DIR}/org.apache.felix.bundlerepository/1.0.2/org.apache.felix.bundlerepository-1.0.2.jar" \
+ "file://${FELIX_DIR}/org.apache.felix.shell/1.1.0-SNAPSHOT/org.apache.felix.shell-1.1.0-SNAPSHOT.jar" \
+ "file://${FELIX_DIR}/org.apache.felix.shell.tui/1.1.0-SNAPSHOT/org.apache.felix.shell.tui-1.1.0-SNAPSHOT.jar" \
+ "file://${FELIX_DIR}/org.apache.felix.bundlerepository/1.1.0-SNAPSHOT/org.apache.felix.bundlerepository-1.1.0-SNAPSHOT.jar" \
"file://${FELIX_DIR}/org.apache.felix.scr/1.0.0/org.apache.felix.scr-1.0.0.jar" \
"file://${FELIX_DIR}/org.apache.felix.configadmin/1.0.0/org.apache.felix.configadmin-1.0.0.jar"
Modified: incubator/tuscany/java/sca/itest/osgi-implementation/src/test/resources/osgi/felix/felix.config.properties
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/osgi-implementation/src/test/resources/osgi/felix/felix.config.properties?rev=637139&r1=637138&r2=637139&view=diff
==============================================================================
--- incubator/tuscany/java/sca/itest/osgi-implementation/src/test/resources/osgi/felix/felix.config.properties (original)
+++ incubator/tuscany/java/sca/itest/osgi-implementation/src/test/resources/osgi/felix/felix.config.properties Fri Mar 14 09:02:49 2008
@@ -27,9 +27,9 @@
felix.auto.start.1= \
- "file://${FELIX_DIR}/org.apache.felix.shell/1.0.0/org.apache.felix.shell-1.0.0.jar" \
- "file://${FELIX_DIR}/org.apache.felix.shell.tui/1.0.0/org.apache.felix.shell.tui-1.0.0.jar" \
- "file://${FELIX_DIR}/org.apache.felix.bundlerepository/1.0.2/org.apache.felix.bundlerepository-1.0.2.jar" \
+ "file://${FELIX_DIR}/org.apache.felix.shell/1.1.0-SNAPSHOT/org.apache.felix.shell-1.1.0-SNAPSHOT.jar" \
+ "file://${FELIX_DIR}/org.apache.felix.shell.tui/1.1.0-SNAPSHOT/org.apache.felix.shell.tui-1.1.0-SNAPSHOT.jar" \
+ "file://${FELIX_DIR}/org.apache.felix.bundlerepository/1.1.0-SNAPSHOT/org.apache.felix.bundlerepository-1.1.0-SNAPSHOT.jar" \
"file://${FELIX_DIR}/org.apache.felix.scr/1.0.0/org.apache.felix.scr-1.0.0.jar" \
"file://${FELIX_DIR}/org.apache.felix.configadmin/1.0.0/org.apache.felix.configadmin-1.0.0.jar"
Modified: incubator/tuscany/java/sca/itest/osgi-tuscany/osgi-tuscany-test/src/main/java/org/apache/tuscany/sca/test/util/TuscanyLoader.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/osgi-tuscany/osgi-tuscany-test/src/main/java/org/apache/tuscany/sca/test/util/TuscanyLoader.java?rev=637139&r1=637138&r2=637139&view=diff
==============================================================================
--- incubator/tuscany/java/sca/itest/osgi-tuscany/osgi-tuscany-test/src/main/java/org/apache/tuscany/sca/test/util/TuscanyLoader.java (original)
+++ incubator/tuscany/java/sca/itest/osgi-tuscany/osgi-tuscany-test/src/main/java/org/apache/tuscany/sca/test/util/TuscanyLoader.java Fri Mar 14 09:02:49 2008
@@ -73,8 +73,7 @@
Bundle tuscanyExtensionsBundle = bundleContext.installBundle(tuscanyExtensionsBundleName);
- tuscanySpiBundle.start();
- tuscanyRuntimeBundle.start();
+ tuscanySpiBundle.start();
tuscanyExtensionsBundle.start();
@@ -85,6 +84,5 @@
return tuscanyRuntimeBundle;
}
-
}
Modified: incubator/tuscany/java/sca/itest/osgi-tuscany/osgi-tuscany-test/src/test/java/org/apache/tuscany/sca/test/osgi/harness/OSGiTuscanyTestHarness.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/osgi-tuscany/osgi-tuscany-test/src/test/java/org/apache/tuscany/sca/test/osgi/harness/OSGiTuscanyTestHarness.java?rev=637139&r1=637138&r2=637139&view=diff
==============================================================================
--- incubator/tuscany/java/sca/itest/osgi-tuscany/osgi-tuscany-test/src/test/java/org/apache/tuscany/sca/test/osgi/harness/OSGiTuscanyTestHarness.java (original)
+++ incubator/tuscany/java/sca/itest/osgi-tuscany/osgi-tuscany-test/src/test/java/org/apache/tuscany/sca/test/osgi/harness/OSGiTuscanyTestHarness.java Fri Mar 14 09:02:49 2008
@@ -51,73 +51,14 @@
/*
* Test Tuscany running in an OSGi container
* Harness can be used to run Tuscany samples with Tuscany running in OSGi
- * These tests are not intended to be run as part of the build
*/
public class OSGiTuscanyTestHarness {
-
- private static String[] SAMPLE_DIRECTORIES = {
-
- "osgi-supplychain",
- "binding-notification-broker",
- "binding-notification-consumer",
- "binding-notification-producer",
- "calculator",
- "calculator-rmi-reference",
- "calculator-webapp",
- "calculator-ws-webapp",
- "chat-webapp",
- "feed-aggregator",
- "feed-aggregator-webapp",
- "helloworld-dojo-webapp",
- "helloworld-jsonrpc-webapp",
- "helloworld-ws-service-secure",
- "helloworld-ws-sdo-webapp",
- "implementation-composite",
- "implementation-notification",
- "loanapplication",
- "simple-bigbank",
- "simple-callback",
- "store",
- "supplychain",
- "web-resource"
-
-
- // FIXME: The following tests dont currently work when Tuscany is running inside
- // OSGi. Known problems include classloading in some tests, classloading
- // in the new domain API, URL handling for bundle URLs
-
- // "binding-echo",
- // "binding-echo-extension",
- // "calculator-distributed",
- // "calculator-implementation-policies",
- // "calculator-rmi-service",
- // "calculator-script",
- // "callback-ws-client",
- // "callback-ws-service",
- // "databinding-echo",
- // "domain-webapp",
- // "helloworld-bpel",
- // "helloworld-ws-service",
- // "helloworld-ws-reference",
- // "helloworld-ws-reference-jms,
- // "helloworld-ws-reference-secure",
- // "helloworld-ws-sdo",
- // "implementation-crud",
- // "implementation-crud-extension",
- // "implementation-pojo-extension",
- // "quote-xquery",
- // "simple-bigbank-spring",
- // "simple-callback-ws",
-
- };
-
private OSGiTestRuntime osgiRuntime;
private Bundle tuscanyRuntime;
private BundleContext bundleContext;
- @Before
public void setUp() throws Exception {
osgiRuntime = OSGiRuntimeLoader.startOSGiTestRuntime();
@@ -125,7 +66,6 @@
}
- @After
public void tearDown() throws Exception {
if (tuscanyRuntime != null) {
@@ -135,31 +75,33 @@
OSGiRuntimeLoader.shutdownOSGiRuntime();
}
-
- @Test
- public void runTests() throws Exception {
-
- for (String testDir : SAMPLE_DIRECTORIES) {
- runTest("../../../samples/" + testDir);
- }
- }
-
- public void runTest(String testDir) throws Exception {
+ public void runTest(String... testDirs) throws Exception {
- System.out.println("Run tests from : " + testDir);
+ String mainTestDir = testDirs[0];
+ System.out.println("Run tests from : " + mainTestDir);
tuscanyRuntime = TuscanyLoader.loadTuscanyIntoOSGi(bundleContext);
+ String[] dirs = new String[testDirs.length + 2];
+ int i = 0;
+ dirs[i++] = mainTestDir + "/target/test-classes";
+ dirs[i++] = "target/test-classes";
+ for (int j = 0; j < testDirs.length; j++) {
+ dirs[i++] = testDirs[j] + "/target/classes";
+ }
+
+ String manifestFile = "target/test-classes/META-INF/MANIFEST.MF";
+
Bundle testBundle = createAndInstallBundle(
- "file:" + testDir + "/target/classes", // Bundle location: used to get File URLs for DefaultSCADomain
- "target/test-classes/META-INF/MANIFEST.MF", // Test bundle manifest file
- new String[]{
- testDir + "/target/classes",
- testDir + "/target/test-classes",
- "target/test-classes"
- });
+ "file:" + mainTestDir + "/target/classes", // Bundle location: used to get File URLs for DefaultSCADomain
+ manifestFile, // Test bundle manifest file
+ dirs // Directory entries to be added to bundle
+ );
+
+ tuscanyRuntime.start();
+
testBundle.start();
Class<?> testClass = testBundle.loadClass(this.getClass().getName());
@@ -213,13 +155,15 @@
if (files[i].isDirectory()) {
addFilesToJar(files[i], rootDirName, jarOut);
- continue;
}
if (files[i].getName().endsWith("MANIFEST.MF"))
continue;
String entryName = files[i].getPath().substring(rootDirName.length()+1);
entryName = entryName.replaceAll("\\\\", "/");
+ if (files[i].isDirectory()) {
+ entryName += "/";
+ }
ZipEntry ze = new ZipEntry(entryName);
try {
Modified: incubator/tuscany/java/sca/itest/osgi-tuscany/osgi-tuscany-test/src/test/java/org/apache/tuscany/sca/test/osgi/harness/TestBundleActivator.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/osgi-tuscany/osgi-tuscany-test/src/test/java/org/apache/tuscany/sca/test/osgi/harness/TestBundleActivator.java?rev=637139&r1=637138&r2=637139&view=diff
==============================================================================
--- incubator/tuscany/java/sca/itest/osgi-tuscany/osgi-tuscany-test/src/test/java/org/apache/tuscany/sca/test/osgi/harness/TestBundleActivator.java (original)
+++ incubator/tuscany/java/sca/itest/osgi-tuscany/osgi-tuscany-test/src/test/java/org/apache/tuscany/sca/test/osgi/harness/TestBundleActivator.java Fri Mar 14 09:02:49 2008
@@ -19,7 +19,6 @@
*/
package org.apache.tuscany.sca.test.osgi.harness;
-import java.net.MalformedURLException;
import java.net.URL;
import org.osgi.framework.Bundle;
@@ -33,18 +32,21 @@
*/
public class TestBundleActivator implements BundleActivator {
- private ClassLoader contextClassLoader;
+ private ClassLoader myContextClassLoader;
+ private ClassLoader origTCCL;
public void start(BundleContext bundleContext) throws Exception {
- contextClassLoader = Thread.currentThread().getContextClassLoader();
- ClassLoader cl = new TestClassLoader(bundleContext.getBundle(), contextClassLoader);
- Thread.currentThread().setContextClassLoader(cl);
+ origTCCL = Thread.currentThread().getContextClassLoader();
+ myContextClassLoader = new TestClassLoader(bundleContext.getBundle(), origTCCL);
+ Thread.currentThread().setContextClassLoader(myContextClassLoader);
+
}
public void stop(BundleContext bundleContext) throws Exception {
- Thread.currentThread().setContextClassLoader(contextClassLoader);
+ if (Thread.currentThread().getContextClassLoader() == myContextClassLoader)
+ Thread.currentThread().setContextClassLoader(origTCCL);
}
@@ -64,30 +66,6 @@
if (resource == null) {
resource = bundle.getResource(resName);
- }
-
- /* FIXME: Workaround Tuscany's handling of URLs
- * Convert resource URLs using bundle: protocol into file: URLs
- * This code can be removed when URL manipulation in Tuscany is fixed.
- */
- if (resource != null && resource.getProtocol().startsWith("bundle") &&
- (resName.endsWith(".composite") || resName.endsWith(".xml"))) {
- try {
- String bundleId = resource.getHost();
- if (bundleId.indexOf('.') > 0)
- bundleId = bundleId.substring(0, bundleId.indexOf('.'));
- long id = Long.parseLong(bundleId);
- Bundle[] allBundles = bundle.getBundleContext().getBundles();
- Bundle resourceBundle = bundle;
- for (Bundle b : allBundles) {
- if (b.getBundleId() == id) {
- resourceBundle = b;
- break;
- }
- }
- resource = new URL(resourceBundle.getLocation() + "/" + resource.getPath());
- } catch (MalformedURLException e) {
- }
}
return resource;
Added: incubator/tuscany/java/sca/itest/osgi-tuscany/osgi-tuscany-test/src/test/java/org/apache/tuscany/sca/test/osgi/tuscany/CallbackWsClientTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/osgi-tuscany/osgi-tuscany-test/src/test/java/org/apache/tuscany/sca/test/osgi/tuscany/CallbackWsClientTestCase.java?rev=637139&view=auto
==============================================================================
--- incubator/tuscany/java/sca/itest/osgi-tuscany/osgi-tuscany-test/src/test/java/org/apache/tuscany/sca/test/osgi/tuscany/CallbackWsClientTestCase.java (added)
+++ incubator/tuscany/java/sca/itest/osgi-tuscany/osgi-tuscany-test/src/test/java/org/apache/tuscany/sca/test/osgi/tuscany/CallbackWsClientTestCase.java Fri Mar 14 09:02:49 2008
@@ -0,0 +1,61 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tuscany.sca.test.osgi.tuscany;
+
+
+import org.apache.tuscany.sca.test.osgi.harness.OSGiTuscanyTestHarness;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+/*
+ * Test Tuscany running in an OSGi container
+ *
+ * Run samples-callback-ws
+ */
+public class CallbackWsClientTestCase {
+
+
+ private OSGiTuscanyTestHarness testHarness;
+
+ @Before
+ public void setUp() throws Exception {
+
+ testHarness = new OSGiTuscanyTestHarness();
+ testHarness.setUp();
+ }
+
+
+ @After
+ public void tearDown() throws Exception {
+
+ if (testHarness != null) {
+ testHarness.tearDown();
+ }
+ }
+
+
+ @Test
+ public void runTest() throws Exception {
+
+ testHarness.runTest("../../../samples/" + "callback-ws-client",
+ "../../../samples/" + "callback-ws-service");
+ }
+
+}
Added: incubator/tuscany/java/sca/itest/osgi-tuscany/osgi-tuscany-test/src/test/java/org/apache/tuscany/sca/test/osgi/tuscany/CallbackWsServiceTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/osgi-tuscany/osgi-tuscany-test/src/test/java/org/apache/tuscany/sca/test/osgi/tuscany/CallbackWsServiceTestCase.java?rev=637139&view=auto
==============================================================================
--- incubator/tuscany/java/sca/itest/osgi-tuscany/osgi-tuscany-test/src/test/java/org/apache/tuscany/sca/test/osgi/tuscany/CallbackWsServiceTestCase.java (added)
+++ incubator/tuscany/java/sca/itest/osgi-tuscany/osgi-tuscany-test/src/test/java/org/apache/tuscany/sca/test/osgi/tuscany/CallbackWsServiceTestCase.java Fri Mar 14 09:02:49 2008
@@ -0,0 +1,61 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tuscany.sca.test.osgi.tuscany;
+
+
+import org.apache.tuscany.sca.test.osgi.harness.OSGiTuscanyTestHarness;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+/*
+ * Test Tuscany running in an OSGi container
+ *
+ * Run samples-callback-ws
+ */
+public class CallbackWsServiceTestCase {
+
+
+ private OSGiTuscanyTestHarness testHarness;
+
+ @Before
+ public void setUp() throws Exception {
+
+ testHarness = new OSGiTuscanyTestHarness();
+ testHarness.setUp();
+ }
+
+
+ @After
+ public void tearDown() throws Exception {
+
+ if (testHarness != null) {
+ testHarness.tearDown();
+ }
+ }
+
+
+ @Test
+ public void runTest() throws Exception {
+
+ testHarness.runTest("../../../samples/" + "callback-ws-service");
+
+ }
+
+}
Modified: incubator/tuscany/java/sca/itest/osgi-tuscany/osgi-tuscany-test/src/test/java/org/apache/tuscany/sca/test/osgi/tuscany/OSGiTuscanyRuntimeTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/osgi-tuscany/osgi-tuscany-test/src/test/java/org/apache/tuscany/sca/test/osgi/tuscany/OSGiTuscanyRuntimeTestCase.java?rev=637139&r1=637138&r2=637139&view=diff
==============================================================================
--- incubator/tuscany/java/sca/itest/osgi-tuscany/osgi-tuscany-test/src/test/java/org/apache/tuscany/sca/test/osgi/tuscany/OSGiTuscanyRuntimeTestCase.java (original)
+++ incubator/tuscany/java/sca/itest/osgi-tuscany/osgi-tuscany-test/src/test/java/org/apache/tuscany/sca/test/osgi/tuscany/OSGiTuscanyRuntimeTestCase.java Fri Mar 14 09:02:49 2008
@@ -66,6 +66,7 @@
tuscanyRuntime = TuscanyLoader.loadTuscanyIntoOSGi(osgiRuntime.getBundleContext());
Assert.assertNotNull(tuscanyRuntime);
+ tuscanyRuntime.start();
Class<?> clazz = tuscanyRuntime.loadClass("org.apache.tuscany.sca.osgi.runtime.OSGiRuntime");
Assert.assertNotNull(clazz);
@@ -85,6 +86,7 @@
private void testOSGiTuscanyUsingOSGiClient(String contributionJarName) throws Exception {
tuscanyRuntime = TuscanyLoader.loadTuscanyIntoOSGi(osgiRuntime.getBundleContext());
+ tuscanyRuntime.start();
String folderName = "../test-bundles/target/";
String supplychainJarName = contributionJarName;
Added: incubator/tuscany/java/sca/itest/osgi-tuscany/osgi-tuscany-test/src/test/java/org/apache/tuscany/sca/test/osgi/tuscany/TuscanySampleExtensionsTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/osgi-tuscany/osgi-tuscany-test/src/test/java/org/apache/tuscany/sca/test/osgi/tuscany/TuscanySampleExtensionsTestCase.java?rev=637139&view=auto
==============================================================================
--- incubator/tuscany/java/sca/itest/osgi-tuscany/osgi-tuscany-test/src/test/java/org/apache/tuscany/sca/test/osgi/tuscany/TuscanySampleExtensionsTestCase.java (added)
+++ incubator/tuscany/java/sca/itest/osgi-tuscany/osgi-tuscany-test/src/test/java/org/apache/tuscany/sca/test/osgi/tuscany/TuscanySampleExtensionsTestCase.java Fri Mar 14 09:02:49 2008
@@ -0,0 +1,93 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tuscany.sca.test.osgi.tuscany;
+
+
+import org.apache.tuscany.sca.test.osgi.harness.OSGiTuscanyTestHarness;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+/*
+ * Test Tuscany running in an OSGi container
+ *
+ * Run samples which use provide Tuscany extensions
+ */
+public class TuscanySampleExtensionsTestCase {
+
+ private OSGiTuscanyTestHarness testHarness;
+
+ @Before
+ public void setUp() throws Exception {
+
+ testHarness = new OSGiTuscanyTestHarness();
+ testHarness.setUp();
+ }
+
+
+ @After
+ public void tearDown() throws Exception {
+
+ if (testHarness != null) {
+ testHarness.tearDown();
+ testHarness = null;
+ }
+ }
+
+
+ @Test
+ public void testBindingEchoExtension() throws Exception {
+
+ testHarness.runTest("../../../samples/" + "binding-echo-extension");
+ }
+
+ @Test
+ public void testBindingEcho() throws Exception {
+
+ testHarness.runTest("../../../samples/" + "binding-echo", "../../../samples/" + "binding-echo-extension");
+
+ }
+
+ @Test
+ public void testDataBindingEcho() throws Exception {
+
+ testHarness.runTest("../../../samples/" + "databinding-echo", "../../../samples/" + "binding-echo-extension");
+
+ }
+
+ @Test
+ public void testImplementationCrudExtension() throws Exception {
+
+ testHarness.runTest("../../../samples/" + "implementation-crud-extension");
+ }
+
+ @Test
+ public void testImplementationCrud() throws Exception {
+
+ testHarness.runTest("../../../samples/" + "implementation-crud", "../../../samples/" + "implementation-crud-extension");
+
+ }
+
+ @Test
+ public void testImplementationPojoExtension() throws Exception {
+
+ testHarness.runTest("../../../samples/" + "implementation-pojo-extension");
+ }
+
+}
Added: incubator/tuscany/java/sca/itest/osgi-tuscany/osgi-tuscany-test/src/test/java/org/apache/tuscany/sca/test/osgi/tuscany/TuscanySamplesUsingOldDomainTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/osgi-tuscany/osgi-tuscany-test/src/test/java/org/apache/tuscany/sca/test/osgi/tuscany/TuscanySamplesUsingOldDomainTestCase.java?rev=637139&view=auto
==============================================================================
--- incubator/tuscany/java/sca/itest/osgi-tuscany/osgi-tuscany-test/src/test/java/org/apache/tuscany/sca/test/osgi/tuscany/TuscanySamplesUsingOldDomainTestCase.java (added)
+++ incubator/tuscany/java/sca/itest/osgi-tuscany/osgi-tuscany-test/src/test/java/org/apache/tuscany/sca/test/osgi/tuscany/TuscanySamplesUsingOldDomainTestCase.java Fri Mar 14 09:02:49 2008
@@ -0,0 +1,96 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tuscany.sca.test.osgi.tuscany;
+
+
+import org.apache.tuscany.sca.test.osgi.harness.OSGiTuscanyTestHarness;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+/*
+ * Test Tuscany running in an OSGi container
+ *
+ * Run samples which use old domain code
+ */
+public class TuscanySamplesUsingOldDomainTestCase {
+
+
+ private static String[] SAMPLES = {
+
+ "binding-notification-consumer",
+ "binding-notification-producer",
+ "calculator",
+ "calculator-rmi-reference",
+ "calculator-rmi-service",
+ "helloworld-ws-service",
+ "helloworld-ws-service-secure",
+ "implementation-composite",
+ "implementation-notification",
+ "loanapplication",
+ "osgi-supplychain",
+ "simple-bigbank",
+ "simple-callback",
+ "simple-callback-ws",
+ "supplychain"
+
+
+ // FIXME: Policy security Jaas callback classloading
+ // "calculator-implementation-policies",
+
+ // FIXME: Groovy classloading TUSCANY-2083
+ // "calculator-script",
+
+ // FIXME: SCATestCaseRunner classloading TUSCANY-2081
+ // "helloworld-ws-sdo",
+ // "quote-xquery",
+
+ };
+
+
+ private OSGiTuscanyTestHarness testHarness;
+
+ @Before
+ public void setUp() throws Exception {
+
+ testHarness = new OSGiTuscanyTestHarness();
+ testHarness.setUp();
+ }
+
+
+ @After
+ public void tearDown() throws Exception {
+
+ if (testHarness != null) {
+ testHarness.tearDown();
+ testHarness = null;
+ }
+ }
+
+
+ @Test
+ public void runTestsUsingOldDomainCode() throws Exception {
+
+ for (String testDir : SAMPLES) {
+ testHarness.runTest("../../../samples/" + testDir);
+ }
+ }
+
+
+}
Modified: incubator/tuscany/java/sca/itest/osgi-tuscany/osgi-tuscany-test/src/test/resources/felix/felix.config.properties
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/osgi-tuscany/osgi-tuscany-test/src/test/resources/felix/felix.config.properties?rev=637139&r1=637138&r2=637139&view=diff
==============================================================================
--- incubator/tuscany/java/sca/itest/osgi-tuscany/osgi-tuscany-test/src/test/resources/felix/felix.config.properties (original)
+++ incubator/tuscany/java/sca/itest/osgi-tuscany/osgi-tuscany-test/src/test/resources/felix/felix.config.properties Fri Mar 14 09:02:49 2008
@@ -27,9 +27,9 @@
felix.auto.start.1= \
- "file://${FELIX_DIR}/org.apache.felix.shell/1.0.0/org.apache.felix.shell-1.0.0.jar" \
- "file://${FELIX_DIR}/org.apache.felix.shell.tui/1.0.0/org.apache.felix.shell.tui-1.0.0.jar" \
- "file://${FELIX_DIR}/org.apache.felix.bundlerepository/1.0.2/org.apache.felix.bundlerepository-1.0.2.jar" \
+ "file://${FELIX_DIR}/org.apache.felix.shell/1.1.0-SNAPSHOT/org.apache.felix.shell-1.1.0-SNAPSHOT.jar" \
+ "file://${FELIX_DIR}/org.apache.felix.shell.tui/1.1.0-SNAPSHOT/org.apache.felix.shell.tui-1.1.0-SNAPSHOT.jar" \
+ "file://${FELIX_DIR}/org.apache.felix.bundlerepository/1.1.0-SNAPSHOT/org.apache.felix.bundlerepository-1.1.0-SNAPSHOT.jar" \
"file://${FELIX_DIR}/org.apache.felix.scr/1.0.0/org.apache.felix.scr-1.0.0.jar" \
"file://${FELIX_DIR}/org.apache.felix.configadmin/1.0.0/org.apache.felix.configadmin-1.0.0.jar"
Modified: incubator/tuscany/java/sca/itest/osgi-tuscany/tuscany-3rdparty/pom.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/osgi-tuscany/tuscany-3rdparty/pom.xml?rev=637139&r1=637138&r2=637139&view=diff
==============================================================================
--- incubator/tuscany/java/sca/itest/osgi-tuscany/tuscany-3rdparty/pom.xml (original)
+++ incubator/tuscany/java/sca/itest/osgi-tuscany/tuscany-3rdparty/pom.xml Fri Mar 14 09:02:49 2008
@@ -75,6 +75,23 @@
<artifactId>tuscany-osgi-runtime</artifactId>
<version>1.2-incubating-SNAPSHOT</version>
</dependency>
+<!--
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-binding-atom</artifactId>
+ <version>1.2-incubating-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-binding-atom-abdera</artifactId>
+ <version>1.2-incubating-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-binding-feed-atom</artifactId>
+ <version>1.2-incubating-SNAPSHOT</version>
+ </dependency>
+-->
<dependency>
<groupId>org.apache.tuscany.sca</groupId>
<artifactId>tuscany-binding-sca</artifactId>
Modified: incubator/tuscany/java/sca/itest/osgi-tuscany/tuscany-extensions/pom.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/osgi-tuscany/tuscany-extensions/pom.xml?rev=637139&r1=637138&r2=637139&view=diff
==============================================================================
--- incubator/tuscany/java/sca/itest/osgi-tuscany/tuscany-extensions/pom.xml (original)
+++ incubator/tuscany/java/sca/itest/osgi-tuscany/tuscany-extensions/pom.xml Fri Mar 14 09:02:49 2008
@@ -37,6 +37,21 @@
</dependency>
<dependency>
<groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-binding-atom</artifactId>
+ <version>1.2-incubating-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-binding-atom-abdera</artifactId>
+ <version>1.2-incubating-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-binding-feed-atom</artifactId>
+ <version>1.2-incubating-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
<artifactId>tuscany-binding-sca</artifactId>
<version>1.2-incubating-SNAPSHOT</version>
</dependency>
@@ -313,21 +328,7 @@
<Embed-StripGroup>true</Embed-StripGroup>
<Embed-Dependency>tuscany*</Embed-Dependency>
<_exportcontents>
- !org.apache.tuscany.sca.databinding.annotation,
- !org.apache.tuscany.sca.databinding.externalizable,
- !org.apache.tuscany.sca.databinding.impl,
- !org.apache.tuscany.sca.databinding.javabeans,
- !org.apache.tuscany.sca.databinding.xml,
- org.apache.tuscany.sca.binding.*,
- org.apache.tuscany.sca.contribution.groovy,
- org.apache.tuscany.sca.core.spring*,
- org.apache.tuscany.sca.databinding.*,
- org.apache.tuscany.sca.implementation.*,
- org.apache.tuscany.sca.host.*,
- org.apache.tuscany.sca.extension.helper*,
- org.apache.tuscany.sca.data.engine*,
- org.apache.tuscany.sca.policy.logging*,
- org.apache.tuscany.sca.policy.security*
+ org.apache.tuscany.sca.*,
</_exportcontents>
<Import-Package>*;version="0"</Import-Package>
<DynamicImport-Package>*</DynamicImport-Package>
Modified: incubator/tuscany/java/sca/itest/osgi-tuscany/tuscany-runtime/pom.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/osgi-tuscany/tuscany-runtime/pom.xml?rev=637139&r1=637138&r2=637139&view=diff
==============================================================================
--- incubator/tuscany/java/sca/itest/osgi-tuscany/tuscany-runtime/pom.xml (original)
+++ incubator/tuscany/java/sca/itest/osgi-tuscany/tuscany-runtime/pom.xml Fri Mar 14 09:02:49 2008
@@ -130,6 +130,36 @@
<artifactId>tuscany-osgi-runtime</artifactId>
<version>1.2-incubating-SNAPSHOT</version>
</dependency>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-node2-api</artifactId>
+ <version>1.2-incubating-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-node2-impl</artifactId>
+ <version>1.2-incubating-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-workspace</artifactId>
+ <version>1.2-incubating-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-workspace-admin</artifactId>
+ <version>1.2-incubating-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-workspace-impl</artifactId>
+ <version>1.2-incubating-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-workspace-xml</artifactId>
+ <version>1.2-incubating-SNAPSHOT</version>
+ </dependency>
</dependencies>
@@ -151,21 +181,7 @@
<Embed-StripGroup>true</Embed-StripGroup>
<Embed-Dependency>tuscany*</Embed-Dependency>
<_exportcontents>
- !org.apache.tuscany.sca.core,
- org.apache.tuscany.sca.core.*,
- org.apache.tuscany.sca.contribution.*.impl,
- org.apache.tuscany.sca.contribution.service.util,
- org.apache.tuscany.sca.contribution.xml,
- org.apache.tuscany.sca.contribution.java,
- org.apache.tuscany.sca.contribution.namespace,
- org.apache.tuscany.sca.contribution.osgi,
- org.apache.tuscany.sca.contribution.resource,
- org.apache.tuscany.sca.domain*,
- org.apache.tuscany.sca.node*,
- org.apache.tuscany.sca.assembly.xml,
- org.apache.tuscany.sca.policy.xml,
- org.apache.tuscany.sca.definitions*,
- org.apache.tuscany.sca.osgi.runtime
+ org.apache.tuscany.sca.*,
</_exportcontents>
</instructions>
</configuration>
Modified: incubator/tuscany/java/sca/itest/osgi-tuscany/tuscany-spi/pom.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/osgi-tuscany/tuscany-spi/pom.xml?rev=637139&r1=637138&r2=637139&view=diff
==============================================================================
--- incubator/tuscany/java/sca/itest/osgi-tuscany/tuscany-spi/pom.xml (original)
+++ incubator/tuscany/java/sca/itest/osgi-tuscany/tuscany-spi/pom.xml Fri Mar 14 09:02:49 2008
@@ -114,36 +114,7 @@
<Embed-StripGroup>true</Embed-StripGroup>
<Embed-Dependency>tuscany*</Embed-Dependency>
<_exportcontents>
- org.apache.tuscany.sca.assembly,
- org.apache.tuscany.sca.assembly.builder,
- org.apache.tuscany.sca.assembly.builder.impl,
- org.apache.tuscany.sca.assembly.impl,
- org.apache.tuscany.sca.context,
- org.apache.tuscany.sca.core,
- org.apache.tuscany.sca.event,
- org.apache.tuscany.sca.invocation,
- org.apache.tuscany.sca.management,
- org.apache.tuscany.sca.provider,
- org.apache.tuscany.sca.runtime,
- org.apache.tuscany.sca.store,
- org.apache.tuscany.sca.work,
- org.apache.tuscany.sca.contribution,
- org.apache.tuscany.sca.contribution.impl,
- org.apache.tuscany.sca.contribution.processor,
- org.apache.tuscany.sca.contribution.resolver,
- org.apache.tuscany.sca.contribution.service,
- org.apache.tuscany.sca.contribution.util,
- org.apache.tuscany.sca.policy,
- org.apache.tuscany.sca.policy.impl,
- org.apache.tuscany.sca.policy.util,
- org.apache.tuscany.sca.interfacedef*,
- org.apache.tuscany.sca.databinding,
- org.apache.tuscany.sca.databinding.annotation,
- org.apache.tuscany.sca.databinding.externalizable,
- org.apache.tuscany.sca.databinding.impl,
- org.apache.tuscany.sca.databinding.javabeans,
- org.apache.tuscany.sca.databinding.xml,
- org.apache.tuscany.sca.extensibility
+ org.apache.tuscany.sca.*,
</_exportcontents>
</instructions>
</configuration>
Modified: incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/PackageTypeDescriberImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/PackageTypeDescriberImpl.java?rev=637139&r1=637138&r2=637139&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/PackageTypeDescriberImpl.java (original)
+++ incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/PackageTypeDescriberImpl.java Fri Mar 14 09:02:49 2008
@@ -75,6 +75,8 @@
if (resourceURL.getProtocol().equals("file") && FileHelper.toFile(resourceURL).isDirectory()) {
// Special case : contribution is a folder
contentType = PackageType.FOLDER;
+ } else if (resourceURL.getProtocol().equals("bundle")||resourceURL.getProtocol().equals("bundleresource")) {
+ contentType = PackageType.BUNDLE;
} else {
contentType = resolveContentyTypeByExtension(resourceURL);
if (contentType == null) {
Added: incubator/tuscany/java/sca/modules/contribution-osgi/src/main/java/org/apache/tuscany/sca/contribution/osgi/impl/OSGiBundleContributionProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution-osgi/src/main/java/org/apache/tuscany/sca/contribution/osgi/impl/OSGiBundleContributionProcessor.java?rev=637139&view=auto
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution-osgi/src/main/java/org/apache/tuscany/sca/contribution/osgi/impl/OSGiBundleContributionProcessor.java (added)
+++ incubator/tuscany/java/sca/modules/contribution-osgi/src/main/java/org/apache/tuscany/sca/contribution/osgi/impl/OSGiBundleContributionProcessor.java Fri Mar 14 09:02:49 2008
@@ -0,0 +1,161 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.tuscany.sca.contribution.osgi.impl;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.MalformedURLException;
+import java.net.URI;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Enumeration;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+import java.util.jar.JarEntry;
+import java.util.jar.JarInputStream;
+
+import org.apache.tuscany.sca.contribution.PackageType;
+import org.apache.tuscany.sca.contribution.processor.PackageProcessor;
+import org.apache.tuscany.sca.contribution.service.ContributionException;
+import org.apache.tuscany.sca.osgi.runtime.OSGiRuntime;
+import org.osgi.framework.Bundle;
+
+/**
+ * Bundle Contribution package processor.
+ *
+ * @version $Rev: $ $Date: $
+ */
+public class OSGiBundleContributionProcessor implements PackageProcessor {
+
+ public OSGiBundleContributionProcessor() {
+ }
+
+ public String getPackageType() {
+ return PackageType.BUNDLE;
+ }
+
+ public URL getArtifactURL(URL sourceURL, URI artifact) throws MalformedURLException {
+ Bundle bundle = null;
+ try {
+ bundle = OSGiRuntime.findInstalledBundle(sourceURL);
+ if (bundle != null) {
+ URL url = bundle.getResource(artifact.getPath());
+ if (url == null)
+ System.out.println("Could not load resource " + artifact);
+ return url;
+ }
+ } catch (Exception e) {
+ }
+ return null;
+ }
+
+ public List<URI> getJarArtifacts(URL packageSourceURL, InputStream inputStream) throws ContributionException,
+ IOException {
+ if (packageSourceURL == null) {
+ throw new IllegalArgumentException("Invalid null package source URL.");
+ }
+
+ if (inputStream == null) {
+ throw new IllegalArgumentException("Invalid null source inputstream.");
+ }
+
+ // Assume the root is a jar file
+ JarInputStream jar = new JarInputStream(inputStream);
+ try {
+ Set<String> names = new HashSet<String>();
+ while (true) {
+ JarEntry entry = jar.getNextJarEntry();
+ if (entry == null) {
+ // EOF
+ break;
+ }
+
+ // FIXME: Maybe we should externalize the filter as a property
+ String name = entry.getName();
+ if (!name.startsWith(".") && !entry.isDirectory()) {
+
+ // Trim trailing /
+ if (name.endsWith("/")) {
+ name = name.substring(0, name.length() - 1);
+ }
+
+ // Add the entry name
+ if (!names.contains(name) && name.length() > 0) {
+ names.add(name);
+
+ }
+ }
+ }
+
+ // Return list of URIs
+ List<URI> artifacts = new ArrayList<URI>();
+ for (String name: names) {
+ artifacts.add(URI.create(name));
+ }
+ return artifacts;
+
+ } finally {
+ jar.close();
+ }
+}
+
+ public List<URI> getArtifacts(URL packageSourceURL, InputStream inputStream) throws ContributionException,
+ IOException {
+
+ Bundle bundle = null;
+ try {
+ bundle = OSGiRuntime.findInstalledBundle(packageSourceURL);
+ } catch (Exception e) {
+ }
+
+ if (bundle == null) {
+ throw new IllegalArgumentException("Could not find OSGi bundle " + packageSourceURL);
+ }
+
+ if (packageSourceURL == null) {
+ throw new IllegalArgumentException("Invalid null package source URL.");
+ }
+
+ List<URI> artifacts = new ArrayList<URI>();
+
+ try {
+ Enumeration entries = bundle.findEntries("/", "*", true);
+ while (entries.hasMoreElements()) {
+ URL entry = (URL)entries.nextElement();
+ String entryName = entry.getPath();
+ if (entryName.startsWith("/"))
+ entryName = entryName.substring(1);
+ artifacts.add(new URI(entryName));
+
+ if (entryName.endsWith(".jar")) {
+
+ URL jarResource = bundle.getResource(entryName);
+ artifacts.addAll(getJarArtifacts(jarResource, jarResource.openStream()));
+ }
+
+ }
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+
+ return artifacts;
+ }
+}
Added: incubator/tuscany/java/sca/modules/contribution-osgi/src/main/resources/META-INF/services/org.apache.tuscany.sca.contribution.processor.PackageProcessor
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution-osgi/src/main/resources/META-INF/services/org.apache.tuscany.sca.contribution.processor.PackageProcessor?rev=637139&view=auto
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution-osgi/src/main/resources/META-INF/services/org.apache.tuscany.sca.contribution.processor.PackageProcessor (added)
+++ incubator/tuscany/java/sca/modules/contribution-osgi/src/main/resources/META-INF/services/org.apache.tuscany.sca.contribution.processor.PackageProcessor Fri Mar 14 09:02:49 2008
@@ -0,0 +1,18 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+org.apache.tuscany.sca.contribution.osgi.impl.OSGiBundleContributionProcessor;type=application/osgi.bundle
Modified: incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/PackageType.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/PackageType.java?rev=637139&r1=637138&r2=637139&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/PackageType.java (original)
+++ incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/PackageType.java Fri Mar 14 09:02:49 2008
@@ -35,5 +35,8 @@
* Filesystem folder contribution package
*/
String FOLDER = "application/vnd.tuscany.folder";
+
+
+ String BUNDLE = "application/osgi.bundle";
}
Modified: incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/DefaultSCADomain.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/DefaultSCADomain.java?rev=637139&r1=637138&r2=637139&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/DefaultSCADomain.java (original)
+++ incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/DefaultSCADomain.java Fri Mar 14 09:02:49 2008
@@ -135,16 +135,21 @@
}
try {
- File contributionFile = new File(contributionURL.toURI());
- if (contributionFile.isDirectory()) {
- String[] contributions = contributionFile.list(new FilenameFilter() {
- public boolean accept(File dir, String name) {
- return name.endsWith(".jar");
- }
- });
- if (contributions != null && contributions.length > 0 && contributions.length == contributionFile.list().length) {
- for (String contribution : contributions) {
- addContribution(contributionService, new File(contributionFile, contribution).toURL());
+ String scheme = contributionURL.toURI().getScheme();
+ if (scheme == null || scheme.equalsIgnoreCase("file")) {
+ File contributionFile = new File(contributionURL.toURI());
+ if (contributionFile.isDirectory()) {
+ String[] contributions = contributionFile.list(new FilenameFilter() {
+ public boolean accept(File dir, String name) {
+ return name.endsWith(".jar");
+ }
+ });
+ if (contributions != null && contributions.length > 0 && contributions.length == contributionFile.list().length) {
+ for (String contribution : contributions) {
+ addContribution(contributionService, new File(contributionFile, contribution).toURI().toURL());
+ }
+ } else {
+ addContribution(contributionService, contributionURL);
}
} else {
addContribution(contributionService, contributionURL);
@@ -388,7 +393,13 @@
String location = url.substring(4, url.lastIndexOf("!/"));
// workaround for evil url/uri from maven
contributionURL = FileHelper.toFile(new URL(location)).toURI().toURL();
- }
+
+ } else if (protocol != null && (protocol.equals("bundle")||protocol.equals("bundleresource"))){
+ contributionURL = new URL(contributionArtifactURL.getProtocol(),
+ contributionArtifactURL.getHost(),
+ contributionArtifactURL.getPort(),
+ "/");
+ }
} catch (MalformedURLException mfe) {
throw new IllegalArgumentException(mfe);
}
Modified: incubator/tuscany/java/sca/modules/osgi-runtime/src/main/java/org/apache/tuscany/sca/osgi/runtime/OSGiRuntime.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/osgi-runtime/src/main/java/org/apache/tuscany/sca/osgi/runtime/OSGiRuntime.java?rev=637139&r1=637138&r2=637139&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/osgi-runtime/src/main/java/org/apache/tuscany/sca/osgi/runtime/OSGiRuntime.java (original)
+++ incubator/tuscany/java/sca/modules/osgi-runtime/src/main/java/org/apache/tuscany/sca/osgi/runtime/OSGiRuntime.java Fri Mar 14 09:02:49 2008
@@ -20,6 +20,8 @@
import java.io.InputStream;
import java.lang.reflect.Method;
+import java.net.MalformedURLException;
+import java.net.URL;
import java.util.logging.Level;
import java.util.logging.Logger;
@@ -43,6 +45,8 @@
private PackageAdmin packageAdmin;
+ private boolean tuscanyRunningInOSGiContainer;
+
/**
* System property org.apache.tuscany.implementation.osgi.runtime.OSGiRuntime can be set to the
* name of the OSGiRuntime class (eg. EquinoxRuntime). If set, start this runtime and return the
@@ -120,6 +124,7 @@
if (instance != null) {
if (instance.bundleContext == null) {
+ instance.tuscanyRunningInOSGiContainer = tuscanyRunningInOSGiContainer;
instance.startRuntime(tuscanyRunningInOSGiContainer);
instance.initialize();
}
@@ -136,6 +141,7 @@
}
protected void setBundleContext(BundleContext bundleContext) {
+ instance.tuscanyRunningInOSGiContainer = true;
this.bundleContext = bundleContext;
}
@@ -171,14 +177,40 @@
public synchronized static Bundle findInstalledBundle(String bundleLocation) {
if (instance != null) {
- return instance.findBundle(bundleLocation);
+ if (bundleLocation.startsWith("bundle:")||bundleLocation.startsWith("bundleresource:")) {
+ try {
+ return findInstalledBundle(new URL(bundleLocation));
+ } catch (MalformedURLException e) {
+ // ignore
+ }
+ } else {
+ return instance.findBundle(bundleLocation);
+ }
}
return null;
}
+
+ public synchronized static Bundle findInstalledBundle(URL bundleURL) {
+ if (instance != null) {
+ if (instance.bundleContext != null) {
+ Bundle[] installedBundles = instance.bundleContext.getBundles();
+ for (Bundle bundle : installedBundles) {
+ try {
+ if (bundle.getEntry("/").getHost().equals(bundleURL.getHost()))
+ return bundle;
+ } catch (Exception e) {
+ // Ignore exception
+ }
+ }
+ }
+ return null;
+ }
+ return null;
+ }
public Bundle findBundle(String bundleLocation) {
- if (bundleContext != null) {
+ if (bundleContext != null) {
Bundle[] installedBundles = bundleContext.getBundles();
for (Bundle bundle : installedBundles) {
if (bundle.getLocation().equals(bundleLocation))
@@ -215,7 +247,7 @@
* @return the instance
*/
public synchronized static void stop() throws Exception {
- if (instance != null) {
+ if (instance != null && !instance.tuscanyRunningInOSGiContainer) {
instance.shutdown();
instance = null;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org