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/02/16 09:23:32 UTC

svn commit: r508346 - in /incubator/tuscany/java/sca/kernel: core/src/main/java/org/apache/tuscany/core/services/deployment/ core/src/main/java/org/apache/tuscany/core/services/deployment/contribution/ core/src/main/resources/org/apache/tuscany/core/ c...

Author: rfeng
Date: Fri Feb 16 00:23:30 2007
New Revision: 508346

URL: http://svn.apache.org/viewvc?view=rev&rev=508346
Log:
Merge contribution code from sca-java-integration branch to trunk. Thanks for Luciano's "contribution" :-)

Added:
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/services/deployment/ContentTypeDescriberImpl.java
      - copied, changed from r508337, incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/main/java/org/apache/tuscany/core/services/deployment/ContentTypeDescriberImpl.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/services/deployment/ContributionProcessorRegistryImpl.java
      - copied unchanged from r508337, incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/main/java/org/apache/tuscany/core/services/deployment/ContributionProcessorRegistryImpl.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/services/deployment/contribution/
      - copied from r508337, incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/main/java/org/apache/tuscany/core/services/deployment/contribution/
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/services/deployment/contribution/JarContributionProcessor.java
      - copied unchanged from r508337, incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/main/java/org/apache/tuscany/core/services/deployment/contribution/JarContributionProcessor.java
    incubator/tuscany/java/sca/kernel/core/src/main/resources/org/apache/tuscany/core/deployment.scdl
      - copied unchanged from r508344, incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/main/resources/org/apache/tuscany/core/deployment.scdl
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/services/deployment/ContentTypeDescriberImplTestCase.java
      - copied, changed from r508338, incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/test/java/org/apache/tuscany/core/services/deployment/ContentTypeDescriberImplTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/services/deployment/contribution/
      - copied from r508338, incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/test/java/org/apache/tuscany/core/services/deployment/contribution/
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/services/deployment/contribution/JarContributionProcessorTestCase.java
      - copied unchanged from r508338, incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/test/java/org/apache/tuscany/core/services/deployment/contribution/JarContributionProcessorTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/resources/org/apache/tuscany/core/services/
      - copied from r508344, incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/test/resources/org/apache/tuscany/core/services/
    incubator/tuscany/java/sca/kernel/core/src/test/resources/org/apache/tuscany/core/services/deployment/
      - copied from r508344, incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/test/resources/org/apache/tuscany/core/services/deployment/
    incubator/tuscany/java/sca/kernel/core/src/test/resources/org/apache/tuscany/core/services/deployment/test.ext
      - copied unchanged from r508344, incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/test/resources/org/apache/tuscany/core/services/deployment/test.ext
    incubator/tuscany/java/sca/kernel/core/src/test/resources/org/apache/tuscany/core/services/deployment/test.scdl
      - copied unchanged from r508344, incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/test/resources/org/apache/tuscany/core/services/deployment/test.scdl
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/deployer/ContentTypeDescriber.java
      - copied unchanged from r508337, incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/deployer/ContentTypeDescriber.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/ContributionProcessorExtension.java
      - copied unchanged from r508338, incubator/tuscany/branches/sca-java-integration/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/ContributionProcessorExtension.java
Modified:
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/services/deployment/ContributionRepositoryImpl.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/services/deployment/ContributionServiceImpl.java
    incubator/tuscany/java/sca/kernel/host-api/src/main/java/org/apache/tuscany/host/deployment/ContributionService.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/deployer/ContributionProcessor.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/deployer/ContributionProcessorRegistry.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/deployer/DeploymentMonitor.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/idl/ElementInfo.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/idl/TypeInfo.java

Copied: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/services/deployment/ContentTypeDescriberImpl.java (from r508337, incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/main/java/org/apache/tuscany/core/services/deployment/ContentTypeDescriberImpl.java)
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/services/deployment/ContentTypeDescriberImpl.java?view=diff&rev=508346&p1=incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/main/java/org/apache/tuscany/core/services/deployment/ContentTypeDescriberImpl.java&r1=508337&p2=incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/services/deployment/ContentTypeDescriberImpl.java&r2=508346
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/main/java/org/apache/tuscany/core/services/deployment/ContentTypeDescriberImpl.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/services/deployment/ContentTypeDescriberImpl.java Fri Feb 16 00:23:30 2007
@@ -49,7 +49,7 @@
      * Initialize contentType registry with know types based on known file
      * extensions
      */
-    public void init() {
+    private void init() {
         contentTypeRegistry.put("SCDL", "application/v.tuscany.scdl");
         contentTypeRegistry.put("WSDL", "application/v.tuscany.wsdl");
     }

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/services/deployment/ContributionRepositoryImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/services/deployment/ContributionRepositoryImpl.java?view=diff&rev=508346&r1=508345&r2=508346
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/services/deployment/ContributionRepositoryImpl.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/services/deployment/ContributionRepositoryImpl.java Fri Feb 16 00:23:30 2007
@@ -36,8 +36,17 @@
 import org.apache.commons.io.FilenameUtils;
 import org.apache.commons.io.IOUtils;
 import org.apache.tuscany.spi.deployer.ContributionRepository;
+import org.osoa.sca.annotations.Destroy;
+import org.osoa.sca.annotations.EagerInit;
+import org.osoa.sca.annotations.Init;
 import org.osoa.sca.annotations.Property;
 
+/**
+ * The default implementation of ContributionRepository
+ * 
+ * @version $Rev$ $Date$
+ */
+@EagerInit
 public class ContributionRepositoryImpl implements ContributionRepository {
     protected final File rootFile;
     protected final Map<URI, URL> reposirotyContent = new HashMap<URI, URL>();
@@ -123,6 +132,14 @@
 
     public List<URI> list() {
         return new ArrayList<URI>(reposirotyContent.keySet());
+    }
+    
+    @Init
+    public void init() {
+    }
+    
+    @Destroy
+    public void destroy() {
     }
 
 }

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/services/deployment/ContributionServiceImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/services/deployment/ContributionServiceImpl.java?view=diff&rev=508346&r1=508345&r2=508346
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/services/deployment/ContributionServiceImpl.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/services/deployment/ContributionServiceImpl.java Fri Feb 16 00:23:30 2007
@@ -23,28 +23,34 @@
 import java.net.URI;
 import java.net.URISyntaxException;
 import java.net.URL;
-import java.net.URLConnection;
-import java.util.HashMap;
-import java.util.Map;
+import java.util.UUID;
 
+import org.apache.commons.io.IOUtils;
 import org.apache.tuscany.host.deployment.ContributionService;
 import org.apache.tuscany.host.deployment.DeploymentException;
-import org.apache.tuscany.host.deployment.UnsupportedContentTypeException;
-import org.apache.tuscany.spi.deployer.ContributionProcessor;
+import org.apache.tuscany.spi.annotation.Autowire;
 import org.apache.tuscany.spi.deployer.ContributionProcessorRegistry;
+import org.apache.tuscany.spi.deployer.ContributionRepository;
+import org.apache.tuscany.spi.model.Contribution;
 
 /**
  * @version $Rev$ $Date$
  */
-public class ContributionServiceImpl implements ContributionService, ContributionProcessorRegistry {
-    private Map<String, ContributionProcessor> registry = new HashMap<String, ContributionProcessor>();
-
-    public void register(ContributionProcessor processor) {
-        registry.put(processor.getContentType(), processor);
-    }
-
-    public void unregister(String contentType) {
-        registry.remove(contentType);
+public class ContributionServiceImpl implements ContributionService {
+    /**
+     * Repository where contributions are stored. Usually set by injection.
+     */
+    protected ContributionRepository contributionRepository;
+    /**
+     * Registry of available processors. Usually set by injection.
+     */
+    protected ContributionProcessorRegistry processorRegistry;
+
+    public ContributionServiceImpl(@Autowire ContributionRepository repository, 
+                                   @Autowire ContributionProcessorRegistry processorRegistry) {
+        super();
+        this.contributionRepository = repository;
+        this.processorRegistry = processorRegistry;
     }
 
     public URI contribute(URL contribution) throws DeploymentException, IOException {
@@ -59,37 +65,42 @@
             throw new IllegalArgumentException("contribution cannot be converted to a URI", e);
         }
 
-        URLConnection connection = contribution.openConnection();
-        String contentType = connection.getContentType();
-        //todo try and figure out content type from the URL
-        if (contentType == null) {
-            throw new UnsupportedContentTypeException(null, contribution.toString());
-        }
-
-        InputStream is = connection.getInputStream();
+        InputStream is = contribution.openConnection().getInputStream();
         try {
-            return contribute(source, is, contentType);
+            return contribute(source, is);
         } finally {
-            try {
-                is.close();
-            } catch (IOException e) {
-                // ignore
-            }
+            IOUtils.closeQuietly(is);
         }
     }
 
-    public URI contribute(URI source, InputStream contribution, String contentType)
-        throws DeploymentException, IOException {
-        if (contentType == null) {
-            throw new IllegalArgumentException("contentType was null");
+    public URI contribute(URI source, InputStream contributionStream) throws DeploymentException, IOException {
+        if (source == null) {
+            throw new IllegalArgumentException("source URI for contribution is null");
+        }
+
+        if (contributionStream == null) {
+            throw new IllegalArgumentException("Invalid contribution stream : null");
         }
 
-        ContributionProcessor processor = registry.get(contentType);
-        if (processor == null) {
-            throw new UnsupportedContentTypeException(contentType, source.toString());
+        // store the contribution in the contribution repository
+        URL storedURL = this.contributionRepository.store(source, contributionStream);
+        Contribution contribution = null;
+        try {
+            // start processing valid contribution
+            contribution = new Contribution();
+            contribution.setUri(new URI("sca://contribution/" + UUID.randomUUID()));
+
+            this.processorRegistry.processContent(contribution, storedURL, contributionStream);
+
+        } catch (URISyntaxException urie) {
+            // FIXME
         }
-        
-        return null;
+
+        if (contribution == null) {
+            // FIXME throw exception
+        }
+
+        return contribution.getUri();
     }
 
     public void remove(URI contribution) throws DeploymentException {

Copied: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/services/deployment/ContentTypeDescriberImplTestCase.java (from r508338, incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/test/java/org/apache/tuscany/core/services/deployment/ContentTypeDescriberImplTestCase.java)
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/services/deployment/ContentTypeDescriberImplTestCase.java?view=diff&rev=508346&p1=incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/test/java/org/apache/tuscany/core/services/deployment/ContentTypeDescriberImplTestCase.java&r1=508338&p2=incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/services/deployment/ContentTypeDescriberImplTestCase.java&r2=508346
==============================================================================
--- incubator/tuscany/branches/sca-java-integration/sca/kernel/core/src/test/java/org/apache/tuscany/core/services/deployment/ContentTypeDescriberImplTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/services/deployment/ContentTypeDescriberImplTestCase.java Fri Feb 16 00:23:30 2007
@@ -27,20 +27,20 @@
 public class ContentTypeDescriberImplTestCase extends TestCase {
     private ContentTypeDescriberImpl contentTypeBuilder;
 
-    public void testResolveContentType() throws Exception{
+    public void testResolveContentType() throws Exception {
         URL artifactURL = getClass().getResource("test.scdl");
         assertEquals("application/v.tuscany.scdl", contentTypeBuilder.getContentType(artifactURL, null));
     }
 
-    
-    public void testUnknownResolveContentType() throws Exception{
+    public void testUnknownResolveContentType() throws Exception {
         URL artifactURL = getClass().getResource("test.ext");
         assertNull(contentTypeBuilder.getContentType(artifactURL, null));
     }
-    
-    public void testDefaultContentType() throws Exception{
+
+    public void testDefaultContentType() throws Exception {
         URL artifactURL = getClass().getResource("test.ext");
-        assertEquals("application/v.tuscany.ext", contentTypeBuilder.getContentType(artifactURL, "application/v.tuscany.ext"));        
+        assertEquals("application/v.tuscany.ext", contentTypeBuilder.getContentType(artifactURL,
+                                                                                    "application/v.tuscany.ext"));
     }
 
     protected void setUp() throws Exception {

Modified: incubator/tuscany/java/sca/kernel/host-api/src/main/java/org/apache/tuscany/host/deployment/ContributionService.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/host-api/src/main/java/org/apache/tuscany/host/deployment/ContributionService.java?view=diff&rev=508346&r1=508345&r2=508346
==============================================================================
--- incubator/tuscany/java/sca/kernel/host-api/src/main/java/org/apache/tuscany/host/deployment/ContributionService.java (original)
+++ incubator/tuscany/java/sca/kernel/host-api/src/main/java/org/apache/tuscany/host/deployment/ContributionService.java Fri Feb 16 00:23:30 2007
@@ -47,13 +47,10 @@
      * @param source       an identifier for the source of this contribution
      * @param contribution a stream containing the resource being contributed; the stream will not be closed but the
      *                     read position after the call is undefined
-     * @param contentType  the type of contribution being made; must be a valid Content-Type value as specified by <a
-     *                     href="http://www.ietf.org/rfc/rfc2045.txt">RFC2045</a> and must not be null @return a URI
-     *                     that uniquely identifies this contribution within the SCA Domain
      * @throws DeploymentException if there was a problem with the contribution
      * @throws IOException         if there was a problem reading the stream
      */
-    URI contribute(URI source, InputStream contribution, String contentType) throws DeploymentException, IOException;
+    URI contribute(URI source, InputStream contribution) throws DeploymentException, IOException;
     
     /**
      * Remove a contribution from the SCA domain

Modified: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/deployer/ContributionProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/deployer/ContributionProcessor.java?view=diff&rev=508346&r1=508345&r2=508346
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/deployer/ContributionProcessor.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/deployer/ContributionProcessor.java Fri Feb 16 00:23:30 2007
@@ -20,7 +20,7 @@
 
 import java.io.IOException;
 import java.io.InputStream;
-import java.net.URI;
+import java.net.URL;
 
 import org.apache.tuscany.host.deployment.DeploymentException;
 import org.apache.tuscany.spi.model.Contribution;
@@ -32,27 +32,20 @@
  */
 public interface ContributionProcessor {
     /**
-     * Returns the content type that this implementation can handle.
-     * 
-     * @return the content type that this implementation can handle
-     */
-    String getContentType();
-
-    /**
      * Process a contribution or an artifact in the contribution from the input
      * stream. The processor might add artifacts or model objects to the
      * contribution object.
      * 
      * @param contribution The contribution model that will be used to hold the
      *            results from the processing
+     * @param source The URI for the contribution/artifact
      * @param inputStream The input stream for the contribution. The stream will
      *            not be closed but the read position after the call is
      *            undefined
-     * @param source The URI for the contribution/artifact
      * @throws DeploymentException if there was a problem with the contribution
      * @throws IOException if there was a problem reading the stream
      */
-    void processContent(Contribution contribution, URI source, InputStream inputStream) throws DeploymentException,
+    void processContent(Contribution contribution, URL source, InputStream inputStream) throws DeploymentException,
         IOException;
 
     /**
@@ -68,6 +61,6 @@
      * @throws DeploymentException
      * @throws IOException
      */
-    void processModel(Contribution contribution, URI source, Object modelObject) throws DeploymentException,
+    void processModel(Contribution contribution, URL source, Object modelObject) throws DeploymentException,
         IOException;
 }

Modified: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/deployer/ContributionProcessorRegistry.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/deployer/ContributionProcessorRegistry.java?view=diff&rev=508346&r1=508345&r2=508346
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/deployer/ContributionProcessorRegistry.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/deployer/ContributionProcessorRegistry.java Fri Feb 16 00:23:30 2007
@@ -21,16 +21,16 @@
 /**
  * @version $Rev$ $Date$
  */
-public interface ContributionProcessorRegistry {
+public interface ContributionProcessorRegistry extends ContributionProcessor {
     /**
      * Register a ContributionProcessor using the content type as the key
      * @param processor
      */
-    void register(ContributionProcessor processor);
+    void register(String contentType, ContributionProcessor processor);
     
     /**
      * Unregister a ContributionProcessor by content type
      * @param contentType
      */
     void unregister(String contentType);
-}
+}
\ No newline at end of file

Modified: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/deployer/DeploymentMonitor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/deployer/DeploymentMonitor.java?view=diff&rev=508346&r1=508345&r2=508346
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/deployer/DeploymentMonitor.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/deployer/DeploymentMonitor.java Fri Feb 16 00:23:30 2007
@@ -8,10 +8,10 @@
  */
 public interface DeploymentMonitor {
 
-    @LogLevel("DEBUG")
+    @LogLevel("FINER")
     void startDeployment();
 
-    @LogLevel("DEBUG")
+    @LogLevel("FINER")
     void endDeployment();
 
     @LogLevel("SEVERE")

Modified: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/idl/ElementInfo.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/idl/ElementInfo.java?view=diff&rev=508346&r1=508345&r2=508346
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/idl/ElementInfo.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/idl/ElementInfo.java Fri Feb 16 00:23:30 2007
@@ -51,4 +51,10 @@
     public TypeInfo getType() {
         return type;
     }
+    
+    public String toString() {
+        StringBuffer sb = new StringBuffer();
+        sb.append("Element: ").append(name).append(" ").append(type);
+        return sb.toString();
+    }
 }

Modified: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/idl/TypeInfo.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/idl/TypeInfo.java?view=diff&rev=508346&r1=508345&r2=508346
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/idl/TypeInfo.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/idl/TypeInfo.java Fri Feb 16 00:23:30 2007
@@ -62,5 +62,11 @@
     public TypeInfo getBaseType() {
         return baseType;
     }
+    
+    public String toString() {
+        StringBuffer sb = new StringBuffer();
+        sb.append("Type: ").append(name);
+        return sb.toString();
+    }    
 
 }



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