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