You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by rf...@apache.org on 2007/09/14 23:40:52 UTC

svn commit: r575799 [4/12] - in /incubator/tuscany/java/sca: itest/ itest/osgi-contribution/ itest/osgi-contribution/contribution-classes-v2/ itest/osgi-contribution/contribution-classes-v2/src/ itest/osgi-contribution/contribution-classes-v2/src/main/...

Added: incubator/tuscany/java/sca/itest/osgi-contribution/contribution-test/src/main/resources/META-INF/README.txt
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/osgi-contribution/contribution-test/src/main/resources/META-INF/README.txt?rev=575799&view=auto
==============================================================================
--- incubator/tuscany/java/sca/itest/osgi-contribution/contribution-test/src/main/resources/META-INF/README.txt (added)
+++ incubator/tuscany/java/sca/itest/osgi-contribution/contribution-test/src/main/resources/META-INF/README.txt Fri Sep 14 14:40:35 2007
@@ -0,0 +1,35 @@
+Apache Tuscany M1 build (May, 2006)
+===================================
+
+http://incubator.apache.org/tuscany/
+
+Tuscany is an effort undergoing incubation at the Apache Software Foundation
+(ASF), sponsored by the Web Services PMC.
+
+Incubation is required of all newly accepted projects until a further review
+indicates that the infrastructure, communications, and decision making process
+have stabilized in a manner consistent with other successful ASF projects. 
+
+While incubation status is not necessarily a reflection of the completeness or 
+stability of the code, it does indicate that the project has yet to be fully
+endorsed by the ASF.
+
+
+Support
+-------
+
+Any problem with this release can be reported to the Tuscany mailing list 
+or in the JIRA issue tracker.
+
+Mailing list subscription:
+    tuscany-dev-subscribe@ws.apache.org
+
+Jira:
+    http://issues.apache.org/jira/browse/Tuscany
+
+
+Thank you for using Tuscany!
+
+
+The Tuscany Team. 
+

Propchange: incubator/tuscany/java/sca/itest/osgi-contribution/contribution-test/src/main/resources/META-INF/README.txt
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/tuscany/java/sca/itest/osgi-contribution/contribution-test/src/test/java/org/apache/tuscany/sca/contribution/osgi/test/MixedContributionTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/osgi-contribution/contribution-test/src/test/java/org/apache/tuscany/sca/contribution/osgi/test/MixedContributionTestCase.java?rev=575799&view=auto
==============================================================================
--- incubator/tuscany/java/sca/itest/osgi-contribution/contribution-test/src/test/java/org/apache/tuscany/sca/contribution/osgi/test/MixedContributionTestCase.java (added)
+++ incubator/tuscany/java/sca/itest/osgi-contribution/contribution-test/src/test/java/org/apache/tuscany/sca/contribution/osgi/test/MixedContributionTestCase.java Fri Sep 14 14:40:35 2007
@@ -0,0 +1,43 @@
+/*
+ * 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.test;
+
+
+/*
+ * 
+ * Supplychain using OSGi and non-OSGi contributions
+ * 
+ * 
+ */
+
+public class MixedContributionTestCase extends SCAResolverTestCase {
+
+    @Override
+    protected void setUp() throws Exception {
+        
+
+        customerJarName = "Customer2";
+        retailerJarName = "RetailerJar";
+    
+        setUpOSGi();
+        setUpSCA();
+        
+    }
+    
+}

Propchange: incubator/tuscany/java/sca/itest/osgi-contribution/contribution-test/src/test/java/org/apache/tuscany/sca/contribution/osgi/test/MixedContributionTestCase.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/itest/osgi-contribution/contribution-test/src/test/java/org/apache/tuscany/sca/contribution/osgi/test/MixedContributionTestCase.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: incubator/tuscany/java/sca/itest/osgi-contribution/contribution-test/src/test/java/org/apache/tuscany/sca/contribution/osgi/test/NestedBundleTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/osgi-contribution/contribution-test/src/test/java/org/apache/tuscany/sca/contribution/osgi/test/NestedBundleTestCase.java?rev=575799&view=auto
==============================================================================
--- incubator/tuscany/java/sca/itest/osgi-contribution/contribution-test/src/test/java/org/apache/tuscany/sca/contribution/osgi/test/NestedBundleTestCase.java (added)
+++ incubator/tuscany/java/sca/itest/osgi-contribution/contribution-test/src/test/java/org/apache/tuscany/sca/contribution/osgi/test/NestedBundleTestCase.java Fri Sep 14 14:40:35 2007
@@ -0,0 +1,182 @@
+/*
+ * 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.test;
+
+
+import java.io.File;
+import java.lang.reflect.Method;
+import java.net.URL;
+
+import junit.framework.TestCase;
+
+import org.apache.tuscany.sca.assembly.Composite;
+import org.apache.tuscany.sca.contribution.Contribution;
+import org.apache.tuscany.sca.contribution.osgi.OSGiTestUtil;
+import org.apache.tuscany.sca.contribution.resolver.ClassReference;
+import org.apache.tuscany.sca.contribution.service.ContributionService;
+import org.apache.tuscany.sca.host.embedded.impl.EmbeddedSCADomain;
+/*
+ * 
+ * Supplychain using OSGi contributions, with nested jar files and bundles used
+ * by <implementation.java/> and <implementation.osgi/>
+ * 
+ * SupplyChain v1 is a bundle containing jar files which are used by <implementation.java/>
+ * SupplyChain v2 is a bundle containing bundles which are used by <implementation.osgi/>
+ */
+
+public class NestedBundleTestCase extends TestCase {
+
+
+    protected  EmbeddedSCADomain domain;
+    
+    private SupplyChain supplyChainV1;
+    private SupplyChain supplyChainV2;
+    
+    @Override
+    protected void setUp() throws Exception {
+    
+        setUpOSGi();
+        setUpSCA();
+    }
+        
+    protected void setUpOSGi() throws Exception {
+        OSGiTestUtil.setUpFelixTestRuntime();
+    }
+    
+    protected void setUpSCA() throws Exception {
+        //Create a test embedded SCA domain
+        ClassLoader cl = getClass().getClassLoader();
+        domain = new EmbeddedSCADomain(cl, "http://localhost");
+
+        //Start the domain
+        domain.start();
+
+        // Contribute the SCA contribution
+        ContributionService contributionService = domain.getContributionService();
+        supplyChainV1 = new SupplyChain("../contribution-classes/target/classes",
+                contributionService, "V1");
+        supplyChainV1.setUpSCA();
+
+        supplyChainV2 = new SupplyChain("../contribution-classes-v2/target/classes",
+                contributionService, "V2");
+        supplyChainV2.setUpSCA();
+    }
+
+	
+
+	@Override
+    public void tearDown() throws Exception {
+
+
+        supplyChainV1.tearDownSCA();
+        supplyChainV2.tearDownSCA();
+        
+        domain.stop();
+
+        domain.close();
+        
+        OSGiTestUtil.shutdownOSGiRuntime();
+	}
+
+    
+    @SuppressWarnings("unchecked")
+    public void test() throws Exception {
+        
+        ClassReference customerClassRef = new ClassReference("supplychain.customer.Customer");
+        customerClassRef = supplyChainV1.supplychainContribution.getModelResolver().resolveModel(ClassReference.class, customerClassRef);
+        Class customerClass = customerClassRef.getJavaClass();
+        
+        Object customer = 
+            domain.getService(customerClass, "CustomerComponent");
+                
+        Method m = customerClass.getMethod("purchaseGoods");
+        m.invoke(customer);
+        
+        System.out.println("Sleeping ...");
+        Thread.sleep(1000);
+        
+        ClassReference customerClassRefV2 = new ClassReference("supplychain.customer.Customer");
+        customerClassRefV2 = supplyChainV2.supplychainContribution.getModelResolver().resolveModel(ClassReference.class, customerClassRefV2);
+        Class customerClassV2 = customerClassRefV2.getJavaClass();
+        
+        Object customerV2 = 
+            domain.getService(customerClassV2, "CustomerComponentV2");
+                
+        Method mV2 = customerClassV2.getMethod("purchaseGoods");
+        mV2.invoke(customerV2);
+        
+        System.out.println("Sleeping ...");
+        Thread.sleep(2000);
+        
+        System.out.println("Test complete");
+        
+    }
+    
+    private class SupplyChain {
+        
+        private String folderName;
+        private ContributionService contributionService;
+        private String version;
+        
+        private Contribution supplychainContribution;
+        
+        
+        public SupplyChain(String folderName, ContributionService contributionService, String version) {
+            this.folderName = folderName;
+            this.contributionService = contributionService;
+            this.version = version;
+        }
+        
+        protected void setUpSCA() throws Exception {
+            File supplychainLocation = new File(folderName + "/SupplyChain" + version + ".jar");
+            URL supplychainContribURL = supplychainLocation.toURL();
+
+            
+            String supplychainURI = "SupplyChain" + version;
+
+            supplychainContribution = contributionService.contribute(
+                    supplychainURI, supplychainContribURL, true);
+            
+            for (Composite deployable : supplychainContribution.getDeployables()) {
+                domain.getDomainComposite().getIncludes().add(deployable);
+                domain.getCompositeBuilder().build(deployable);
+            }
+            
+            // Start Components from my composite
+            for (Composite deployable : supplychainContribution.getDeployables() ) {
+                domain.getCompositeActivator().activate(deployable);
+                domain.getCompositeActivator().start(deployable);
+            }
+        }
+
+        public void tearDownSCA() throws Exception {
+            // Remove the contribution from the in-memory repository
+            contributionService.remove("SupplyChain" + version);
+            
+            // Stop Components from my composite
+            for (Composite deployable : supplychainContribution.getDeployables() ) {
+                domain.getCompositeActivator().stop(deployable);
+                domain.getCompositeActivator().deactivate(deployable);
+            }
+
+        }
+        
+    }
+    
+}

Propchange: incubator/tuscany/java/sca/itest/osgi-contribution/contribution-test/src/test/java/org/apache/tuscany/sca/contribution/osgi/test/NestedBundleTestCase.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/itest/osgi-contribution/contribution-test/src/test/java/org/apache/tuscany/sca/contribution/osgi/test/NestedBundleTestCase.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: incubator/tuscany/java/sca/itest/osgi-contribution/contribution-test/src/test/java/org/apache/tuscany/sca/contribution/osgi/test/OSGiResolverTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/osgi-contribution/contribution-test/src/test/java/org/apache/tuscany/sca/contribution/osgi/test/OSGiResolverTestCase.java?rev=575799&view=auto
==============================================================================
--- incubator/tuscany/java/sca/itest/osgi-contribution/contribution-test/src/test/java/org/apache/tuscany/sca/contribution/osgi/test/OSGiResolverTestCase.java (added)
+++ incubator/tuscany/java/sca/itest/osgi-contribution/contribution-test/src/test/java/org/apache/tuscany/sca/contribution/osgi/test/OSGiResolverTestCase.java Fri Sep 14 14:40:35 2007
@@ -0,0 +1,257 @@
+/*
+ * 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.test;
+
+
+import java.io.File;
+import java.lang.reflect.Method;
+import java.net.URL;
+import java.util.Hashtable;
+
+import junit.framework.TestCase;
+
+import org.apache.tuscany.sca.assembly.Composite;
+import org.apache.tuscany.sca.contribution.Contribution;
+import org.apache.tuscany.sca.contribution.osgi.OSGiTestUtil;
+import org.apache.tuscany.sca.contribution.osgi.impl.OSGiModelResolverImpl;
+import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
+import org.apache.tuscany.sca.contribution.service.ContributionService;
+import org.apache.tuscany.sca.host.embedded.impl.EmbeddedSCADomain;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleContext;
+
+/*
+ * 
+ * Supplychain using OSGi contributions, using an OSGi ModelResolver
+ * 
+ * Notes:
+ *    All OSGi bundle references should be resolvable using pure OSGi bundle mechanisms. No
+ *    dummy bundles will be created to resolve combinations of OSGi and non-OSGi contributions
+ *    
+ *    All dependent OSGi contribution bundles should be installed before the referring contribution.
+ *    Hence dependencies should be a tree and cannot contain cycles.
+ *    
+ *    For Jar files contained within OSGi bundles, Bundle-Classpath should be
+ *    set so that standard OSGi class resolution is sufficient to resolve classes containing in
+ *    nested jars or bundles.
+ */
+
+public class OSGiResolverTestCase extends TestCase {
+
+
+    protected  EmbeddedSCADomain domain;
+    protected BundleContext bundleContext;
+    
+    private SupplyChain supplyChainV1;
+    private SupplyChain supplyChainV2;
+  
+    @Override
+    protected void setUp() throws Exception {
+    
+        setUpOSGi();
+        setUpSCA();
+    }
+        
+    protected void setUpOSGi() throws Exception {
+        bundleContext = OSGiTestUtil.setUpOSGiTestRuntime();
+    }
+    
+    protected void setUpSCA() throws Exception {
+        //Create a test embedded SCA domain
+        ClassLoader cl = getClass().getClassLoader();
+        domain = new EmbeddedSCADomain(cl, "http://localhost");
+
+        //Start the domain
+        domain.start();
+
+        // Contribute the SCA contribution
+        ContributionService contributionService = domain.getContributionService();
+        supplyChainV1 = new SupplyChain("../contribution-classes/target/classes",
+                contributionService, "V1");
+        supplyChainV1.setUpSCA();
+
+        supplyChainV2 = new SupplyChain("../contribution-classes-v2/target/classes",
+                contributionService, "V2");
+        supplyChainV2.setUpSCA();
+    }
+
+	
+
+	@Override
+    public void tearDown() throws Exception {
+
+
+        supplyChainV1.tearDownSCA();
+        supplyChainV2.tearDownSCA();
+        
+        domain.stop();
+
+        domain.close();
+        
+        OSGiTestUtil.shutdownOSGiRuntime();
+	}
+
+    
+    @SuppressWarnings("unchecked")
+    public void test() throws Exception {
+        
+        Class customerClass = supplyChainV1.customerBundle.loadClass("supplychain.customer.Customer");
+        
+        Object customer = 
+            domain.getService(customerClass, "CustomerComponent");
+                
+        Method m = customerClass.getMethod("purchaseGoods");
+        m.invoke(customer);
+        
+        System.out.println("Sleeping ...");
+        Thread.sleep(1000);
+        
+        Class customerClassV2 = supplyChainV2.customerBundle.loadClass("supplychain.customer.Customer");
+        
+        Object customerV2 = 
+            domain.getService(customerClassV2, "CustomerComponentV2");
+                
+        Method mV2 = customerClassV2.getMethod("purchaseGoods");
+        mV2.invoke(customerV2);
+        
+        System.out.println("Sleeping ...");
+        Thread.sleep(2000);
+        
+        System.out.println("Test complete");
+        
+    }
+    
+    private class SupplyChain {
+        
+        private String folderName;
+        private ContributionService contributionService;
+        private String version;
+        
+        private Bundle customerBundle;
+
+
+        private Contribution customerContribution;
+        private Contribution retailerContribution;
+        private Contribution warehouseContribution;
+        private Contribution shipperContribution;
+        
+        
+        public SupplyChain(String folderName, ContributionService contributionService, String version) {
+            this.folderName = folderName;
+            this.contributionService = contributionService;
+            this.version = version;
+        }
+        
+        protected void setUpSCA() throws Exception {
+            File customerLocation = new File(folderName + "/Customer" + version + ".jar");
+            URL customerContribURL = customerLocation.toURL();
+            File retailerLocation = new File(folderName + "/Retailer" + version + ".jar");
+            URL retailerContribURL = retailerLocation.toURL();
+            File warehouseLocation = new File(folderName + "/Warehouse" + version + ".jar");
+            URL warehouseContribURL = warehouseLocation.toURL();
+            File shipperLocation = new File(folderName + "/Shipper" + version + ".jar");
+            URL shipperContribURL = shipperLocation.toURL();
+            
+            customerBundle = bundleContext.installBundle(customerContribURL.toString());
+            Bundle retailerBundle = bundleContext.installBundle(retailerContribURL.toString());
+            Bundle warehouseBundle = bundleContext.installBundle(warehouseContribURL.toString());
+            Bundle shipperBundle = bundleContext.installBundle(shipperContribURL.toString());
+                
+            Hashtable<String,Bundle> bundles = new Hashtable<String,Bundle>();
+            bundles.put("Customer" + version + ".jar", customerBundle);
+            bundles.put("Retailer" + version + ".jar", retailerBundle);
+            bundles.put("Warehouse" + version + ".jar", warehouseBundle);
+            bundles.put("Shipper" + version + ".jar", shipperBundle);
+            
+            ModelResolver customerResolver = new OSGiModelResolverImpl(bundles);
+            
+            bundles = new Hashtable<String,Bundle>();
+            bundles.put("Retailer" + version + ".jar", retailerBundle);
+            ModelResolver retailerResolver = new OSGiModelResolverImpl(bundles);
+            
+            bundles = new Hashtable<String,Bundle>();
+            bundles.put("Warehouse" + version + ".jar", warehouseBundle);
+            ModelResolver warehouseResolver = new OSGiModelResolverImpl(bundles);
+            
+            bundles = new Hashtable<String,Bundle>();
+            bundles.put("Shipper" + version + ".jar", shipperBundle);
+            ModelResolver shipperResolver = new OSGiModelResolverImpl(bundles);
+
+
+            shipperContribution = contributionService.contribute(
+                        "Shipper" + version,
+                        shipperContribURL, shipperResolver, false);
+            warehouseContribution = contributionService.contribute(
+                        "Warehouse" + version,
+                        warehouseContribURL, warehouseResolver, false);
+            retailerContribution = contributionService.contribute(
+                        "Retailer" + version,
+                        retailerContribURL, retailerResolver, false);                
+               
+            customerContribution = contributionService.contribute(
+                        "Customer" + version,
+                        customerContribURL, customerResolver, false);
+             
+            for (Composite deployable : customerContribution.getDeployables()) {
+                domain.getDomainComposite().getIncludes().add(deployable);
+                domain.getCompositeBuilder().build(deployable);
+            }
+            
+
+            for (Composite deployable : retailerContribution.getDeployables() ) {
+                domain.getDomainComposite().getIncludes().add(deployable);
+                domain.getCompositeBuilder().build(deployable);
+            }
+            
+            for (Composite deployable : warehouseContribution.getDeployables() ) {
+                domain.getDomainComposite().getIncludes().add(deployable);
+                domain.getCompositeBuilder().build(deployable);
+            }
+            
+            for (Composite deployable : shipperContribution.getDeployables() ) {
+                domain.getDomainComposite().getIncludes().add(deployable);
+                domain.getCompositeBuilder().build(deployable);
+            }
+            
+            // Start Components from my composite
+            for (Composite deployable : customerContribution.getDeployables() ) {
+                domain.getCompositeActivator().activate(deployable);
+                domain.getCompositeActivator().start(deployable);
+            }
+        }
+
+        public void tearDownSCA() throws Exception {
+            // Remove the contribution from the in-memory repository
+            contributionService.remove("Customer" + version);
+            contributionService.remove("Retailer" + version);
+            contributionService.remove("Warehouse" + version);
+            contributionService.remove("Shipper" + version);
+
+
+            // Stop Components from my composite
+            for (Composite deployable : customerContribution.getDeployables() ) {
+                domain.getCompositeActivator().stop(deployable);
+                domain.getCompositeActivator().deactivate(deployable);
+            }
+
+        }
+        
+    }
+    
+}

Propchange: incubator/tuscany/java/sca/itest/osgi-contribution/contribution-test/src/test/java/org/apache/tuscany/sca/contribution/osgi/test/OSGiResolverTestCase.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/itest/osgi-contribution/contribution-test/src/test/java/org/apache/tuscany/sca/contribution/osgi/test/OSGiResolverTestCase.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: incubator/tuscany/java/sca/itest/osgi-contribution/contribution-test/src/test/java/org/apache/tuscany/sca/contribution/osgi/test/SCAResolverTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/osgi-contribution/contribution-test/src/test/java/org/apache/tuscany/sca/contribution/osgi/test/SCAResolverTestCase.java?rev=575799&view=auto
==============================================================================
--- incubator/tuscany/java/sca/itest/osgi-contribution/contribution-test/src/test/java/org/apache/tuscany/sca/contribution/osgi/test/SCAResolverTestCase.java (added)
+++ incubator/tuscany/java/sca/itest/osgi-contribution/contribution-test/src/test/java/org/apache/tuscany/sca/contribution/osgi/test/SCAResolverTestCase.java Fri Sep 14 14:40:35 2007
@@ -0,0 +1,240 @@
+/*
+ * 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.test;
+
+
+import java.io.File;
+import java.lang.reflect.Method;
+import java.net.URL;
+
+import junit.framework.TestCase;
+
+import org.apache.tuscany.sca.assembly.Composite;
+import org.apache.tuscany.sca.contribution.Contribution;
+import org.apache.tuscany.sca.contribution.osgi.OSGiTestUtil;
+import org.apache.tuscany.sca.contribution.resolver.ClassReference;
+import org.apache.tuscany.sca.contribution.service.ContributionService;
+import org.apache.tuscany.sca.host.embedded.impl.EmbeddedSCADomain;
+
+/*
+ * 
+ * Supplychain using OSGi contributions, using default SCA resolver
+ * 
+ *    This test uses two sets of four contributions where each set contains a bundle corresponding
+ *    to the four components of supplychain (customer, retailer, warehouse and shipper).
+ *    Tests classes from the bundle used in <implementation.java/>, and the bundles themselves
+ *    used as the bundle in <implementation.osgi/>.
+ * 
+ * Notes:
+ *    All OSGi bundle references should be resolvable using pure OSGi bundle mechanisms. No
+ *    dummy bundles will be created to resolve combinations of OSGi and non-OSGi contributions
+ *    
+ *    Notes:
+ *    All OSGi bundle references should be resolvable using pure OSGi bundle mechanisms. No
+ *    dummy bundles will be created to resolve combinations of OSGi and non-OSGi contributions
+ *    
+ *    All dependent OSGi contribution bundles should be installed before the referring contribution.
+ *    Hence dependencies should be a tree and cannot contain cycles.
+ *    
+ *    For Jar files contained within OSGi bundles, Bundle-Classpath should be
+ *    set so that standard OSGi class resolution is sufficient to resolve classes containing in
+ *    nested jars or bundles.
+ */
+
+public class SCAResolverTestCase extends TestCase {
+
+
+    protected  EmbeddedSCADomain domain;
+    
+    private SupplyChain supplyChainV1;
+    private SupplyChain supplyChainV2;
+    
+    
+    protected String customerJarName = "Customer";
+    protected String retailerJarName = "Retailer";
+    protected String warehouseJarName = "Warehouse";
+    protected String shipperJarName = "Shipper";
+    
+    
+    
+    @Override
+    protected void setUp() throws Exception {
+    
+        setUpOSGi();
+        setUpSCA();
+    }
+        
+    protected void setUpOSGi() throws Exception {
+       OSGiTestUtil.setUpFelixTestRuntime();
+    }
+    
+    protected void setUpSCA() throws Exception {
+        //Create a test embedded SCA domain
+        ClassLoader cl = getClass().getClassLoader();
+        domain = new EmbeddedSCADomain(cl, "http://localhost");
+
+        //Start the domain
+        domain.start();
+
+        // Contribute the SCA contribution
+        ContributionService contributionService = domain.getContributionService();
+        supplyChainV1 = new SupplyChain("../contribution-classes/target/classes",
+                contributionService, "V1");
+        supplyChainV1.setUpSCA();
+
+        supplyChainV2 = new SupplyChain("../contribution-classes-v2/target/classes",
+                contributionService, "V2");
+        supplyChainV2.setUpSCA();
+    }
+
+	
+
+	@Override
+    public void tearDown() throws Exception {
+
+
+        supplyChainV1.tearDownSCA();
+        supplyChainV2.tearDownSCA();
+        
+        domain.stop();
+
+        domain.close();
+        
+        OSGiTestUtil.shutdownOSGiRuntime();
+	}
+
+    
+    @SuppressWarnings("unchecked")
+    public void test() throws Exception {
+        
+        ClassReference customerClassRef = new ClassReference("supplychain.customer.Customer");
+        customerClassRef = supplyChainV1.customerContribution.getModelResolver().resolveModel(ClassReference.class, customerClassRef);
+        Class customerClass = customerClassRef.getJavaClass();
+        
+        Object customer = 
+            domain.getService(customerClass, "CustomerComponent");
+                
+        Method m = customerClass.getMethod("purchaseGoods");
+        m.invoke(customer);
+        
+        System.out.println("Sleeping ...");
+        Thread.sleep(1000);
+        
+        ClassReference customerClassRefV2 = new ClassReference("supplychain.customer.Customer");
+        customerClassRefV2 = supplyChainV2.customerContribution.getModelResolver().resolveModel(ClassReference.class, customerClassRefV2);
+        Class customerClassV2 = customerClassRefV2.getJavaClass();
+        
+        Object customerV2 = 
+            domain.getService(customerClassV2, "CustomerComponentV2");
+                
+        Method mV2 = customerClassV2.getMethod("purchaseGoods");
+        mV2.invoke(customerV2);
+        
+        System.out.println("Sleeping ...");
+        Thread.sleep(2000);
+        
+        System.out.println("Test complete");
+        
+    }
+    
+    private class SupplyChain {
+        
+        private String folderName;
+        private ContributionService contributionService;
+        private String version;
+        
+        private Contribution customerContribution;
+        private Contribution retailerContribution;
+        private Contribution warehouseContribution;
+        private Contribution shipperContribution;
+        
+        
+        public SupplyChain(String folderName, ContributionService contributionService, String version) {
+            this.folderName = folderName;
+            this.contributionService = contributionService;
+            this.version = version;
+        }
+        
+        protected void setUpSCA() throws Exception {
+            File customerLocation = new File(folderName + "/" + customerJarName + version + ".jar");
+            URL customerContribURL = customerLocation.toURL();
+            File retailerLocation = new File(folderName + "/" + retailerJarName + version + ".jar");
+            URL retailerContribURL = retailerLocation.toURL();
+            File warehouseLocation = new File(folderName + "/" + warehouseJarName + version + ".jar");
+            URL warehouseContribURL = warehouseLocation.toURL();
+            File shipperLocation = new File(folderName + "/" + shipperJarName + version + ".jar");
+            URL shipperContribURL = shipperLocation.toURL();
+            
+            shipperContribution = contributionService.contribute("Shipper"
+                    + version, shipperContribURL, true);
+            warehouseContribution = contributionService.contribute("Warehouse"
+                    + version, warehouseContribURL, true);
+            retailerContribution = contributionService.contribute("Retailer"
+                    + version, retailerContribURL, true);
+            customerContribution = contributionService.contribute("Customer"
+                    + version, customerContribURL, true);
+            
+
+            for (Composite deployable : customerContribution.getDeployables()) {
+                domain.getDomainComposite().getIncludes().add(deployable);
+                domain.getCompositeBuilder().build(deployable);
+            }
+            
+
+            for (Composite deployable : retailerContribution.getDeployables() ) {
+                domain.getDomainComposite().getIncludes().add(deployable);
+                domain.getCompositeBuilder().build(deployable);
+            }
+            
+            for (Composite deployable : warehouseContribution.getDeployables() ) {
+                domain.getDomainComposite().getIncludes().add(deployable);
+                domain.getCompositeBuilder().build(deployable);
+            }
+            
+            for (Composite deployable : shipperContribution.getDeployables() ) {
+                domain.getDomainComposite().getIncludes().add(deployable);
+                domain.getCompositeBuilder().build(deployable);
+            }
+            
+            // Start Components from my composite
+            for (Composite deployable : customerContribution.getDeployables() ) {
+                domain.getCompositeActivator().activate(deployable);
+                domain.getCompositeActivator().start(deployable);
+            }
+        }
+
+        public void tearDownSCA() throws Exception {
+            // Remove the contribution from the in-memory repository
+            contributionService.remove("Customer" + version);
+            contributionService.remove("Retailer" + version);
+            contributionService.remove("Warehouse" + version);
+            contributionService.remove("Shipper" + version);
+
+
+            // Stop Components from my composite
+            for (Composite deployable : customerContribution.getDeployables() ) {
+                domain.getCompositeActivator().stop(deployable);
+                domain.getCompositeActivator().deactivate(deployable);
+            }
+
+        }
+        
+    }
+    
+}

Propchange: incubator/tuscany/java/sca/itest/osgi-contribution/contribution-test/src/test/java/org/apache/tuscany/sca/contribution/osgi/test/SCAResolverTestCase.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/itest/osgi-contribution/contribution-test/src/test/java/org/apache/tuscany/sca/contribution/osgi/test/SCAResolverTestCase.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: 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=575799&view=auto
==============================================================================
--- incubator/tuscany/java/sca/itest/osgi-contribution/contribution-test/src/test/resources/osgi/felix/felix.config.properties (added)
+++ incubator/tuscany/java/sca/itest/osgi-contribution/contribution-test/src/test/resources/osgi/felix/felix.config.properties Fri Sep 14 14:40:35 2007
@@ -0,0 +1,44 @@
+#
+# 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.    
+#
+#
+# Framework config properties.
+#
+org.osgi.framework.system.packages=org.osgi.framework; version=1.3.0, \
+ org.osgi.service.packageadmin; version=1.2.0, \
+ org.osgi.service.startlevel; version=1.0.0, \
+ org.osgi.service.url; version=1.0.0
+
+
+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.0/org.apache.felix.bundlerepository-1.0.0.jar" \
+    "file://${FELIX_DIR}/org.apache.felix.scr/0.9.0-SNAPSHOT/org.apache.felix.scr-0.9.0-SNAPSHOT.jar" \
+    "file://${FELIX_DIR}/org.apache.felix.log/0.9.0-incubator-SNAPSHOT/org.apache.felix.log-0.9.0-incubator-SNAPSHOT.jar" \
+    "file://${FELIX_DIR}/org.apache.felix.configadmin/0.9.0-SNAPSHOT/org.apache.felix.configadmin-0.9.0-SNAPSHOT.jar" 
+
+
+felix.startlevel.framework=1
+felix.startlevel.bundle=1
+
+#
+# Bundle config properties.
+#
+org.osgi.service.http.port=8080
+obr.shell.telnet=on

Propchange: incubator/tuscany/java/sca/itest/osgi-contribution/contribution-test/src/test/resources/osgi/felix/felix.config.properties
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/itest/osgi-contribution/contribution-test/src/test/resources/osgi/felix/felix.config.properties
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: incubator/tuscany/java/sca/itest/osgi-contribution/pom.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/osgi-contribution/pom.xml?rev=575799&view=auto
==============================================================================
--- incubator/tuscany/java/sca/itest/osgi-contribution/pom.xml (added)
+++ incubator/tuscany/java/sca/itest/osgi-contribution/pom.xml Fri Sep 14 14:40:35 2007
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    * 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.    
+-->
+<project>
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.apache.tuscany.sca</groupId>
+        <artifactId>tuscany-itest</artifactId>
+        <version>1.1-incubating-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+    <artifactId>itest-contribution-osgi</artifactId>
+    <packaging>pom</packaging>
+    <name>Apache Tuscany OSGi Contribution Tests</name>
+
+    <modules>
+        <module>contribution-classes</module>
+        <module>contribution-classes-v2</module>
+        <module>contribution-test</module>
+    </modules>
+    
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.tuscany.sca</groupId>
+            <artifactId>tuscany-host-embedded</artifactId>
+            <version>1.1-incubating-SNAPSHOT</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.tuscany.sca</groupId>
+            <artifactId>tuscany-contribution-impl</artifactId>
+            <version>1.1-incubating-SNAPSHOT</version>
+        </dependency>
+
+    </dependencies>
+</project>

Propchange: incubator/tuscany/java/sca/itest/osgi-contribution/pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/itest/osgi-contribution/pom.xml
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: incubator/tuscany/java/sca/itest/osgi-implementation/pom.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/osgi-implementation/pom.xml?rev=575799&r1=575798&r2=575799&view=diff
==============================================================================
--- incubator/tuscany/java/sca/itest/osgi-implementation/pom.xml (original)
+++ incubator/tuscany/java/sca/itest/osgi-implementation/pom.xml Fri Sep 14 14:40:35 2007
@@ -75,6 +75,13 @@
 
         <dependency>
             <groupId>org.apache.tuscany.sca</groupId>
+            <artifactId>tuscany-osgi-runtime</artifactId>
+            <version>1.1-incubating-SNAPSHOT</version>
+            <scope>runtime</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.tuscany.sca</groupId>
             <artifactId>tuscany-implementation-osgi</artifactId>
             <version>1.1-incubating-SNAPSHOT</version>
             <scope>runtime</scope>
@@ -82,6 +89,13 @@
 
         <dependency>
             <groupId>org.apache.tuscany.sca</groupId>
+            <artifactId>tuscany-contribution</artifactId>
+            <version>1.1-incubating-SNAPSHOT</version>
+            <scope>runtime</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.tuscany.sca</groupId>
             <artifactId>tuscany-binding-ws-axis2</artifactId>
             <version>1.1-incubating-SNAPSHOT</version>
             <scope>runtime</scope>
@@ -104,7 +118,6 @@
             <groupId>junit</groupId>
             <artifactId>junit</artifactId>
             <version>4.2</version>
-            <scope>test</scope>
         </dependency>
     </dependencies>
 
@@ -134,7 +147,7 @@
                             <configuration>
                                 <tasks>
                                     <ant antfile="./build-bundles.xml" target="create-bundles">
-                                        <property name="jar.dir" value="target/wiring"/>
+                                        <property name="jar.dir" value="target/classes/wiring"/>
                                         <property name="files.dir" value="target/classes"/>
                                         <property name="jar.file.name" value="Customer.jar"/>
                                         <property name="manifest.file.name" value="osgi/wiring/Customer.mf"/>
@@ -145,7 +158,7 @@
               
                                     </ant>
                                     <ant antfile="./build-bundles.xml" target="create-bundles">
-                                        <property name="jar.dir" value="target/wiring"/>
+                                        <property name="jar.dir" value="target/classes/wiring"/>
                                         <property name="files.dir" value="target/classes"/>
                                         <property name="jar.file.name" value="Retailer.jar"/>
                                         <property name="manifest.file.name" value="osgi/wiring/Retailer.mf"/>
@@ -157,7 +170,7 @@
               
                                     </ant>
                                     <ant antfile="./build-bundles.xml" target="create-bundles">
-                                        <property name="jar.dir" value="target/wiring"/>
+                                        <property name="jar.dir" value="target/classes/wiring"/>
                                         <property name="files.dir" value="target/classes"/>
                                         <property name="jar.file.name" value="Shipper.jar"/>
                                         <property name="manifest.file.name" value="osgi/wiring/Shipper.mf"/>
@@ -169,7 +182,7 @@
               
                                     </ant>
                                     <ant antfile="./build-bundles.xml" target="create-bundles">
-                                        <property name="jar.dir" value="target/wiring"/>
+                                        <property name="jar.dir" value="target/classes/wiring"/>
                                         <property name="files.dir" value="target/classes"/>
                                         <property name="jar.file.name" value="Warehouse.jar"/>
                                         <property name="manifest.file.name" value="osgi/wiring/Warehouse.mf"/>
@@ -181,7 +194,7 @@
               
                                     </ant>
                                     <ant antfile="./build-bundles.xml" target="create-bundles">
-                                        <property name="jar.dir" value="target/wiring/ds"/>
+                                        <property name="jar.dir" value="target/classes/wiring/ds"/>
                                         <property name="files.dir" value="target/classes"/>
                                         <property name="jar.file.name" value="Customer.jar"/>
                                         <property name="manifest.file.name" value="osgi/wiring/ds/Customer.mf"/>
@@ -192,7 +205,7 @@
               
                                     </ant>
                                     <ant antfile="./build-bundles.xml" target="create-bundles">
-                                        <property name="jar.dir" value="target/wiring/ds"/>
+                                        <property name="jar.dir" value="target/classes/wiring/ds"/>
                                         <property name="files.dir" value="target/classes"/>
                                         <property name="jar.file.name" value="Retailer.jar"/>
                                         <property name="manifest.file.name" value="osgi/wiring/ds/Retailer.mf"/>
@@ -204,7 +217,7 @@
               
                                     </ant>
                                     <ant antfile="./build-bundles.xml" target="create-bundles">
-                                        <property name="jar.dir" value="target/wiring/ds"/>
+                                        <property name="jar.dir" value="target/classes/wiring/ds"/>
                                         <property name="files.dir" value="target/classes"/>
                                         <property name="jar.file.name" value="Shipper.jar"/>
                                         <property name="manifest.file.name" value="osgi/wiring/ds/Shipper.mf"/>
@@ -216,7 +229,7 @@
               
                                     </ant>
                                     <ant antfile="./build-bundles.xml" target="create-bundles">
-                                        <property name="jar.dir" value="target/wiring/ds"/>
+                                        <property name="jar.dir" value="target/classes/wiring/ds"/>
                                         <property name="files.dir" value="target/classes"/>
                                         <property name="jar.file.name" value="Warehouse.jar"/>
                                         <property name="manifest.file.name" value="osgi/wiring/ds/Warehouse.mf"/>
@@ -228,7 +241,7 @@
               
                                     </ant>
                                     <ant antfile="./build-bundles.xml" target="create-bundles">
-                                        <property name="jar.dir" value="target/factory"/>
+                                        <property name="jar.dir" value="target/classes/factory"/>
                                         <property name="files.dir" value="target/classes"/>
                                         <property name="jar.file.name" value="Customer.jar"/>
                                         <property name="manifest.file.name" value="osgi/factory/Customer.mf"/>
@@ -236,11 +249,12 @@
                                              value="supplychain/customer/Customer.class \
                                                     supplychain/OSGiBundleImpl.class \
                                                     supplychain/customer/OSGiCustomerImpl.class \
+                                                    supplychain/customer/OSGiStatelessCustomerImpl.class \
                                                     supplychain/customer/OSGiCustomerFactoryImpl.class"/>
               
                                     </ant>
                                     <ant antfile="./build-bundles.xml" target="create-bundles">
-                                        <property name="jar.dir" value="target/factory"/>
+                                        <property name="jar.dir" value="target/classes/factory"/>
                                         <property name="files.dir" value="target/classes"/>
                                         <property name="jar.file.name" value="Retailer.jar"/>
                                         <property name="manifest.file.name" value="osgi/factory/Retailer.mf"/>
@@ -252,7 +266,7 @@
               
                                     </ant>
                                     <ant antfile="./build-bundles.xml" target="create-bundles">
-                                        <property name="jar.dir" value="target/factory"/>
+                                        <property name="jar.dir" value="target/classes/factory"/>
                                         <property name="files.dir" value="target/classes"/>
                                         <property name="jar.file.name" value="Shipper.jar"/>
                                         <property name="manifest.file.name" value="osgi/factory/Shipper.mf"/>
@@ -261,22 +275,24 @@
                                                     supplychain/OSGiBundleImpl.class \
                                                     supplychain/shipper/OSGiShipperImpl.class \
                                                     supplychain/shipper/OSGiShipperServiceImpl.class \
+                                                    supplychain/shipper/OSGiStatelessShipperServiceImpl.class \
                                                     supplychain/shipper/OSGiShipperFactoryImpl.class"/>
               
                                     </ant>
                                     <ant antfile="./build-bundles.xml" target="create-bundles">
-                                        <property name="jar.dir" value="target/factory/ds"/>
+                                        <property name="jar.dir" value="target/classes/factory/ds"/>
                                         <property name="files.dir" value="target/classes"/>
                                         <property name="jar.file.name" value="Customer.jar"/>
                                         <property name="manifest.file.name" value="osgi/factory/ds/Customer.mf"/>
                                         <property name="files.list" 
                                              value="supplychain/customer/Customer.class \
                                                     osgi/factory/ds/Customer.xml \
+                                                    supplychain/customer/OSGiStatelessCustomerComponentImpl.class \
                                                     supplychain/customer/OSGiCustomerComponentImpl.class"/>
               
                                     </ant>
                                     <ant antfile="./build-bundles.xml" target="create-bundles">
-                                        <property name="jar.dir" value="target/factory/ds"/>
+                                        <property name="jar.dir" value="target/classes/factory/ds"/>
                                         <property name="files.dir" value="target/classes"/>
                                         <property name="jar.file.name" value="Retailer.jar"/>
                                         <property name="manifest.file.name" value="osgi/factory/ds/Retailer.mf"/>
@@ -288,7 +304,7 @@
               
                                     </ant>
                                     <ant antfile="./build-bundles.xml" target="create-bundles">
-                                        <property name="jar.dir" value="target/factory/ds"/>
+                                        <property name="jar.dir" value="target/classes/factory/ds"/>
                                         <property name="files.dir" value="target/classes"/>
                                         <property name="jar.file.name" value="Shipper.jar"/>
                                         <property name="manifest.file.name" value="osgi/factory/ds/Shipper.mf"/>
@@ -296,11 +312,12 @@
                                              value="supplychain/shipper/Shipper.class \
                                                     osgi/factory/ds/Shipper1.xml \
                                                     osgi/factory/ds/Shipper2.xml \
+                                                    supplychain/shipper/OSGiStatelessShipperComponentImpl.class \
                                                     supplychain/shipper/OSGiShipperComponentImpl.class"/>
               
                                     </ant>
                                     <ant antfile="./build-bundles.xml" target="create-bundles">
-                                        <property name="jar.dir" value="target/factory/ds"/>
+                                        <property name="jar.dir" value="target/classes/factory/ds"/>
                                         <property name="files.dir" value="target/classes"/>
                                         <property name="jar.file.name" value="Warehouse.jar"/>
                                         <property name="manifest.file.name" value="osgi/factory/ds/Warehouse.mf"/>
@@ -311,7 +328,7 @@
               
                                     </ant>
                                     <ant antfile="./build-bundles.xml" target="create-bundles">
-                                        <property name="jar.dir" value="target/services"/>
+                                        <property name="jar.dir" value="target/classes/services"/>
                                         <property name="files.dir" value="target/classes"/>
                                         <property name="jar.file.name" value="Customer.jar"/>
                                         <property name="manifest.file.name" value="osgi/services/Customer.mf"/>
@@ -322,7 +339,7 @@
               
                                     </ant>
                                     <ant antfile="./build-bundles.xml" target="create-bundles">
-                                        <property name="jar.dir" value="target/services"/>
+                                        <property name="jar.dir" value="target/classes/services"/>
                                         <property name="files.dir" value="target/classes"/>
                                         <property name="jar.file.name" value="Retailer.jar"/>
                                         <property name="manifest.file.name" value="osgi/services/Retailer.mf"/>
@@ -334,7 +351,7 @@
               
                                     </ant>
                                     <ant antfile="./build-bundles.xml" target="create-bundles">
-                                        <property name="jar.dir" value="target/services"/>
+                                        <property name="jar.dir" value="target/classes/services"/>
                                         <property name="files.dir" value="target/classes"/>
                                         <property name="jar.file.name" value="Shipper.jar"/>
                                         <property name="manifest.file.name" value="osgi/services/Shipper.mf"/>
@@ -346,7 +363,7 @@
               
                                     </ant>
                                     <ant antfile="./build-bundles.xml" target="create-bundles">
-                                        <property name="jar.dir" value="target/services"/>
+                                        <property name="jar.dir" value="target/classes/services"/>
                                         <property name="files.dir" value="target/classes"/>
                                         <property name="jar.file.name" value="Warehouse.jar"/>
                                         <property name="manifest.file.name" value="osgi/services/Warehouse.mf"/>
@@ -358,7 +375,7 @@
               
                                     </ant>
                                     <ant antfile="./build-bundles.xml" target="create-bundles">
-                                        <property name="jar.dir" value="target/services/ds"/>
+                                        <property name="jar.dir" value="target/classes/services/ds"/>
                                         <property name="files.dir" value="target/classes"/>
                                         <property name="jar.file.name" value="Customer.jar"/>
                                         <property name="manifest.file.name" value="osgi/services/ds/Customer.mf"/>
@@ -369,7 +386,7 @@
               
                                     </ant>
                                     <ant antfile="./build-bundles.xml" target="create-bundles">
-                                        <property name="jar.dir" value="target/services/ds"/>
+                                        <property name="jar.dir" value="target/classes/services/ds"/>
                                         <property name="files.dir" value="target/classes"/>
                                         <property name="jar.file.name" value="Retailer.jar"/>
                                         <property name="manifest.file.name" value="osgi/services/ds/Retailer.mf"/>
@@ -381,7 +398,7 @@
               
                                     </ant>
                                     <ant antfile="./build-bundles.xml" target="create-bundles">
-                                        <property name="jar.dir" value="target/services/ds"/>
+                                        <property name="jar.dir" value="target/classes/services/ds"/>
                                         <property name="files.dir" value="target/classes"/>
                                         <property name="jar.file.name" value="Shipper.jar"/>
                                         <property name="manifest.file.name" value="osgi/services/ds/Shipper.mf"/>
@@ -393,7 +410,7 @@
               
                                     </ant>
                                     <ant antfile="./build-bundles.xml" target="create-bundles">
-                                        <property name="jar.dir" value="target/services/ds"/>
+                                        <property name="jar.dir" value="target/classes/services/ds"/>
                                         <property name="files.dir" value="target/classes"/>
                                         <property name="jar.file.name" value="Warehouse.jar"/>
                                         <property name="manifest.file.name" value="osgi/services/ds/Warehouse.mf"/>
@@ -405,7 +422,7 @@
               
                                     </ant>
                                     <ant antfile="./build-bundles.xml" target="create-bundles">
-                                        <property name="jar.dir" value="target/interfaces"/>
+                                        <property name="jar.dir" value="target/classes/interfaces"/>
                                         <property name="files.dir" value="target/classes"/>
                                         <property name="jar.file.name" value="Customer.jar"/>
                                         <property name="manifest.file.name" value="osgi/interfaces/Customer.mf"/>
@@ -416,7 +433,7 @@
               
                                     </ant>
                                     <ant antfile="./build-bundles.xml" target="create-bundles">
-                                        <property name="jar.dir" value="target/interfaces"/>
+                                        <property name="jar.dir" value="target/classes/interfaces"/>
                                         <property name="files.dir" value="target/classes"/>
                                         <property name="jar.file.name" value="Retailer.jar"/>
                                         <property name="manifest.file.name" value="osgi/interfaces/Retailer.mf"/>
@@ -428,7 +445,7 @@
               
                                     </ant>
                                     <ant antfile="./build-bundles.xml" target="create-bundles">
-                                        <property name="jar.dir" value="target/interfaces"/>
+                                        <property name="jar.dir" value="target/classes/interfaces"/>
                                         <property name="files.dir" value="target/classes"/>
                                         <property name="jar.file.name" value="Shipper.jar"/>
                                         <property name="manifest.file.name" value="osgi/interfaces/Shipper.mf"/>
@@ -440,7 +457,7 @@
               
                                     </ant>
                                     <ant antfile="./build-bundles.xml" target="create-bundles">
-                                        <property name="jar.dir" value="target/interfaces/ds"/>
+                                        <property name="jar.dir" value="target/classes/interfaces/ds"/>
                                         <property name="files.dir" value="target/classes"/>
                                         <property name="jar.file.name" value="Customer.jar"/>
                                         <property name="manifest.file.name" value="osgi/interfaces/ds/Customer.mf"/>
@@ -451,7 +468,7 @@
               
                                     </ant>
                                     <ant antfile="./build-bundles.xml" target="create-bundles">
-                                        <property name="jar.dir" value="target/interfaces/ds"/>
+                                        <property name="jar.dir" value="target/classes/interfaces/ds"/>
                                         <property name="files.dir" value="target/classes"/>
                                         <property name="jar.file.name" value="Retailer.jar"/>
                                         <property name="manifest.file.name" value="osgi/interfaces/ds/Retailer.mf"/>
@@ -463,7 +480,7 @@
               
                                     </ant>
                                     <ant antfile="./build-bundles.xml" target="create-bundles">
-                                        <property name="jar.dir" value="target/interfaces/ds"/>
+                                        <property name="jar.dir" value="target/classes/interfaces/ds"/>
                                         <property name="files.dir" value="target/classes"/>
                                         <property name="jar.file.name" value="Shipper.jar"/>
                                         <property name="manifest.file.name" value="osgi/interfaces/ds/Shipper.mf"/>
@@ -474,7 +491,7 @@
               
                                     </ant>
                                     <ant antfile="./build-bundles.xml" target="create-bundles">
-                                        <property name="jar.dir" value="target/version"/>
+                                        <property name="jar.dir" value="target/classes/version"/>
                                         <property name="files.dir" value="target/classes"/>
                                         <property name="jar.file.name" value="Customer1.jar"/>
                                         <property name="manifest.file.name" value="osgi/version/Customer1.mf"/>
@@ -485,7 +502,7 @@
               
                                     </ant>
                                     <ant antfile="./build-bundles.xml" target="create-bundles">
-                                        <property name="jar.dir" value="target/version"/>
+                                        <property name="jar.dir" value="target/classes/version"/>
                                         <property name="files.dir" value="target/classes"/>
                                         <property name="jar.file.name" value="Retailer1.jar"/>
                                         <property name="manifest.file.name" value="osgi/version/Retailer1.mf"/>
@@ -497,7 +514,7 @@
               
                                     </ant>
                                     <ant antfile="./build-bundles.xml" target="create-bundles">
-                                        <property name="jar.dir" value="target/version"/>
+                                        <property name="jar.dir" value="target/classes/version"/>
                                         <property name="files.dir" value="target/classes"/>
                                         <property name="jar.file.name" value="Shipper1.jar"/>
                                         <property name="manifest.file.name" value="osgi/version/Shipper1.mf"/>
@@ -509,7 +526,7 @@
               
                                     </ant>
                                     <ant antfile="./build-bundles.xml" target="create-bundles">
-                                        <property name="jar.dir" value="target/version"/>
+                                        <property name="jar.dir" value="target/classes/version"/>
                                         <property name="files.dir" value="target/classes"/>
                                         <property name="jar.file.name" value="Warehouse1.jar"/>
                                         <property name="manifest.file.name" value="osgi/version/Warehouse1.mf"/>
@@ -521,7 +538,7 @@
               
                                     </ant>
                                     <ant antfile="./build-bundles.xml" target="create-bundles">
-                                        <property name="jar.dir" value="target/version"/>
+                                        <property name="jar.dir" value="target/classes/version"/>
                                         <property name="files.dir" value="target/classes"/>
                                         <property name="jar.file.name" value="Customer2.jar"/>
                                         <property name="manifest.file.name" value="osgi/version/Customer2.mf"/>
@@ -532,7 +549,7 @@
               
                                     </ant>
                                     <ant antfile="./build-bundles.xml" target="create-bundles">
-                                        <property name="jar.dir" value="target/version"/>
+                                        <property name="jar.dir" value="target/classes/version"/>
                                         <property name="files.dir" value="target/classes"/>
                                         <property name="jar.file.name" value="Retailer2.jar"/>
                                         <property name="manifest.file.name" value="osgi/version/Retailer2.mf"/>
@@ -544,7 +561,7 @@
               
                                     </ant>
                                     <ant antfile="./build-bundles.xml" target="create-bundles">
-                                        <property name="jar.dir" value="target/version"/>
+                                        <property name="jar.dir" value="target/classes/version"/>
                                         <property name="files.dir" value="target/classes"/>
                                         <property name="jar.file.name" value="Shipper2.jar"/>
                                         <property name="manifest.file.name" value="osgi/version/Shipper2.mf"/>
@@ -556,7 +573,7 @@
               
                                     </ant>
                                     <ant antfile="./build-bundles.xml" target="create-bundles">
-                                        <property name="jar.dir" value="target/version"/>
+                                        <property name="jar.dir" value="target/classes/version"/>
                                         <property name="files.dir" value="target/classes"/>
                                         <property name="jar.file.name" value="Warehouse2.jar"/>
                                         <property name="manifest.file.name" value="osgi/version/Warehouse2.mf"/>
@@ -568,7 +585,7 @@
               
                                     </ant>
                                     <ant antfile="./build-bundles.xml" target="create-bundles">
-                                        <property name="jar.dir" value="target/version/ds"/>
+                                        <property name="jar.dir" value="target/classes/version/ds"/>
                                         <property name="files.dir" value="target/classes"/>
                                         <property name="jar.file.name" value="Customer1.jar"/>
                                         <property name="manifest.file.name" value="osgi/version/ds/Customer1.mf"/>
@@ -579,7 +596,7 @@
               
                                     </ant>
                                     <ant antfile="./build-bundles.xml" target="create-bundles">
-                                        <property name="jar.dir" value="target/version/ds"/>
+                                        <property name="jar.dir" value="target/classes/version/ds"/>
                                         <property name="files.dir" value="target/classes"/>
                                         <property name="jar.file.name" value="Customer2.jar"/>
                                         <property name="manifest.file.name" value="osgi/version/ds/Customer2.mf"/>
@@ -590,7 +607,7 @@
               
                                     </ant>
                                     <ant antfile="./build-bundles.xml" target="create-bundles">
-                                        <property name="jar.dir" value="target/version/ds"/>
+                                        <property name="jar.dir" value="target/classes/version/ds"/>
                                         <property name="files.dir" value="target/classes"/>
                                         <property name="jar.file.name" value="Retailer1.jar"/>
                                         <property name="manifest.file.name" value="osgi/version/ds/Retailer1.mf"/>
@@ -602,7 +619,7 @@
               
                                     </ant>
                                     <ant antfile="./build-bundles.xml" target="create-bundles">
-                                        <property name="jar.dir" value="target/version/ds"/>
+                                        <property name="jar.dir" value="target/classes/version/ds"/>
                                         <property name="files.dir" value="target/classes"/>
                                         <property name="jar.file.name" value="Retailer2.jar"/>
                                         <property name="manifest.file.name" value="osgi/version/ds/Retailer2.mf"/>
@@ -614,7 +631,7 @@
               
                                     </ant>
                                     <ant antfile="./build-bundles.xml" target="create-bundles">
-                                        <property name="jar.dir" value="target/version/ds"/>
+                                        <property name="jar.dir" value="target/classes/version/ds"/>
                                         <property name="files.dir" value="target/classes"/>
                                         <property name="jar.file.name" value="Shipper1.jar"/>
                                         <property name="manifest.file.name" value="osgi/version/ds/Shipper1.mf"/>
@@ -626,7 +643,7 @@
               
                                     </ant>
                                     <ant antfile="./build-bundles.xml" target="create-bundles">
-                                        <property name="jar.dir" value="target/version/ds"/>
+                                        <property name="jar.dir" value="target/classes/version/ds"/>
                                         <property name="files.dir" value="target/classes"/>
                                         <property name="jar.file.name" value="Shipper2.jar"/>
                                         <property name="manifest.file.name" value="osgi/version/ds/Shipper2.mf"/>
@@ -638,7 +655,7 @@
               
                                     </ant>
                                     <ant antfile="./build-bundles.xml" target="create-bundles">
-                                        <property name="jar.dir" value="target/version/ds"/>
+                                        <property name="jar.dir" value="target/classes/version/ds"/>
                                         <property name="files.dir" value="target/classes"/>
                                         <property name="jar.file.name" value="Warehouse1.jar"/>
                                         <property name="manifest.file.name" value="osgi/version/ds/Warehouse1.mf"/>
@@ -650,7 +667,7 @@
               
                                     </ant>
                                     <ant antfile="./build-bundles.xml" target="create-bundles">
-                                        <property name="jar.dir" value="target/version/ds"/>
+                                        <property name="jar.dir" value="target/classes/version/ds"/>
                                         <property name="files.dir" value="target/classes"/>
                                         <property name="jar.file.name" value="Warehouse2.jar"/>
                                         <property name="manifest.file.name" value="osgi/version/ds/Warehouse2.mf"/>
@@ -662,7 +679,7 @@
               
                                     </ant>
                                     <ant antfile="./build-bundles.xml" target="create-bundles">
-                                        <property name="jar.dir" value="target/ws"/>
+                                        <property name="jar.dir" value="target/classes/ws"/>
                                         <property name="files.dir" value="target/classes"/>
                                         <property name="jar.file.name" value="HelloWorld.jar"/>
                                         <property name="manifest.file.name" value="osgi/ws/HelloWorld.mf"/>
@@ -672,7 +689,7 @@
               
                                     </ant>
                                     <ant antfile="./build-bundles.xml" target="create-bundles">
-                                        <property name="jar.dir" value="target/passbyref"/>
+                                        <property name="jar.dir" value="target/classes/passbyref"/>
                                         <property name="files.dir" value="target/classes"/>
                                         <property name="jar.file.name" value="Greetings.jar"/>
                                         <property name="manifest.file.name" value="osgi/passbyref/Greetings.mf"/>
@@ -682,7 +699,79 @@
               
                                     </ant>
                                     <ant antfile="./build-bundles.xml" target="create-bundles">
-                                        <property name="jar.dir" value="target/properties"/>
+                                        <property name="jar.dir" value="target/classes/callback"/>
+                                        <property name="files.dir" value="target/classes"/>
+                                        <property name="jar.file.name" value="CallbackClient.jar"/>
+                                        <property name="manifest.file.name" value="osgi/callback/CallbackClient.mf"/>
+                                        <property name="files.list" 
+                                             value="callback/client/CallbackClient.class \
+                                                    callback/client/CallbackCallback.class \
+                                                    callback/client/OSGiCallbackClientImpl.class"/>
+              
+                                    </ant>
+                                    <ant antfile="./build-bundles.xml" target="create-bundles">
+                                        <property name="jar.dir" value="target/classes/callback"/>
+                                        <property name="files.dir" value="target/classes"/>
+                                        <property name="jar.file.name" value="CallbackService.jar"/>
+                                        <property name="manifest.file.name" value="osgi/callback/CallbackService.mf"/>
+                                        <property name="files.list" 
+                                             value="callback/service/CallbackService.class \
+                                                    callback/service/OSGiCallbackServiceImpl.class"/>
+              
+                                    </ant>
+                                    <ant antfile="./build-bundles.xml" target="create-bundles">
+                                        <property name="jar.dir" value="target/classes/conversation"/>
+                                        <property name="files.dir" value="target/classes"/>
+                                        <property name="jar.file.name" value="ConversationalClient.jar"/>
+                                        <property name="manifest.file.name" value="osgi/conversation/ConversationalClient.mf"/>
+                                        <property name="files.list" 
+                                             value="conversation/client/ConversationalClientStatefulImpl.class \
+                                                    conversation/client/ConversationalClientStatelessImpl.class \
+                                                    conversation/client/ConversationalCallback.class \
+                                                    conversation/client/ConversationalClient.class \
+                                                    conversation/client/ConversationalClientServiceFactory.class \
+                                                    conversation/client/ConversationalClientActivator.class" />
+              
+                                    </ant>
+                                    <ant antfile="./build-bundles.xml" target="create-bundles">
+                                        <property name="jar.dir" value="target/classes/conversation"/>
+                                        <property name="files.dir" value="target/classes"/>
+                                        <property name="jar.file.name" value="ConversationalReferenceClient.jar"/>
+                                        <property name="manifest.file.name" value="osgi/conversation/ConversationalReferenceClient.mf"/>
+                                        <property name="files.list" 
+                                             value="conversation/referenceclient/ConversationalReferenceClient.class \
+                                                    conversation/referenceclient/ConversationalReferenceClientImpl.class \
+                                                    conversation/referenceclient/ConversationalReferenceClientActivator.class" />
+              
+                                    </ant>
+                                    <ant antfile="./build-bundles.xml" target="create-bundles">
+                                        <property name="jar.dir" value="target/classes/conversation"/>
+                                        <property name="files.dir" value="target/classes"/>
+                                        <property name="jar.file.name" value="ConversationalService.jar"/>
+                                        <property name="manifest.file.name" value="osgi/conversation/ConversationalService.mf"/>
+                                        <property name="files.list" 
+                                             value="conversation/service/ConversationalService.class \
+                                                    conversation/service/ConversationalServiceStatefulImpl.class \
+                                                    conversation/service/ConversationalServiceStatelessImpl.class
+                                                    conversation/service/ConversationalServiceFactory.class \
+                                                    conversation/service/ConversationalServiceActivator.class" />
+              
+                                    </ant>
+                                    <ant antfile="./build-bundles.xml" target="create-bundles">
+                                        <property name="jar.dir" value="target/classes/conversation"/>
+                                        <property name="files.dir" value="target/classes"/>
+                                        <property name="jar.file.name" value="ConversationalService.jar"/>
+                                        <property name="manifest.file.name" value="osgi/conversation/ConversationalService.mf"/>
+                                        <property name="files.list" 
+                                             value="conversation/ConversationalService.class \
+                                                    conversation/ConversationalServiceStatefulImpl.class \
+                                                    conversation/ConversationalServiceStatelessImpl.class
+                                                    conversation/ConversationalServiceFactory.class \
+                                                    conversation/OSGiConversationTestActivator.class" />
+              
+                                    </ant>
+                                    <ant antfile="./build-bundles.xml" target="create-bundles">
+                                        <property name="jar.dir" value="target/classes/properties"/>
                                         <property name="files.dir" value="target/classes"/>
                                         <property name="jar.file.name" value="StockQuote.jar"/>
                                         <property name="manifest.file.name" value="osgi/properties/StockQuote.mf"/>
@@ -692,7 +781,7 @@
               
                                     </ant>
                                     <ant antfile="./build-bundles.xml" target="create-bundles">
-                                        <property name="jar.dir" value="target/properties/ds"/>
+                                        <property name="jar.dir" value="target/classes/properties/ds"/>
                                         <property name="files.dir" value="target/classes"/>
                                         <property name="jar.file.name" value="StockQuote.jar"/>
                                         <property name="manifest.file.name" value="osgi/properties/ds/StockQuote.mf"/>
@@ -703,7 +792,7 @@
               
                                     </ant>
                                     <ant antfile="./build-bundles.xml" target="create-bundles">
-                                        <property name="jar.dir" value="target/properties"/>
+                                        <property name="jar.dir" value="target/classes/properties"/>
                                         <property name="files.dir" value="target/classes"/>
                                         <property name="jar.file.name" value="StockQuoteFactory.jar"/>
                                         <property name="manifest.file.name" value="osgi/properties/StockQuoteFactory.mf"/>
@@ -714,7 +803,7 @@
               
                                     </ant>
                                     <ant antfile="./build-bundles.xml" target="create-bundles">
-                                        <property name="jar.dir" value="target/properties/ds"/>
+                                        <property name="jar.dir" value="target/classes/properties/ds"/>
                                         <property name="files.dir" value="target/classes"/>
                                         <property name="jar.file.name" value="StockQuoteFactory.jar"/>
                                         <property name="manifest.file.name" value="osgi/properties/ds/StockQuoteFactory.mf"/>

Added: incubator/tuscany/java/sca/itest/osgi-implementation/src/main/java/callback/client/CallbackCallback.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/osgi-implementation/src/main/java/callback/client/CallbackCallback.java?rev=575799&view=auto
==============================================================================
--- incubator/tuscany/java/sca/itest/osgi-implementation/src/main/java/callback/client/CallbackCallback.java (added)
+++ incubator/tuscany/java/sca/itest/osgi-implementation/src/main/java/callback/client/CallbackCallback.java Fri Sep 14 14:40:35 2007
@@ -0,0 +1,33 @@
+/*
+ * 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 callback.client;
+
+import org.osoa.sca.annotations.Remotable;
+
+@Remotable
+/*
+ * Callback interface
+ */
+public interface CallbackCallback {
+
+    public void callbackMessage(String aString);
+
+    public void callbackIncrement(String aString);
+
+}

Propchange: incubator/tuscany/java/sca/itest/osgi-implementation/src/main/java/callback/client/CallbackCallback.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/itest/osgi-implementation/src/main/java/callback/client/CallbackCallback.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: incubator/tuscany/java/sca/itest/osgi-implementation/src/main/java/callback/client/CallbackClient.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/osgi-implementation/src/main/java/callback/client/CallbackClient.java?rev=575799&view=auto
==============================================================================
--- incubator/tuscany/java/sca/itest/osgi-implementation/src/main/java/callback/client/CallbackClient.java (added)
+++ incubator/tuscany/java/sca/itest/osgi-implementation/src/main/java/callback/client/CallbackClient.java Fri Sep 14 14:40:35 2007
@@ -0,0 +1,31 @@
+/*
+ * 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 callback.client;
+
+import org.osoa.sca.annotations.Remotable;
+
+@Remotable
+/**
+ * Callback test client interface
+ */
+public interface CallbackClient {
+
+    public void run();
+
+}



---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org