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

svn commit: r558625 - in /incubator/tuscany/java/sca: itest/contribution/src/test/java/org/apache/tuscany/sca/test/contribution/ modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ modules/contribution-impl/src/tes...

Author: lresende
Date: Sun Jul 22 23:45:08 2007
New Revision: 558625

URL: http://svn.apache.org/viewvc?view=rev&rev=558625
Log:
Extensibility for reading contribution metadata, this is to allow different types of import/export

Added:
    incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionMetadataDocumentProcessorImpl.java
    incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/sca/contribution/services/ContributionMetadataDocumentProcessorTestCase.java
    incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/service/ContributionMetadataDocumentProcessor.java
Modified:
    incubator/tuscany/java/sca/itest/contribution/src/test/java/org/apache/tuscany/sca/test/contribution/ContributionServiceTestCase.java
    incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionServiceImpl.java
    incubator/tuscany/java/sca/modules/distributed/src/main/java/org/apache/tuscany/sca/distributed/host/impl/NodeRuntimeBuilder.java
    incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/ReallySmallRuntimeBuilder.java

Modified: incubator/tuscany/java/sca/itest/contribution/src/test/java/org/apache/tuscany/sca/test/contribution/ContributionServiceTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/contribution/src/test/java/org/apache/tuscany/sca/test/contribution/ContributionServiceTestCase.java?view=diff&rev=558625&r1=558624&r2=558625
==============================================================================
--- incubator/tuscany/java/sca/itest/contribution/src/test/java/org/apache/tuscany/sca/test/contribution/ContributionServiceTestCase.java (original)
+++ incubator/tuscany/java/sca/itest/contribution/src/test/java/org/apache/tuscany/sca/test/contribution/ContributionServiceTestCase.java Sun Jul 22 23:45:08 2007
@@ -68,6 +68,7 @@
 import org.apache.tuscany.sca.contribution.service.util.IOHelper;
 import org.apache.tuscany.sca.core.DefaultExtensionPointRegistry;
 import org.apache.tuscany.sca.core.ExtensionPointRegistry;
+import org.apache.tuscany.sca.host.embedded.impl.EmbeddedSCADomain;
 import org.apache.tuscany.sca.interfacedef.InterfaceContractMapper;
 import org.apache.tuscany.sca.interfacedef.impl.InterfaceContractMapperImpl;
 import org.apache.tuscany.sca.policy.DefaultPolicyFactory;
@@ -82,66 +83,20 @@
     private static final String JAR_CONTRIBUTION = "/repository/sample-calculator.jar";
     private static final String FOLDER_CONTRIBUTION = "target/classes/";
 
+    private ClassLoader cl;
+    private EmbeddedSCADomain domain;
     private ContributionService contributionService;
 
     protected void setUp() throws Exception {
-
-        // Create default factories
-        AssemblyFactory assemblyFactory = new DefaultAssemblyFactory();
-        PolicyFactory policyFactory = new DefaultPolicyFactory();
-        InterfaceContractMapper mapper = new InterfaceContractMapperImpl();
-
-        // Create an extension point registry
-        ExtensionPointRegistry extensionRegistry = new DefaultExtensionPointRegistry();
-
-        // Add artifact processor extension points
-        DefaultStAXArtifactProcessorExtensionPoint staxProcessors = new DefaultStAXArtifactProcessorExtensionPoint();
-        extensionRegistry.addExtensionPoint(staxProcessors);
-        ExtensibleStAXArtifactProcessor staxProcessor = new ExtensibleStAXArtifactProcessor(staxProcessors, XMLInputFactory.newInstance(), XMLOutputFactory.newInstance());
-        DefaultURLArtifactProcessorExtensionPoint documentProcessors = new DefaultURLArtifactProcessorExtensionPoint();
-        extensionRegistry.addExtensionPoint(documentProcessors);
-        ExtensibleURLArtifactProcessor documentProcessor = new ExtensibleURLArtifactProcessor(documentProcessors);
-
-        // Register base artifact processors
-        staxProcessors.addArtifactProcessor(new CompositeProcessor(assemblyFactory, policyFactory, mapper,
-                                                                   staxProcessor));
-        staxProcessors.addArtifactProcessor(new ComponentTypeProcessor(assemblyFactory, policyFactory, staxProcessor));
-        staxProcessors.addArtifactProcessor(new ConstrainingTypeProcessor(assemblyFactory, policyFactory,
-                                                                          staxProcessor));
-
-        XMLInputFactory inputFactory = XMLInputFactory.newInstance();
-        documentProcessors.addArtifactProcessor(new CompositeDocumentProcessor(staxProcessor, inputFactory));
-        documentProcessors.addArtifactProcessor(new ComponentTypeDocumentProcessor(staxProcessor, inputFactory));
-        documentProcessors.addArtifactProcessor(new ConstrainingTypeDocumentProcessor(staxProcessor, inputFactory));
-
-        // Create package processor extension point
-        PackageTypeDescriberImpl describer = new PackageTypeDescriberImpl();
-        PackageProcessorExtensionPoint packageProcessors = new DefaultPackageProcessorExtensionPoint();
-        PackageProcessor packageProcessor = new ExtensiblePackageProcessor(packageProcessors, describer);
-        extensionRegistry.addExtensionPoint(packageProcessors);
-
-        // Register base package processors
-        packageProcessors.addPackageProcessor(new JarContributionProcessor());
-        packageProcessors.addPackageProcessor(new FolderContributionProcessor());
-        
-        //Create Contribution Model Resolver extension point
-        ModelResolverExtensionPoint modelResolverExtensionPoint = new DefaultModelResolverExtensionPoint();
-        
+        //Create a test embedded SCA domain
+        cl = getClass().getClassLoader();
+        domain = new EmbeddedSCADomain(cl, "http://localhost");
         
-        //Create contribution postProcessor extension point
-        DefaultContributionPostProcessorExtensionPoint contributionPostProcessors = new DefaultContributionPostProcessorExtensionPoint();
-        ContributionPostProcessor postProcessor = new ExtensibleContributionPostProcessor(contributionPostProcessors);
-        extensionRegistry.addExtensionPoint(contributionPostProcessors);
-
-
-        // Create a repository
-        ContributionRepository repository = new ContributionRepositoryImpl("target");
+        //Start the domain
+        domain.start();
 
-        // Create an artifact resolver and contribution service
-        this.contributionService = new ContributionServiceImpl(repository, packageProcessor, documentProcessor, 
-                                                               postProcessor, modelResolverExtensionPoint, assemblyFactory,
-                                                               new ContributionFactoryImpl(),
-                                                               XMLInputFactory.newInstance());
+        //get a reference to the contribution service
+        contributionService = domain.getContributionService();
     }
 
     public void testContributeJAR() throws Exception {

Added: incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionMetadataDocumentProcessorImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionMetadataDocumentProcessorImpl.java?view=auto&rev=558625
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionMetadataDocumentProcessorImpl.java (added)
+++ incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionMetadataDocumentProcessorImpl.java Sun Jul 22 23:45:08 2007
@@ -0,0 +1,109 @@
+/*
+ * 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.service.impl;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URL;
+import java.net.URLClassLoader;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import javax.xml.stream.XMLInputFactory;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+
+import org.apache.tuscany.sca.assembly.AssemblyFactory;
+import org.apache.tuscany.sca.contribution.Contribution;
+import org.apache.tuscany.sca.contribution.ContributionFactory;
+import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor;
+import org.apache.tuscany.sca.contribution.service.ContributionMetadataDocumentProcessor;
+import org.apache.tuscany.sca.contribution.service.ContributionReadException;
+
+/**
+ * Loader that handles contribution metadata files
+ * 
+ * @version $Rev: 515261 $ $Date: 2007-03-06 11:22:46 -0800 (Tue, 06 Mar 2007) $
+ */
+public class ContributionMetadataDocumentProcessorImpl  implements ContributionMetadataDocumentProcessor {
+    protected final URLClassLoader classLoader;
+    protected final StAXArtifactProcessor staxProcessor;
+    protected final AssemblyFactory assemblyFactory;
+    protected final ContributionFactory contributionFactory;
+    protected final XMLInputFactory inputFactory;
+
+    public ContributionMetadataDocumentProcessorImpl(URLClassLoader classLoader, StAXArtifactProcessor staxProcessor, AssemblyFactory assemblyFactory, ContributionFactory contributionFactory, XMLInputFactory inputFactory) {
+        super();
+        this.classLoader = classLoader;
+        this.staxProcessor = staxProcessor; 
+        this.assemblyFactory = assemblyFactory;
+        this.contributionFactory = contributionFactory;
+        this.inputFactory = inputFactory;
+    }
+
+    private Contribution mergeContributionMetadata(Contribution contrib1, Contribution contrib2  ) {
+        contrib1.getDeployables().addAll(contrib2.getDeployables());
+        contrib1.getImports().addAll(contrib2.getImports());
+        contrib1.getExports().addAll(contrib2.getExports());
+        
+        return contrib1;
+    }
+    
+    public void read(Contribution contribution) throws XMLStreamException, ContributionReadException {
+        List<URL> artifactList = new ArrayList<URL>(2);
+        //set generated first, as the user created one ovverrides generated information
+        artifactList.add(this.classLoader.getResource(Contribution.SCA_CONTRIBUTION_GENERATED_META));
+        artifactList.add(this.classLoader.getResource(Contribution.SCA_CONTRIBUTION_META));
+        
+        URL artifactURL = null; 
+        InputStream artifactStream = null; 
+        Iterator artifactIterator = artifactList.iterator();
+        while( artifactIterator.hasNext() ){
+            
+            try {
+                artifactURL = (URL) artifactIterator.next();
+                if( artifactURL != null) {
+                    artifactStream = artifactURL.openStream();
+                    XMLStreamReader reader = inputFactory.createXMLStreamReader(artifactStream);
+                    reader.nextTag();
+                    
+                    Contribution contributionMetadata = (Contribution) staxProcessor.read(reader); 
+                    if (contributionMetadata != null) {
+                        this.mergeContributionMetadata(contribution, contributionMetadata);
+                    }
+                }
+                
+            } catch (XMLStreamException e) {
+                throw new ContributionReadException(e);
+            } catch (IOException e) {
+                throw new ContributionReadException(e);
+            } finally {
+                try {
+                    if (artifactStream != null) {
+                        artifactStream.close();
+                        artifactStream = null;
+                    }
+                } catch (IOException ioe) {
+                    //ignore
+                }
+            }
+        }
+    }
+}

Modified: incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionServiceImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionServiceImpl.java?view=diff&rev=558625&r1=558624&r2=558625
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionServiceImpl.java (original)
+++ incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionServiceImpl.java Sun Jul 22 23:45:08 2007
@@ -31,7 +31,6 @@
 
 import javax.xml.stream.XMLInputFactory;
 import javax.xml.stream.XMLStreamException;
-import javax.xml.stream.XMLStreamReader;
 
 import org.apache.tuscany.sca.assembly.AssemblyFactory;
 import org.apache.tuscany.sca.assembly.Composite;
@@ -44,6 +43,7 @@
 import org.apache.tuscany.sca.contribution.NamespaceImport;
 import org.apache.tuscany.sca.contribution.processor.ContributionPostProcessor;
 import org.apache.tuscany.sca.contribution.processor.PackageProcessor;
+import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor;
 import org.apache.tuscany.sca.contribution.processor.URLArtifactProcessor;
 import org.apache.tuscany.sca.contribution.resolver.ExtensibleModelResolver;
 import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
@@ -52,7 +52,7 @@
 import org.apache.tuscany.sca.contribution.resolver.impl.NamespaceImportAllModelResolverImpl;
 import org.apache.tuscany.sca.contribution.resolver.impl.NamespaceImportModelResolverImpl;
 import org.apache.tuscany.sca.contribution.service.ContributionException;
-import org.apache.tuscany.sca.contribution.service.ContributionMetadataLoaderException;
+import org.apache.tuscany.sca.contribution.service.ContributionMetadataDocumentProcessor;
 import org.apache.tuscany.sca.contribution.service.ContributionRepository;
 import org.apache.tuscany.sca.contribution.service.ContributionService;
 import org.apache.tuscany.sca.contribution.service.util.IOHelper;
@@ -62,6 +62,9 @@
  * 
  * @version $Rev$ $Date$
  */
+/**
+ * 
+ */
 public class ContributionServiceImpl implements ContributionService {
 
     /**
@@ -81,6 +84,12 @@
     private URLArtifactProcessor artifactProcessor;
     
     /**
+     * Registry of available stax processors,
+     * used for loading contribution metadata in a extensible way
+     */
+    private StAXArtifactProcessor staxProcessor;
+    
+    /**
      * Registry of available model resolvers
      */
     
@@ -106,10 +115,6 @@
      */
     private ContributionFactory contributionFactory;
 
-    /**
-     * contribution metadata loader
-     */
-    private ContributionMetadataLoaderImpl contributionLoader;
 
     /**
      * Contribution registry This is a registry of processed Contributions indexed by URI
@@ -118,7 +123,8 @@
     
     public ContributionServiceImpl(ContributionRepository repository,
                                    PackageProcessor packageProcessor,
-                                   URLArtifactProcessor artifactProcessor,
+                                   URLArtifactProcessor documentProcessor,
+                                   StAXArtifactProcessor staxProcessor,
                                    ContributionPostProcessor postProcessor,
                                    ModelResolverExtensionPoint modelResolverExtensionPoint,
                                    AssemblyFactory assemblyFactory,
@@ -127,13 +133,13 @@
         super();
         this.contributionRepository = repository;
         this.packageProcessor = packageProcessor;
-        this.artifactProcessor = artifactProcessor;
+        this.artifactProcessor = documentProcessor;
+        this.staxProcessor = staxProcessor;
         this.postProcessor = postProcessor;
         this.modelResolverExtensionPoint = modelResolverExtensionPoint;
         this.xmlFactory = xmlFactory;
         this.assemblyFactory = assemblyFactory;
         this.contributionFactory = contributionFactory;
-        this.contributionLoader = new ContributionMetadataLoaderImpl(assemblyFactory, contributionFactory);
     }
 
     public Contribution contribute(String contributionURI, URL sourceURL, boolean storeInRepository)
@@ -172,46 +178,29 @@
         return addContribution(contributionURI, sourceURL, input, modelResolver, true);
     }
 
-    private Contribution initializeContributionMetadata(URL sourceURL, ModelResolver modelResolver) throws ContributionException {
+    /**
+     * Perform read of the contribution metada loader (sca-contribution.xml and sca-contribution-generated.xml)
+     * When the two metadata files are available, the information provided are merged, and the sca-contribution has priorities
+     * 
+     * @param sourceURL
+     * @return Contribution
+     * @throws ContributionException
+     */
+    private Contribution readContributionMetadata(URL sourceURL) throws ContributionException {
         Contribution contributionMetadata = null;
-        URL contributionMetadataURL;
-        URL generatedContributionMetadataURL;
-        InputStream metadataStream = null;
 
         URL[] clUrls = {sourceURL};
         URLClassLoader cl = new URLClassLoader(clUrls, null);
-
-        contributionMetadataURL = cl.getResource(Contribution.SCA_CONTRIBUTION_META);
-        generatedContributionMetadataURL = cl.getResource(Contribution.SCA_CONTRIBUTION_GENERATED_META);
-
+        
+        
+        ContributionMetadataDocumentProcessor metadataDocumentProcessor = 
+            new ContributionMetadataDocumentProcessorImpl(cl, this.staxProcessor, this.assemblyFactory, this.contributionFactory, this.xmlFactory);
+        contributionMetadata = contributionFactory.createContribution();
         try {
-            contributionMetadata = this.contributionFactory.createContribution();
-            contributionMetadata.setModelResolver(modelResolver);
-            if (contributionMetadataURL != null || generatedContributionMetadataURL != null) {
-                URL metadataURL = contributionMetadataURL != null ? contributionMetadataURL
-                                                                 : generatedContributionMetadataURL;
-
-                try {
-                    metadataStream = metadataURL.openStream();
-                    XMLStreamReader xmlReader = this.xmlFactory.createXMLStreamReader(metadataStream);
-                    this.contributionLoader.load(contributionMetadata, xmlReader);
-
-                } catch (IOException ioe) {
-                    throw new InvalidContributionMetadataException(ioe.getMessage(), metadataURL.toExternalForm(), ioe);
-                } catch (XMLStreamException xmle) {
-                    throw new InvalidContributionMetadataException(xmle.getMessage(), metadataURL.toExternalForm(),
-                                                                   xmle);
-                } catch (ContributionMetadataLoaderException le) {
-                    throw new InvalidContributionMetadataException(le.getMessage(), metadataURL.toExternalForm(), le);
-                }
-            }
-        } finally {
-            IOHelper.closeQuietly(metadataStream);
-            metadataStream = null;
-        }
+            metadataDocumentProcessor.read(contributionMetadata);
+        } catch (XMLStreamException e) {
+            throw new InvalidContributionMetadataException("Invalid contribution metadata for contribution.");
 
-        if (contributionMetadata == null) {
-            contributionMetadata = this.contributionFactory.createContribution();
         }
         
         return contributionMetadata;
@@ -273,7 +262,7 @@
         }
 
         //initialize contribution based on it's metadata if available
-        Contribution contribution = initializeContributionMetadata(locationURL, modelResolver);
+        Contribution contribution = readContributionMetadata(locationURL);
         
         //create contribution model resolver
         if (modelResolver == null) {

Added: incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/sca/contribution/services/ContributionMetadataDocumentProcessorTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/sca/contribution/services/ContributionMetadataDocumentProcessorTestCase.java?view=auto&rev=558625
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/sca/contribution/services/ContributionMetadataDocumentProcessorTestCase.java (added)
+++ incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/sca/contribution/services/ContributionMetadataDocumentProcessorTestCase.java Sun Jul 22 23:45:08 2007
@@ -0,0 +1,96 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.    
+ */
+
+package org.apache.tuscany.sca.contribution.services;
+
+import java.io.StringReader;
+
+import javax.xml.stream.XMLInputFactory;
+import javax.xml.stream.XMLStreamReader;
+
+import junit.framework.TestCase;
+
+import org.apache.tuscany.sca.assembly.DefaultAssemblyFactory;
+import org.apache.tuscany.sca.contribution.Contribution;
+import org.apache.tuscany.sca.contribution.ContributionFactory;
+import org.apache.tuscany.sca.contribution.impl.ContributionFactoryImpl;
+import org.apache.tuscany.sca.contribution.resolver.impl.ModelResolverImpl;
+import org.apache.tuscany.sca.contribution.service.impl.ContributionMetadataLoaderImpl;
+import org.apache.tuscany.sca.contribution.service.impl.InvalidValueException;
+
+/**
+ * @version $Rev: 538445 $ $Date: 2007-05-15 23:20:37 -0700 (Tue, 15 May 2007) $
+ */
+public class ContributionMetadataDocumentProcessorTestCase extends TestCase {
+
+    private static final String VALID_XML =
+        "<?xml version=\"1.0\" encoding=\"ASCII\"?>" 
+            + "<contribution xmlns=\"http://www.osoa.org/xmlns/sca/1.0\" xmlns:ns=\"http://ns\">"
+            + "<deployable composite=\"ns:Composite1\"/>"
+            + "<deployable composite=\"ns:Composite2\"/>"
+            + "<import namespace=\"http://ns2\" location=\"sca://contributions/002/\"/>"
+            + "<export namespace=\"http://ns1\"/>"
+            + "</contribution>";
+
+    private static final String INVALID_XML =
+        "<?xml version=\"1.0\" encoding=\"ASCII\"?>" 
+            + "<contribution xmlns=\"http://www.osoa.org/xmlns/sca/1.0\" xmlns:ns=\"http://ns\">"
+            + "<deployable composite=\"ns:Composite1\"/>"
+            + "<deployable composite=\"ns3:Composite1\"/>"
+            + "<import namespace=\"http://ns2\" location=\"sca://contributions/002/\"/>"
+            + "<export namespace=\"http://ns1\"/>"
+            + "</contribution>";
+
+    private XMLInputFactory xmlFactory;
+
+    protected void setUp() throws Exception {
+        super.setUp();
+//        xmlFactory = XMLInputFactory.newInstance();
+    }
+
+    public void testLoad() throws Exception {
+//        XMLStreamReader reader = xmlFactory.createXMLStreamReader(new StringReader(VALID_XML));
+//
+//        ContributionFactory factory = new ContributionFactoryImpl();
+//        ContributionMetadataLoaderImpl loader = 
+//            new ContributionMetadataLoaderImpl(new DefaultAssemblyFactory(), factory);
+//        Contribution contribution = factory.createContribution();
+//        contribution.setModelResolver(new ModelResolverImpl(getClass().getClassLoader()));
+//        loader.load(contribution, reader);
+//        assertNotNull(contribution);
+//        assertEquals(1, contribution.getImports().size());
+//        assertEquals(1, contribution.getExports().size());
+//        assertEquals(2, contribution.getDeployables().size());
+    }
+
+    public void testLoadInvalid() throws Exception {
+//        XMLStreamReader reader = xmlFactory.createXMLStreamReader(new StringReader(INVALID_XML));
+//        ContributionFactory factory = new ContributionFactoryImpl();
+//        ContributionMetadataLoaderImpl loader = 
+//            new ContributionMetadataLoaderImpl(new DefaultAssemblyFactory(), factory);
+//        Contribution contribution = factory.createContribution();
+//        contribution.setModelResolver(new ModelResolverImpl(getClass().getClassLoader()));
+//        try {
+//            loader.load(contribution, reader);
+//            fail("InvalidException should have been thrown");
+//        } catch (InvalidValueException e) {
+//            assertTrue(true);
+//        }
+    }    
+}

Added: incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/service/ContributionMetadataDocumentProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/service/ContributionMetadataDocumentProcessor.java?view=auto&rev=558625
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/service/ContributionMetadataDocumentProcessor.java (added)
+++ incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/service/ContributionMetadataDocumentProcessor.java Sun Jul 22 23:45:08 2007
@@ -0,0 +1,41 @@
+/*
+ * 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.service;
+
+import javax.xml.stream.XMLStreamException;
+
+import org.apache.tuscany.sca.contribution.Contribution;
+
+/**
+ * Document processor responsible to process the contribution metadata 
+ * 
+ * @version $Rev$ $Date$
+ */
+public interface ContributionMetadataDocumentProcessor {
+    /**
+     * Create the model object for Contribution Service metadata information
+     * 
+     * @param contribution The contribution to populate with the proper values from the side file
+     * @param reader The XML stream reader positioned on the applicable START_ELEMENT
+     * @throws XMLStreamException
+     * @throws ContributionMetadataReadException
+     */
+    void read(Contribution contribution) throws XMLStreamException, ContributionReadException;
+}
\ No newline at end of file

Modified: incubator/tuscany/java/sca/modules/distributed/src/main/java/org/apache/tuscany/sca/distributed/host/impl/NodeRuntimeBuilder.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/distributed/src/main/java/org/apache/tuscany/sca/distributed/host/impl/NodeRuntimeBuilder.java?view=diff&rev=558625&r1=558624&r2=558625
==============================================================================
--- incubator/tuscany/java/sca/modules/distributed/src/main/java/org/apache/tuscany/sca/distributed/host/impl/NodeRuntimeBuilder.java (original)
+++ incubator/tuscany/java/sca/modules/distributed/src/main/java/org/apache/tuscany/sca/distributed/host/impl/NodeRuntimeBuilder.java Sun Jul 22 23:45:08 2007
@@ -52,6 +52,7 @@
 import org.apache.tuscany.sca.contribution.resolver.ModelResolverExtensionPoint;
 import org.apache.tuscany.sca.contribution.service.ContributionRepository;
 import org.apache.tuscany.sca.contribution.service.ContributionService;
+import org.apache.tuscany.sca.contribution.service.impl.ContributionMetadataProcessor;
 import org.apache.tuscany.sca.contribution.service.impl.ContributionRepositoryImpl;
 import org.apache.tuscany.sca.contribution.service.impl.ContributionServiceImpl;
 import org.apache.tuscany.sca.contribution.service.impl.PackageTypeDescriberImpl;
@@ -91,14 +92,12 @@
         registry.addExtensionPoint(staxProcessors);
 
         // Create and register STAX processors for SCA assembly XML
-        ExtensibleStAXArtifactProcessor staxProcessor = new ExtensibleStAXArtifactProcessor(staxProcessors, xmlFactory,
-                                                                                            XMLOutputFactory
-                                                                                                .newInstance());
-        staxProcessors.addArtifactProcessor(new CompositeProcessor(assemblyFactory, policyFactory, mapper,
-                                                                   staxProcessor));
+        ExtensibleStAXArtifactProcessor staxProcessor = 
+            new ExtensibleStAXArtifactProcessor(staxProcessors, xmlFactory, XMLOutputFactory.newInstance());
+        staxProcessors.addArtifactProcessor(new CompositeProcessor(assemblyFactory, policyFactory, mapper, staxProcessor));
         staxProcessors.addArtifactProcessor(new ComponentTypeProcessor(assemblyFactory, policyFactory, staxProcessor));
-        staxProcessors
-            .addArtifactProcessor(new ConstrainingTypeProcessor(assemblyFactory, policyFactory, staxProcessor));
+        staxProcessors.addArtifactProcessor(new ConstrainingTypeProcessor(assemblyFactory, policyFactory, staxProcessor));
+        staxProcessors.addArtifactProcessor(new ContributionMetadataProcessor(assemblyFactory, contributionFactory));
 
         // Create URL artifact processor extension point
         // FIXME use the interface instead of the class
@@ -147,6 +146,7 @@
         ContributionService contributionService = new ContributionServiceImpl(repository, 
                                                                               packageProcessor,
                                                                               documentProcessor, 
+                                                                              staxProcessor,
                                                                               postProcessor,
                                                                               modelResolverExtensionPoint,
                                                                               assemblyFactory,

Modified: incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/ReallySmallRuntimeBuilder.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/ReallySmallRuntimeBuilder.java?view=diff&rev=558625&r1=558624&r2=558625
==============================================================================
--- incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/ReallySmallRuntimeBuilder.java (original)
+++ incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/ReallySmallRuntimeBuilder.java Sun Jul 22 23:45:08 2007
@@ -70,6 +70,7 @@
 import org.apache.tuscany.sca.contribution.service.ContributionRepository;
 import org.apache.tuscany.sca.contribution.service.ContributionService;
 import org.apache.tuscany.sca.contribution.service.TypeDescriber;
+import org.apache.tuscany.sca.contribution.service.impl.ContributionMetadataProcessor;
 import org.apache.tuscany.sca.contribution.service.impl.ContributionRepositoryImpl;
 import org.apache.tuscany.sca.contribution.service.impl.ContributionServiceImpl;
 import org.apache.tuscany.sca.contribution.service.impl.PackageTypeDescriberImpl;
@@ -174,14 +175,12 @@
         registry.addExtensionPoint(staxProcessors);
 
         // Create and register STAX processors for SCA assembly XML
-        ExtensibleStAXArtifactProcessor staxProcessor = new ExtensibleStAXArtifactProcessor(staxProcessors, xmlFactory,
-                                                                                            XMLOutputFactory
-                                                                                                .newInstance());
-        staxProcessors.addArtifactProcessor(new CompositeProcessor(assemblyFactory, policyFactory, mapper,
-                                                                   staxProcessor));
+        ExtensibleStAXArtifactProcessor staxProcessor = 
+            new ExtensibleStAXArtifactProcessor(staxProcessors, xmlFactory, XMLOutputFactory.newInstance());
+        staxProcessors.addArtifactProcessor(new CompositeProcessor(assemblyFactory, policyFactory, mapper, staxProcessor));
         staxProcessors.addArtifactProcessor(new ComponentTypeProcessor(assemblyFactory, policyFactory, staxProcessor));
-        staxProcessors
-            .addArtifactProcessor(new ConstrainingTypeProcessor(assemblyFactory, policyFactory, staxProcessor));
+        staxProcessors.addArtifactProcessor(new ConstrainingTypeProcessor(assemblyFactory, policyFactory, staxProcessor));
+        staxProcessors.addArtifactProcessor(new ContributionMetadataProcessor(assemblyFactory,contributionFactory));
 
         // Create URL artifact processor extension point
         URLArtifactProcessorExtensionPoint documentProcessors = new DefaultURLArtifactProcessorExtensionPoint();
@@ -225,8 +224,9 @@
         }
 
         ExtensibleURLArtifactProcessor documentProcessor = new ExtensibleURLArtifactProcessor(documentProcessors);
+        
         ContributionService contributionService = new ContributionServiceImpl(repository, packageProcessor,
-                                                                              documentProcessor, postProcessor, 
+                                                                              documentProcessor, staxProcessor, postProcessor, 
                                                                               modelResolverExtensionPoint, assemblyFactory,
                                                                               contributionFactory, xmlFactory);
         return contributionService;



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


Re: Build break (was: Re: svn commit: r558625)

Posted by Luciano Resende <lu...@gmail.com>.
Sorry for any trouble, fixed this under revision #558780.

On 7/23/07, Raymond Feng <en...@gmail.com> wrote:
> Hi, Luciano.
>
> Unfortunately I had to revert this commit because it breaks the build with
> the following compilation error. Please fix the problem and re-check them
> in.
>
> Thanks,
> Raymond
>
> [INFO] Building Apache Tuscany Embedded Runtime Host
> [INFO]    task-segment: [clean, install]
> [INFO] -------------------------------------------------------------------------
> ---
> [INFO] [clean:clean]
> [INFO] Deleting directory C:\Tuscany\java\sca\modules\host-embedded\target
> [INFO] Deleting directory
> C:\Tuscany\java\sca\modules\host-embedded\target\class
> es
> [INFO] Deleting directory
> C:\Tuscany\java\sca\modules\host-embedded\target\test-
> classes
> [INFO] Deleting directory
> C:\Tuscany\java\sca\modules\host-embedded\target\site
> [INFO] [resources:resources]
> [INFO] Using default encoding to copy filtered resources.
> [INFO] [compiler:compile]
> [INFO] Compiling 22 source files to
> C:\Tuscany\java\sca\modules\host-embedded\ta
> rget\classes
> [INFO] ------------------------------------------------------------------------
> [ERROR] BUILD FAILURE
> [INFO] ------------------------------------------------------------------------
> [INFO] Compilation failure
>
> C:\Tuscany\java\sca\modules\host-embedded\src\main\java\org\apache\tuscany\sca\h
> ost\embedded\impl\ReallySmallRuntimeBuilder.java:[73,56] cannot find symbol
> symbol  : class ContributionMetadataProcessor
> location: package org.apache.tuscany.sca.contribution.service.impl
>
> C:\Tuscany\java\sca\modules\host-embedded\src\main\java\org\apache\tuscany\sca\h
> ost\embedded\impl\ReallySmallRuntimeBuilder.java:[183,48] cannot find symbol
> symbol  : class ContributionMetadataProcessor
> location: class
> org.apache.tuscany.sca.host.embedded.impl.ReallySmallRuntimeBuil
> der
>
> ----- Original Message -----
> From: <lr...@apache.org>
> To: <tu...@ws.apache.org>
> Sent: Sunday, July 22, 2007 11:45 PM
> Subject: svn commit: r558625 - in /incubator/tuscany/java/sca:
> itest/contribution/src/test/java/org/apache/tuscany/sca/test/contribution/
> modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/
> modules/contribution-impl/src/tes...
>
>
> > Author: lresende
> > Date: Sun Jul 22 23:45:08 2007
> > New Revision: 558625
> >
> > URL: http://svn.apache.org/viewvc?view=rev&rev=558625
> > Log:
> > Extensibility for reading contribution metadata, this is to allow
> > different types of import/export
> >
> > Added:
> >
> > incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionMetadataDocumentProcessorImpl.java
> >
> > incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/sca/contribution/services/ContributionMetadataDocumentProcessorTestCase.java
> >
> > incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/service/ContributionMetadataDocumentProcessor.java
> > Modified:
> >
> > incubator/tuscany/java/sca/itest/contribution/src/test/java/org/apache/tuscany/sca/test/contribution/ContributionServiceTestCase.java
> >
> > incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionServiceImpl.java
> >
> > incubator/tuscany/java/sca/modules/distributed/src/main/java/org/apache/tuscany/sca/distributed/host/impl/NodeRuntimeBuilder.java
> >
> > incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/ReallySmallRuntimeBuilder.java
> >
> > Modified:
> > incubator/tuscany/java/sca/itest/contribution/src/test/java/org/apache/tuscany/sca/test/contribution/ContributionServiceTestCase.java
> > URL:
> > http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/contribution/src/test/java/org/apache/tuscany/sca/test/contribution/ContributionServiceTestCase.java?view=diff&rev=558625&r1=558624&r2=558625
> > ==============================================================================
> > ---
> > incubator/tuscany/java/sca/itest/contribution/src/test/java/org/apache/tuscany/sca/test/contribution/ContributionServiceTestCase.java
> > (original)
> > +++
> > incubator/tuscany/java/sca/itest/contribution/src/test/java/org/apache/tuscany/sca/test/contribution/ContributionServiceTestCase.java
> > Sun Jul 22 23:45:08 2007
> > @@ -68,6 +68,7 @@
> > import org.apache.tuscany.sca.contribution.service.util.IOHelper;
> > import org.apache.tuscany.sca.core.DefaultExtensionPointRegistry;
> > import org.apache.tuscany.sca.core.ExtensionPointRegistry;
> > +import org.apache.tuscany.sca.host.embedded.impl.EmbeddedSCADomain;
> > import org.apache.tuscany.sca.interfacedef.InterfaceContractMapper;
> > import
> > org.apache.tuscany.sca.interfacedef.impl.InterfaceContractMapperImpl;
> > import org.apache.tuscany.sca.policy.DefaultPolicyFactory;
> > @@ -82,66 +83,20 @@
> >     private static final String JAR_CONTRIBUTION =
> > "/repository/sample-calculator.jar";
> >     private static final String FOLDER_CONTRIBUTION = "target/classes/";
> >
> > +    private ClassLoader cl;
> > +    private EmbeddedSCADomain domain;
> >     private ContributionService contributionService;
> >
> >     protected void setUp() throws Exception {
> > -
> > -        // Create default factories
> > -        AssemblyFactory assemblyFactory = new DefaultAssemblyFactory();
> > -        PolicyFactory policyFactory = new DefaultPolicyFactory();
> > -        InterfaceContractMapper mapper = new
> > InterfaceContractMapperImpl();
> > -
> > -        // Create an extension point registry
> > -        ExtensionPointRegistry extensionRegistry = new
> > DefaultExtensionPointRegistry();
> > -
> > -        // Add artifact processor extension points
> > -        DefaultStAXArtifactProcessorExtensionPoint staxProcessors = new
> > DefaultStAXArtifactProcessorExtensionPoint();
> > -        extensionRegistry.addExtensionPoint(staxProcessors);
> > -        ExtensibleStAXArtifactProcessor staxProcessor = new
> > ExtensibleStAXArtifactProcessor(staxProcessors,
> > XMLInputFactory.newInstance(), XMLOutputFactory.newInstance());
> > -        DefaultURLArtifactProcessorExtensionPoint documentProcessors =
> > new DefaultURLArtifactProcessorExtensionPoint();
> > -        extensionRegistry.addExtensionPoint(documentProcessors);
> > -        ExtensibleURLArtifactProcessor documentProcessor = new
> > ExtensibleURLArtifactProcessor(documentProcessors);
> > -
> > -        // Register base artifact processors
> > -        staxProcessors.addArtifactProcessor(new
> > CompositeProcessor(assemblyFactory, policyFactory, mapper,
> > -
> > staxProcessor));
> > -        staxProcessors.addArtifactProcessor(new
> > ComponentTypeProcessor(assemblyFactory, policyFactory, staxProcessor));
> > -        staxProcessors.addArtifactProcessor(new
> > ConstrainingTypeProcessor(assemblyFactory, policyFactory,
> > -
> > staxProcessor));
> > -
> > -        XMLInputFactory inputFactory = XMLInputFactory.newInstance();
> > -        documentProcessors.addArtifactProcessor(new
> > CompositeDocumentProcessor(staxProcessor, inputFactory));
> > -        documentProcessors.addArtifactProcessor(new
> > ComponentTypeDocumentProcessor(staxProcessor, inputFactory));
> > -        documentProcessors.addArtifactProcessor(new
> > ConstrainingTypeDocumentProcessor(staxProcessor, inputFactory));
> > -
> > -        // Create package processor extension point
> > -        PackageTypeDescriberImpl describer = new
> > PackageTypeDescriberImpl();
> > -        PackageProcessorExtensionPoint packageProcessors = new
> > DefaultPackageProcessorExtensionPoint();
> > -        PackageProcessor packageProcessor = new
> > ExtensiblePackageProcessor(packageProcessors, describer);
> > -        extensionRegistry.addExtensionPoint(packageProcessors);
> > -
> > -        // Register base package processors
> > -        packageProcessors.addPackageProcessor(new
> > JarContributionProcessor());
> > -        packageProcessors.addPackageProcessor(new
> > FolderContributionProcessor());
> > -
> > -        //Create Contribution Model Resolver extension point
> > -        ModelResolverExtensionPoint modelResolverExtensionPoint = new
> > DefaultModelResolverExtensionPoint();
> > -
> > +        //Create a test embedded SCA domain
> > +        cl = getClass().getClassLoader();
> > +        domain = new EmbeddedSCADomain(cl, "http://localhost");
> >
> > -        //Create contribution postProcessor extension point
> > -        DefaultContributionPostProcessorExtensionPoint
> > contributionPostProcessors = new
> > DefaultContributionPostProcessorExtensionPoint();
> > -        ContributionPostProcessor postProcessor = new
> > ExtensibleContributionPostProcessor(contributionPostProcessors);
> > -        extensionRegistry.addExtensionPoint(contributionPostProcessors);
> > -
> > -
> > -        // Create a repository
> > -        ContributionRepository repository = new
> > ContributionRepositoryImpl("target");
> > +        //Start the domain
> > +        domain.start();
> >
> > -        // Create an artifact resolver and contribution service
> > -        this.contributionService = new
> > ContributionServiceImpl(repository, packageProcessor, documentProcessor,
> > -
> > postProcessor, modelResolverExtensionPoint, assemblyFactory,
> > -                                                               new
> > ContributionFactoryImpl(),
> > -
> > XMLInputFactory.newInstance());
> > +        //get a reference to the contribution service
> > +        contributionService = domain.getContributionService();
> >     }
> >
> >     public void testContributeJAR() throws Exception {
> >
> > Added:
> > incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionMetadataDocumentProcessorImpl.java
> > URL:
> > http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionMetadataDocumentProcessorImpl.java?view=auto&rev=558625
> > ==============================================================================
> > ---
> > incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionMetadataDocumentProcessorImpl.java
> > (added)
> > +++
> > incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionMetadataDocumentProcessorImpl.java
> > Sun Jul 22 23:45:08 2007
> > @@ -0,0 +1,109 @@
> > +/*
> > + * 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.service.impl;
> > +
> > +import java.io.IOException;
> > +import java.io.InputStream;
> > +import java.net.URL;
> > +import java.net.URLClassLoader;
> > +import java.util.ArrayList;
> > +import java.util.Iterator;
> > +import java.util.List;
> > +
> > +import javax.xml.stream.XMLInputFactory;
> > +import javax.xml.stream.XMLStreamException;
> > +import javax.xml.stream.XMLStreamReader;
> > +
> > +import org.apache.tuscany.sca.assembly.AssemblyFactory;
> > +import org.apache.tuscany.sca.contribution.Contribution;
> > +import org.apache.tuscany.sca.contribution.ContributionFactory;
> > +import
> > org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor;
> > +import
> > org.apache.tuscany.sca.contribution.service.ContributionMetadataDocumentProcessor;
> > +import
> > org.apache.tuscany.sca.contribution.service.ContributionReadException;
> > +
> > +/**
> > + * Loader that handles contribution metadata files
> > + *
> > + * @version $Rev: 515261 $ $Date: 2007-03-06 11:22:46 -0800 (Tue, 06 Mar
> > 2007) $
> > + */
> > +public class ContributionMetadataDocumentProcessorImpl  implements
> > ContributionMetadataDocumentProcessor {
> > +    protected final URLClassLoader classLoader;
> > +    protected final StAXArtifactProcessor staxProcessor;
> > +    protected final AssemblyFactory assemblyFactory;
> > +    protected final ContributionFactory contributionFactory;
> > +    protected final XMLInputFactory inputFactory;
> > +
> > +    public ContributionMetadataDocumentProcessorImpl(URLClassLoader
> > classLoader, StAXArtifactProcessor staxProcessor, AssemblyFactory
> > assemblyFactory, ContributionFactory contributionFactory, XMLInputFactory
> > inputFactory) {
> > +        super();
> > +        this.classLoader = classLoader;
> > +        this.staxProcessor = staxProcessor;
> > +        this.assemblyFactory = assemblyFactory;
> > +        this.contributionFactory = contributionFactory;
> > +        this.inputFactory = inputFactory;
> > +    }
> > +
> > +    private Contribution mergeContributionMetadata(Contribution contrib1,
> > Contribution contrib2  ) {
> > +        contrib1.getDeployables().addAll(contrib2.getDeployables());
> > +        contrib1.getImports().addAll(contrib2.getImports());
> > +        contrib1.getExports().addAll(contrib2.getExports());
> > +
> > +        return contrib1;
> > +    }
> > +
> > +    public void read(Contribution contribution) throws
> > XMLStreamException, ContributionReadException {
> > +        List<URL> artifactList = new ArrayList<URL>(2);
> > +        //set generated first, as the user created one ovverrides
> > generated information
> > +
> > artifactList.add(this.classLoader.getResource(Contribution.SCA_CONTRIBUTION_GENERATED_META));
> > +
> > artifactList.add(this.classLoader.getResource(Contribution.SCA_CONTRIBUTION_META));
> > +
> > +        URL artifactURL = null;
> > +        InputStream artifactStream = null;
> > +        Iterator artifactIterator = artifactList.iterator();
> > +        while( artifactIterator.hasNext() ){
> > +
> > +            try {
> > +                artifactURL = (URL) artifactIterator.next();
> > +                if( artifactURL != null) {
> > +                    artifactStream = artifactURL.openStream();
> > +                    XMLStreamReader reader =
> > inputFactory.createXMLStreamReader(artifactStream);
> > +                    reader.nextTag();
> > +
> > +                    Contribution contributionMetadata = (Contribution)
> > staxProcessor.read(reader);
> > +                    if (contributionMetadata != null) {
> > +                        this.mergeContributionMetadata(contribution,
> > contributionMetadata);
> > +                    }
> > +                }
> > +
> > +            } catch (XMLStreamException e) {
> > +                throw new ContributionReadException(e);
> > +            } catch (IOException e) {
> > +                throw new ContributionReadException(e);
> > +            } finally {
> > +                try {
> > +                    if (artifactStream != null) {
> > +                        artifactStream.close();
> > +                        artifactStream = null;
> > +                    }
> > +                } catch (IOException ioe) {
> > +                    //ignore
> > +                }
> > +            }
> > +        }
> > +    }
> > +}
> >
> > Modified:
> > incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionServiceImpl.java
> > URL:
> > http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionServiceImpl.java?view=diff&rev=558625&r1=558624&r2=558625
> > ==============================================================================
> > ---
> > incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionServiceImpl.java
> > (original)
> > +++
> > incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionServiceImpl.java
> > Sun Jul 22 23:45:08 2007
> > @@ -31,7 +31,6 @@
> >
> > import javax.xml.stream.XMLInputFactory;
> > import javax.xml.stream.XMLStreamException;
> > -import javax.xml.stream.XMLStreamReader;
> >
> > import org.apache.tuscany.sca.assembly.AssemblyFactory;
> > import org.apache.tuscany.sca.assembly.Composite;
> > @@ -44,6 +43,7 @@
> > import org.apache.tuscany.sca.contribution.NamespaceImport;
> > import
> > org.apache.tuscany.sca.contribution.processor.ContributionPostProcessor;
> > import org.apache.tuscany.sca.contribution.processor.PackageProcessor;
> > +import
> > org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor;
> > import org.apache.tuscany.sca.contribution.processor.URLArtifactProcessor;
> > import
> > org.apache.tuscany.sca.contribution.resolver.ExtensibleModelResolver;
> > import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
> > @@ -52,7 +52,7 @@
> > import
> > org.apache.tuscany.sca.contribution.resolver.impl.NamespaceImportAllModelResolverImpl;
> > import
> > org.apache.tuscany.sca.contribution.resolver.impl.NamespaceImportModelResolverImpl;
> > import org.apache.tuscany.sca.contribution.service.ContributionException;
> > -import
> > org.apache.tuscany.sca.contribution.service.ContributionMetadataLoaderException;
> > +import
> > org.apache.tuscany.sca.contribution.service.ContributionMetadataDocumentProcessor;
> > import org.apache.tuscany.sca.contribution.service.ContributionRepository;
> > import org.apache.tuscany.sca.contribution.service.ContributionService;
> > import org.apache.tuscany.sca.contribution.service.util.IOHelper;
> > @@ -62,6 +62,9 @@
> >  *
> >  * @version $Rev$ $Date$
> >  */
> > +/**
> > + *
> > + */
> > public class ContributionServiceImpl implements ContributionService {
> >
> >     /**
> > @@ -81,6 +84,12 @@
> >     private URLArtifactProcessor artifactProcessor;
> >
> >     /**
> > +     * Registry of available stax processors,
> > +     * used for loading contribution metadata in a extensible way
> > +     */
> > +    private StAXArtifactProcessor staxProcessor;
> > +
> > +    /**
> >      * Registry of available model resolvers
> >      */
> >
> > @@ -106,10 +115,6 @@
> >      */
> >     private ContributionFactory contributionFactory;
> >
> > -    /**
> > -     * contribution metadata loader
> > -     */
> > -    private ContributionMetadataLoaderImpl contributionLoader;
> >
> >     /**
> >      * Contribution registry This is a registry of processed Contributions
> > indexed by URI
> > @@ -118,7 +123,8 @@
> >
> >     public ContributionServiceImpl(ContributionRepository repository,
> >                                    PackageProcessor packageProcessor,
> > -                                   URLArtifactProcessor
> > artifactProcessor,
> > +                                   URLArtifactProcessor
> > documentProcessor,
> > +                                   StAXArtifactProcessor staxProcessor,
> >                                    ContributionPostProcessor
> > postProcessor,
> >                                    ModelResolverExtensionPoint
> > modelResolverExtensionPoint,
> >                                    AssemblyFactory assemblyFactory,
> > @@ -127,13 +133,13 @@
> >         super();
> >         this.contributionRepository = repository;
> >         this.packageProcessor = packageProcessor;
> > -        this.artifactProcessor = artifactProcessor;
> > +        this.artifactProcessor = documentProcessor;
> > +        this.staxProcessor = staxProcessor;
> >         this.postProcessor = postProcessor;
> >         this.modelResolverExtensionPoint = modelResolverExtensionPoint;
> >         this.xmlFactory = xmlFactory;
> >         this.assemblyFactory = assemblyFactory;
> >         this.contributionFactory = contributionFactory;
> > -        this.contributionLoader = new
> > ContributionMetadataLoaderImpl(assemblyFactory, contributionFactory);
> >     }
> >
> >     public Contribution contribute(String contributionURI, URL sourceURL,
> > boolean storeInRepository)
> > @@ -172,46 +178,29 @@
> >         return addContribution(contributionURI, sourceURL, input,
> > modelResolver, true);
> >     }
> >
> > -    private Contribution initializeContributionMetadata(URL sourceURL,
> > ModelResolver modelResolver) throws ContributionException {
> > +    /**
> > +     * Perform read of the contribution metada loader
> > (sca-contribution.xml and sca-contribution-generated.xml)
> > +     * When the two metadata files are available, the information
> > provided are merged, and the sca-contribution has priorities
> > +     *
> > +     * @param sourceURL
> > +     * @return Contribution
> > +     * @throws ContributionException
> > +     */
> > +    private Contribution readContributionMetadata(URL sourceURL) throws
> > ContributionException {
> >         Contribution contributionMetadata = null;
> > -        URL contributionMetadataURL;
> > -        URL generatedContributionMetadataURL;
> > -        InputStream metadataStream = null;
> >
> >         URL[] clUrls = {sourceURL};
> >         URLClassLoader cl = new URLClassLoader(clUrls, null);
> > -
> > -        contributionMetadataURL =
> > cl.getResource(Contribution.SCA_CONTRIBUTION_META);
> > -        generatedContributionMetadataURL =
> > cl.getResource(Contribution.SCA_CONTRIBUTION_GENERATED_META);
> > -
> > +
> > +
> > +        ContributionMetadataDocumentProcessor metadataDocumentProcessor =
> > +            new ContributionMetadataDocumentProcessorImpl(cl,
> > this.staxProcessor, this.assemblyFactory, this.contributionFactory,
> > this.xmlFactory);
> > +        contributionMetadata = contributionFactory.createContribution();
> >         try {
> > -            contributionMetadata =
> > this.contributionFactory.createContribution();
> > -            contributionMetadata.setModelResolver(modelResolver);
> > -            if (contributionMetadataURL != null ||
> > generatedContributionMetadataURL != null) {
> > -                URL metadataURL = contributionMetadataURL != null ?
> > contributionMetadataURL
> > -                                                                 :
> > generatedContributionMetadataURL;
> > -
> > -                try {
> > -                    metadataStream = metadataURL.openStream();
> > -                    XMLStreamReader xmlReader =
> > this.xmlFactory.createXMLStreamReader(metadataStream);
> > -                    this.contributionLoader.load(contributionMetadata,
> > xmlReader);
> > -
> > -                } catch (IOException ioe) {
> > -                    throw new
> > InvalidContributionMetadataException(ioe.getMessage(),
> > metadataURL.toExternalForm(), ioe);
> > -                } catch (XMLStreamException xmle) {
> > -                    throw new
> > InvalidContributionMetadataException(xmle.getMessage(),
> > metadataURL.toExternalForm(),
> > -                                                                   xmle);
> > -                } catch (ContributionMetadataLoaderException le) {
> > -                    throw new
> > InvalidContributionMetadataException(le.getMessage(),
> > metadataURL.toExternalForm(), le);
> > -                }
> > -            }
> > -        } finally {
> > -            IOHelper.closeQuietly(metadataStream);
> > -            metadataStream = null;
> > -        }
> > +            metadataDocumentProcessor.read(contributionMetadata);
> > +        } catch (XMLStreamException e) {
> > +            throw new InvalidContributionMetadataException("Invalid
> > contribution metadata for contribution.");
> >
> > -        if (contributionMetadata == null) {
> > -            contributionMetadata =
> > this.contributionFactory.createContribution();
> >         }
> >
> >         return contributionMetadata;
> > @@ -273,7 +262,7 @@
> >         }
> >
> >         //initialize contribution based on it's metadata if available
> > -        Contribution contribution =
> > initializeContributionMetadata(locationURL, modelResolver);
> > +        Contribution contribution =
> > readContributionMetadata(locationURL);
> >
> >         //create contribution model resolver
> >         if (modelResolver == null) {
> >
> > Added:
> > incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/sca/contribution/services/ContributionMetadataDocumentProcessorTestCase.java
> > URL:
> > http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/sca/contribution/services/ContributionMetadataDocumentProcessorTestCase.java?view=auto&rev=558625
> > ==============================================================================
> > ---
> > incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/sca/contribution/services/ContributionMetadataDocumentProcessorTestCase.java
> > (added)
> > +++
> > incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/sca/contribution/services/ContributionMetadataDocumentProcessorTestCase.java
> > Sun Jul 22 23:45:08 2007
> > @@ -0,0 +1,96 @@
> > +/*
> > + * Licensed to the Apache Software Foundation (ASF) under one
> > + * or more contributor license agreements.  See the NOTICE file
> > + * distributed with this work for additional information
> > + * regarding copyright ownership.  The ASF licenses this file
> > + * to you under the Apache License, Version 2.0 (the
> > + * "License"); you may not use this file except in compliance
> > + * with the License.  You may obtain a copy of the License at
> > + *
> > + *   http://www.apache.org/licenses/LICENSE-2.0
> > + *
> > + * Unless required by applicable law or agreed to in writing,
> > + * software distributed under the License is distributed on an
> > + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
> > + * KIND, either express or implied.  See the License for the
> > + * specific language governing permissions and limitations
> > + * under the License.
> > + */
> > +
> > +package org.apache.tuscany.sca.contribution.services;
> > +
> > +import java.io.StringReader;
> > +
> > +import javax.xml.stream.XMLInputFactory;
> > +import javax.xml.stream.XMLStreamReader;
> > +
> > +import junit.framework.TestCase;
> > +
> > +import org.apache.tuscany.sca.assembly.DefaultAssemblyFactory;
> > +import org.apache.tuscany.sca.contribution.Contribution;
> > +import org.apache.tuscany.sca.contribution.ContributionFactory;
> > +import org.apache.tuscany.sca.contribution.impl.ContributionFactoryImpl;
> > +import
> > org.apache.tuscany.sca.contribution.resolver.impl.ModelResolverImpl;
> > +import
> > org.apache.tuscany.sca.contribution.service.impl.ContributionMetadataLoaderImpl;
> > +import
> > org.apache.tuscany.sca.contribution.service.impl.InvalidValueException;
> > +
> > +/**
> > + * @version $Rev: 538445 $ $Date: 2007-05-15 23:20:37 -0700 (Tue, 15 May
> > 2007) $
> > + */
> > +public class ContributionMetadataDocumentProcessorTestCase extends
> > TestCase {
> > +
> > +    private static final String VALID_XML =
> > +        "<?xml version=\"1.0\" encoding=\"ASCII\"?>"
> > +            + "<contribution xmlns=\"http://www.osoa.org/xmlns/sca/1.0\"
> > xmlns:ns=\"http://ns\">"
> > +            + "<deployable composite=\"ns:Composite1\"/>"
> > +            + "<deployable composite=\"ns:Composite2\"/>"
> > +            + "<import namespace=\"http://ns2\"
> > location=\"sca://contributions/002/\"/>"
> > +            + "<export namespace=\"http://ns1\"/>"
> > +            + "</contribution>";
> > +
> > +    private static final String INVALID_XML =
> > +        "<?xml version=\"1.0\" encoding=\"ASCII\"?>"
> > +            + "<contribution xmlns=\"http://www.osoa.org/xmlns/sca/1.0\"
> > xmlns:ns=\"http://ns\">"
> > +            + "<deployable composite=\"ns:Composite1\"/>"
> > +            + "<deployable composite=\"ns3:Composite1\"/>"
> > +            + "<import namespace=\"http://ns2\"
> > location=\"sca://contributions/002/\"/>"
> > +            + "<export namespace=\"http://ns1\"/>"
> > +            + "</contribution>";
> > +
> > +    private XMLInputFactory xmlFactory;
> > +
> > +    protected void setUp() throws Exception {
> > +        super.setUp();
> > +//        xmlFactory = XMLInputFactory.newInstance();
> > +    }
> > +
> > +    public void testLoad() throws Exception {
> > +//        XMLStreamReader reader = xmlFactory.createXMLStreamReader(new
> > StringReader(VALID_XML));
> > +//
> > +//        ContributionFactory factory = new ContributionFactoryImpl();
> > +//        ContributionMetadataLoaderImpl loader =
> > +//            new ContributionMetadataLoaderImpl(new
> > DefaultAssemblyFactory(), factory);
> > +//        Contribution contribution = factory.createContribution();
> > +//        contribution.setModelResolver(new
> > ModelResolverImpl(getClass().getClassLoader()));
> > +//        loader.load(contribution, reader);
> > +//        assertNotNull(contribution);
> > +//        assertEquals(1, contribution.getImports().size());
> > +//        assertEquals(1, contribution.getExports().size());
> > +//        assertEquals(2, contribution.getDeployables().size());
> > +    }
> > +
> > +    public void testLoadInvalid() throws Exception {
> > +//        XMLStreamReader reader = xmlFactory.createXMLStreamReader(new
> > StringReader(INVALID_XML));
> > +//        ContributionFactory factory = new ContributionFactoryImpl();
> > +//        ContributionMetadataLoaderImpl loader =
> > +//            new ContributionMetadataLoaderImpl(new
> > DefaultAssemblyFactory(), factory);
> > +//        Contribution contribution = factory.createContribution();
> > +//        contribution.setModelResolver(new
> > ModelResolverImpl(getClass().getClassLoader()));
> > +//        try {
> > +//            loader.load(contribution, reader);
> > +//            fail("InvalidException should have been thrown");
> > +//        } catch (InvalidValueException e) {
> > +//            assertTrue(true);
> > +//        }
> > +    }
> > +}
> >
> > Added:
> > incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/service/ContributionMetadataDocumentProcessor.java
> > URL:
> > http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/service/ContributionMetadataDocumentProcessor.java?view=auto&rev=558625
> > ==============================================================================
> > ---
> > incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/service/ContributionMetadataDocumentProcessor.java
> > (added)
> > +++
> > incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/service/ContributionMetadataDocumentProcessor.java
> > Sun Jul 22 23:45:08 2007
> > @@ -0,0 +1,41 @@
> > +/*
> > + * 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.service;
> > +
> > +import javax.xml.stream.XMLStreamException;
> > +
> > +import org.apache.tuscany.sca.contribution.Contribution;
> > +
> > +/**
> > + * Document processor responsible to process the contribution metadata
> > + *
> > + * @version $Rev$ $Date$
> > + */
> > +public interface ContributionMetadataDocumentProcessor {
> > +    /**
> > +     * Create the model object for Contribution Service metadata
> > information
> > +     *
> > +     * @param contribution The contribution to populate with the proper
> > values from the side file
> > +     * @param reader The XML stream reader positioned on the applicable
> > START_ELEMENT
> > +     * @throws XMLStreamException
> > +     * @throws ContributionMetadataReadException
> > +     */
> > +    void read(Contribution contribution) throws XMLStreamException,
> > ContributionReadException;
> > +}
> > \ No newline at end of file
> >
> > Modified:
> > incubator/tuscany/java/sca/modules/distributed/src/main/java/org/apache/tuscany/sca/distributed/host/impl/NodeRuntimeBuilder.java
> > URL:
> > http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/distributed/src/main/java/org/apache/tuscany/sca/distributed/host/impl/NodeRuntimeBuilder.java?view=diff&rev=558625&r1=558624&r2=558625
> > ==============================================================================
> > ---
> > incubator/tuscany/java/sca/modules/distributed/src/main/java/org/apache/tuscany/sca/distributed/host/impl/NodeRuntimeBuilder.java
> > (original)
> > +++
> > incubator/tuscany/java/sca/modules/distributed/src/main/java/org/apache/tuscany/sca/distributed/host/impl/NodeRuntimeBuilder.java
> > Sun Jul 22 23:45:08 2007
> > @@ -52,6 +52,7 @@
> > import
> > org.apache.tuscany.sca.contribution.resolver.ModelResolverExtensionPoint;
> > import org.apache.tuscany.sca.contribution.service.ContributionRepository;
> > import org.apache.tuscany.sca.contribution.service.ContributionService;
> > +import
> > org.apache.tuscany.sca.contribution.service.impl.ContributionMetadataProcessor;
> > import
> > org.apache.tuscany.sca.contribution.service.impl.ContributionRepositoryImpl;
> > import
> > org.apache.tuscany.sca.contribution.service.impl.ContributionServiceImpl;
> > import
> > org.apache.tuscany.sca.contribution.service.impl.PackageTypeDescriberImpl;
> > @@ -91,14 +92,12 @@
> >         registry.addExtensionPoint(staxProcessors);
> >
> >         // Create and register STAX processors for SCA assembly XML
> > -        ExtensibleStAXArtifactProcessor staxProcessor = new
> > ExtensibleStAXArtifactProcessor(staxProcessors, xmlFactory,
> > -
> > XMLOutputFactory
> > -
> > .newInstance());
> > -        staxProcessors.addArtifactProcessor(new
> > CompositeProcessor(assemblyFactory, policyFactory, mapper,
> > -
> > staxProcessor));
> > +        ExtensibleStAXArtifactProcessor staxProcessor =
> > +            new ExtensibleStAXArtifactProcessor(staxProcessors,
> > xmlFactory, XMLOutputFactory.newInstance());
> > +        staxProcessors.addArtifactProcessor(new
> > CompositeProcessor(assemblyFactory, policyFactory, mapper,
> > staxProcessor));
> >         staxProcessors.addArtifactProcessor(new
> > ComponentTypeProcessor(assemblyFactory, policyFactory, staxProcessor));
> > -        staxProcessors
> > -            .addArtifactProcessor(new
> > ConstrainingTypeProcessor(assemblyFactory, policyFactory, staxProcessor));
> > +        staxProcessors.addArtifactProcessor(new
> > ConstrainingTypeProcessor(assemblyFactory, policyFactory, staxProcessor));
> > +        staxProcessors.addArtifactProcessor(new
> > ContributionMetadataProcessor(assemblyFactory, contributionFactory));
> >
> >         // Create URL artifact processor extension point
> >         // FIXME use the interface instead of the class
> > @@ -147,6 +146,7 @@
> >         ContributionService contributionService = new
> > ContributionServiceImpl(repository,
> >
> > packageProcessor,
> >
> > documentProcessor,
> > +
> > staxProcessor,
> >
> > postProcessor,
> >
> > modelResolverExtensionPoint,
> >
> > assemblyFactory,
> >
> > Modified:
> > incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/ReallySmallRuntimeBuilder.java
> > URL:
> > http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/ReallySmallRuntimeBuilder.java?view=diff&rev=558625&r1=558624&r2=558625
> > ==============================================================================
> > ---
> > incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/ReallySmallRuntimeBuilder.java
> > (original)
> > +++
> > incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/ReallySmallRuntimeBuilder.java
> > Sun Jul 22 23:45:08 2007
> > @@ -70,6 +70,7 @@
> > import org.apache.tuscany.sca.contribution.service.ContributionRepository;
> > import org.apache.tuscany.sca.contribution.service.ContributionService;
> > import org.apache.tuscany.sca.contribution.service.TypeDescriber;
> > +import
> > org.apache.tuscany.sca.contribution.service.impl.ContributionMetadataProcessor;
> > import
> > org.apache.tuscany.sca.contribution.service.impl.ContributionRepositoryImpl;
> > import
> > org.apache.tuscany.sca.contribution.service.impl.ContributionServiceImpl;
> > import
> > org.apache.tuscany.sca.contribution.service.impl.PackageTypeDescriberImpl;
> > @@ -174,14 +175,12 @@
> >         registry.addExtensionPoint(staxProcessors);
> >
> >         // Create and register STAX processors for SCA assembly XML
> > -        ExtensibleStAXArtifactProcessor staxProcessor = new
> > ExtensibleStAXArtifactProcessor(staxProcessors, xmlFactory,
> > -
> > XMLOutputFactory
> > -
> > .newInstance());
> > -        staxProcessors.addArtifactProcessor(new
> > CompositeProcessor(assemblyFactory, policyFactory, mapper,
> > -
> > staxProcessor));
> > +        ExtensibleStAXArtifactProcessor staxProcessor =
> > +            new ExtensibleStAXArtifactProcessor(staxProcessors,
> > xmlFactory, XMLOutputFactory.newInstance());
> > +        staxProcessors.addArtifactProcessor(new
> > CompositeProcessor(assemblyFactory, policyFactory, mapper,
> > staxProcessor));
> >         staxProcessors.addArtifactProcessor(new
> > ComponentTypeProcessor(assemblyFactory, policyFactory, staxProcessor));
> > -        staxProcessors
> > -            .addArtifactProcessor(new
> > ConstrainingTypeProcessor(assemblyFactory, policyFactory, staxProcessor));
> > +        staxProcessors.addArtifactProcessor(new
> > ConstrainingTypeProcessor(assemblyFactory, policyFactory, staxProcessor));
> > +        staxProcessors.addArtifactProcessor(new
> > ContributionMetadataProcessor(assemblyFactory,contributionFactory));
> >
> >         // Create URL artifact processor extension point
> >         URLArtifactProcessorExtensionPoint documentProcessors = new
> > DefaultURLArtifactProcessorExtensionPoint();
> > @@ -225,8 +224,9 @@
> >         }
> >
> >         ExtensibleURLArtifactProcessor documentProcessor = new
> > ExtensibleURLArtifactProcessor(documentProcessors);
> > +
> >         ContributionService contributionService = new
> > ContributionServiceImpl(repository, packageProcessor,
> > -
> > documentProcessor, postProcessor,
> > +
> > documentProcessor, staxProcessor, postProcessor,
> >
> > modelResolverExtensionPoint, assemblyFactory,
> >
> > contributionFactory, xmlFactory);
> >         return contributionService;
> >
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
> > For additional commands, e-mail: tuscany-commits-help@ws.apache.org
> >
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: tuscany-dev-unsubscribe@ws.apache.org
> For additional commands, e-mail: tuscany-dev-help@ws.apache.org
>
>


-- 
Luciano Resende
Apache Tuscany Committer
http://people.apache.org/~lresende
http://lresende.blogspot.com/

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


Build break (was: Re: svn commit: r558625)

Posted by Raymond Feng <en...@gmail.com>.
Hi, Luciano.

Unfortunately I had to revert this commit because it breaks the build with 
the following compilation error. Please fix the problem and re-check them 
in.

Thanks,
Raymond

[INFO] Building Apache Tuscany Embedded Runtime Host
[INFO]    task-segment: [clean, install]
[INFO] -------------------------------------------------------------------------
---
[INFO] [clean:clean]
[INFO] Deleting directory C:\Tuscany\java\sca\modules\host-embedded\target
[INFO] Deleting directory 
C:\Tuscany\java\sca\modules\host-embedded\target\class
es
[INFO] Deleting directory 
C:\Tuscany\java\sca\modules\host-embedded\target\test-
classes
[INFO] Deleting directory 
C:\Tuscany\java\sca\modules\host-embedded\target\site
[INFO] [resources:resources]
[INFO] Using default encoding to copy filtered resources.
[INFO] [compiler:compile]
[INFO] Compiling 22 source files to 
C:\Tuscany\java\sca\modules\host-embedded\ta
rget\classes
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Compilation failure

C:\Tuscany\java\sca\modules\host-embedded\src\main\java\org\apache\tuscany\sca\h
ost\embedded\impl\ReallySmallRuntimeBuilder.java:[73,56] cannot find symbol
symbol  : class ContributionMetadataProcessor
location: package org.apache.tuscany.sca.contribution.service.impl

C:\Tuscany\java\sca\modules\host-embedded\src\main\java\org\apache\tuscany\sca\h
ost\embedded\impl\ReallySmallRuntimeBuilder.java:[183,48] cannot find symbol
symbol  : class ContributionMetadataProcessor
location: class 
org.apache.tuscany.sca.host.embedded.impl.ReallySmallRuntimeBuil
der

----- Original Message ----- 
From: <lr...@apache.org>
To: <tu...@ws.apache.org>
Sent: Sunday, July 22, 2007 11:45 PM
Subject: svn commit: r558625 - in /incubator/tuscany/java/sca: 
itest/contribution/src/test/java/org/apache/tuscany/sca/test/contribution/ 
modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ 
modules/contribution-impl/src/tes...


> Author: lresende
> Date: Sun Jul 22 23:45:08 2007
> New Revision: 558625
>
> URL: http://svn.apache.org/viewvc?view=rev&rev=558625
> Log:
> Extensibility for reading contribution metadata, this is to allow 
> different types of import/export
>
> Added:
> 
> incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionMetadataDocumentProcessorImpl.java
> 
> incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/sca/contribution/services/ContributionMetadataDocumentProcessorTestCase.java
> 
> incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/service/ContributionMetadataDocumentProcessor.java
> Modified:
> 
> incubator/tuscany/java/sca/itest/contribution/src/test/java/org/apache/tuscany/sca/test/contribution/ContributionServiceTestCase.java
> 
> incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionServiceImpl.java
> 
> incubator/tuscany/java/sca/modules/distributed/src/main/java/org/apache/tuscany/sca/distributed/host/impl/NodeRuntimeBuilder.java
> 
> incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/ReallySmallRuntimeBuilder.java
>
> Modified: 
> incubator/tuscany/java/sca/itest/contribution/src/test/java/org/apache/tuscany/sca/test/contribution/ContributionServiceTestCase.java
> URL: 
> http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/contribution/src/test/java/org/apache/tuscany/sca/test/contribution/ContributionServiceTestCase.java?view=diff&rev=558625&r1=558624&r2=558625
> ==============================================================================
> ---  
> incubator/tuscany/java/sca/itest/contribution/src/test/java/org/apache/tuscany/sca/test/contribution/ContributionServiceTestCase.java 
> (original)
> +++ 
> incubator/tuscany/java/sca/itest/contribution/src/test/java/org/apache/tuscany/sca/test/contribution/ContributionServiceTestCase.java 
> Sun Jul 22 23:45:08 2007
> @@ -68,6 +68,7 @@
> import org.apache.tuscany.sca.contribution.service.util.IOHelper;
> import org.apache.tuscany.sca.core.DefaultExtensionPointRegistry;
> import org.apache.tuscany.sca.core.ExtensionPointRegistry;
> +import org.apache.tuscany.sca.host.embedded.impl.EmbeddedSCADomain;
> import org.apache.tuscany.sca.interfacedef.InterfaceContractMapper;
> import 
> org.apache.tuscany.sca.interfacedef.impl.InterfaceContractMapperImpl;
> import org.apache.tuscany.sca.policy.DefaultPolicyFactory;
> @@ -82,66 +83,20 @@
>     private static final String JAR_CONTRIBUTION = 
> "/repository/sample-calculator.jar";
>     private static final String FOLDER_CONTRIBUTION = "target/classes/";
>
> +    private ClassLoader cl;
> +    private EmbeddedSCADomain domain;
>     private ContributionService contributionService;
>
>     protected void setUp() throws Exception {
> -
> -        // Create default factories
> -        AssemblyFactory assemblyFactory = new DefaultAssemblyFactory();
> -        PolicyFactory policyFactory = new DefaultPolicyFactory();
> -        InterfaceContractMapper mapper = new 
> InterfaceContractMapperImpl();
> -
> -        // Create an extension point registry
> -        ExtensionPointRegistry extensionRegistry = new 
> DefaultExtensionPointRegistry();
> -
> -        // Add artifact processor extension points
> -        DefaultStAXArtifactProcessorExtensionPoint staxProcessors = new 
> DefaultStAXArtifactProcessorExtensionPoint();
> -        extensionRegistry.addExtensionPoint(staxProcessors);
> -        ExtensibleStAXArtifactProcessor staxProcessor = new 
> ExtensibleStAXArtifactProcessor(staxProcessors, 
> XMLInputFactory.newInstance(), XMLOutputFactory.newInstance());
> -        DefaultURLArtifactProcessorExtensionPoint documentProcessors = 
> new DefaultURLArtifactProcessorExtensionPoint();
> -        extensionRegistry.addExtensionPoint(documentProcessors);
> -        ExtensibleURLArtifactProcessor documentProcessor = new 
> ExtensibleURLArtifactProcessor(documentProcessors);
> -
> -        // Register base artifact processors
> -        staxProcessors.addArtifactProcessor(new 
> CompositeProcessor(assemblyFactory, policyFactory, mapper,
> - 
> staxProcessor));
> -        staxProcessors.addArtifactProcessor(new 
> ComponentTypeProcessor(assemblyFactory, policyFactory, staxProcessor));
> -        staxProcessors.addArtifactProcessor(new 
> ConstrainingTypeProcessor(assemblyFactory, policyFactory,
> - 
> staxProcessor));
> -
> -        XMLInputFactory inputFactory = XMLInputFactory.newInstance();
> -        documentProcessors.addArtifactProcessor(new 
> CompositeDocumentProcessor(staxProcessor, inputFactory));
> -        documentProcessors.addArtifactProcessor(new 
> ComponentTypeDocumentProcessor(staxProcessor, inputFactory));
> -        documentProcessors.addArtifactProcessor(new 
> ConstrainingTypeDocumentProcessor(staxProcessor, inputFactory));
> -
> -        // Create package processor extension point
> -        PackageTypeDescriberImpl describer = new 
> PackageTypeDescriberImpl();
> -        PackageProcessorExtensionPoint packageProcessors = new 
> DefaultPackageProcessorExtensionPoint();
> -        PackageProcessor packageProcessor = new 
> ExtensiblePackageProcessor(packageProcessors, describer);
> -        extensionRegistry.addExtensionPoint(packageProcessors);
> -
> -        // Register base package processors
> -        packageProcessors.addPackageProcessor(new 
> JarContributionProcessor());
> -        packageProcessors.addPackageProcessor(new 
> FolderContributionProcessor());
> -
> -        //Create Contribution Model Resolver extension point
> -        ModelResolverExtensionPoint modelResolverExtensionPoint = new 
> DefaultModelResolverExtensionPoint();
> -
> +        //Create a test embedded SCA domain
> +        cl = getClass().getClassLoader();
> +        domain = new EmbeddedSCADomain(cl, "http://localhost");
>
> -        //Create contribution postProcessor extension point
> -        DefaultContributionPostProcessorExtensionPoint 
> contributionPostProcessors = new 
> DefaultContributionPostProcessorExtensionPoint();
> -        ContributionPostProcessor postProcessor = new 
> ExtensibleContributionPostProcessor(contributionPostProcessors);
> -        extensionRegistry.addExtensionPoint(contributionPostProcessors);
> -
> -
> -        // Create a repository
> -        ContributionRepository repository = new 
> ContributionRepositoryImpl("target");
> +        //Start the domain
> +        domain.start();
>
> -        // Create an artifact resolver and contribution service
> -        this.contributionService = new 
> ContributionServiceImpl(repository, packageProcessor, documentProcessor,
> - 
> postProcessor, modelResolverExtensionPoint, assemblyFactory,
> -                                                               new 
> ContributionFactoryImpl(),
> - 
> XMLInputFactory.newInstance());
> +        //get a reference to the contribution service
> +        contributionService = domain.getContributionService();
>     }
>
>     public void testContributeJAR() throws Exception {
>
> Added: 
> incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionMetadataDocumentProcessorImpl.java
> URL: 
> http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionMetadataDocumentProcessorImpl.java?view=auto&rev=558625
> ==============================================================================
> ---  
> incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionMetadataDocumentProcessorImpl.java 
> (added)
> +++ 
> incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionMetadataDocumentProcessorImpl.java 
> Sun Jul 22 23:45:08 2007
> @@ -0,0 +1,109 @@
> +/*
> + * 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.service.impl;
> +
> +import java.io.IOException;
> +import java.io.InputStream;
> +import java.net.URL;
> +import java.net.URLClassLoader;
> +import java.util.ArrayList;
> +import java.util.Iterator;
> +import java.util.List;
> +
> +import javax.xml.stream.XMLInputFactory;
> +import javax.xml.stream.XMLStreamException;
> +import javax.xml.stream.XMLStreamReader;
> +
> +import org.apache.tuscany.sca.assembly.AssemblyFactory;
> +import org.apache.tuscany.sca.contribution.Contribution;
> +import org.apache.tuscany.sca.contribution.ContributionFactory;
> +import 
> org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor;
> +import 
> org.apache.tuscany.sca.contribution.service.ContributionMetadataDocumentProcessor;
> +import 
> org.apache.tuscany.sca.contribution.service.ContributionReadException;
> +
> +/**
> + * Loader that handles contribution metadata files
> + *
> + * @version $Rev: 515261 $ $Date: 2007-03-06 11:22:46 -0800 (Tue, 06 Mar 
> 2007) $
> + */
> +public class ContributionMetadataDocumentProcessorImpl  implements 
> ContributionMetadataDocumentProcessor {
> +    protected final URLClassLoader classLoader;
> +    protected final StAXArtifactProcessor staxProcessor;
> +    protected final AssemblyFactory assemblyFactory;
> +    protected final ContributionFactory contributionFactory;
> +    protected final XMLInputFactory inputFactory;
> +
> +    public ContributionMetadataDocumentProcessorImpl(URLClassLoader 
> classLoader, StAXArtifactProcessor staxProcessor, AssemblyFactory 
> assemblyFactory, ContributionFactory contributionFactory, XMLInputFactory 
> inputFactory) {
> +        super();
> +        this.classLoader = classLoader;
> +        this.staxProcessor = staxProcessor;
> +        this.assemblyFactory = assemblyFactory;
> +        this.contributionFactory = contributionFactory;
> +        this.inputFactory = inputFactory;
> +    }
> +
> +    private Contribution mergeContributionMetadata(Contribution contrib1, 
> Contribution contrib2  ) {
> +        contrib1.getDeployables().addAll(contrib2.getDeployables());
> +        contrib1.getImports().addAll(contrib2.getImports());
> +        contrib1.getExports().addAll(contrib2.getExports());
> +
> +        return contrib1;
> +    }
> +
> +    public void read(Contribution contribution) throws 
> XMLStreamException, ContributionReadException {
> +        List<URL> artifactList = new ArrayList<URL>(2);
> +        //set generated first, as the user created one ovverrides 
> generated information
> + 
> artifactList.add(this.classLoader.getResource(Contribution.SCA_CONTRIBUTION_GENERATED_META));
> + 
> artifactList.add(this.classLoader.getResource(Contribution.SCA_CONTRIBUTION_META));
> +
> +        URL artifactURL = null;
> +        InputStream artifactStream = null;
> +        Iterator artifactIterator = artifactList.iterator();
> +        while( artifactIterator.hasNext() ){
> +
> +            try {
> +                artifactURL = (URL) artifactIterator.next();
> +                if( artifactURL != null) {
> +                    artifactStream = artifactURL.openStream();
> +                    XMLStreamReader reader = 
> inputFactory.createXMLStreamReader(artifactStream);
> +                    reader.nextTag();
> +
> +                    Contribution contributionMetadata = (Contribution) 
> staxProcessor.read(reader);
> +                    if (contributionMetadata != null) {
> +                        this.mergeContributionMetadata(contribution, 
> contributionMetadata);
> +                    }
> +                }
> +
> +            } catch (XMLStreamException e) {
> +                throw new ContributionReadException(e);
> +            } catch (IOException e) {
> +                throw new ContributionReadException(e);
> +            } finally {
> +                try {
> +                    if (artifactStream != null) {
> +                        artifactStream.close();
> +                        artifactStream = null;
> +                    }
> +                } catch (IOException ioe) {
> +                    //ignore
> +                }
> +            }
> +        }
> +    }
> +}
>
> Modified: 
> incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionServiceImpl.java
> URL: 
> http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionServiceImpl.java?view=diff&rev=558625&r1=558624&r2=558625
> ==============================================================================
> ---  
> incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionServiceImpl.java 
> (original)
> +++ 
> incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionServiceImpl.java 
> Sun Jul 22 23:45:08 2007
> @@ -31,7 +31,6 @@
>
> import javax.xml.stream.XMLInputFactory;
> import javax.xml.stream.XMLStreamException;
> -import javax.xml.stream.XMLStreamReader;
>
> import org.apache.tuscany.sca.assembly.AssemblyFactory;
> import org.apache.tuscany.sca.assembly.Composite;
> @@ -44,6 +43,7 @@
> import org.apache.tuscany.sca.contribution.NamespaceImport;
> import 
> org.apache.tuscany.sca.contribution.processor.ContributionPostProcessor;
> import org.apache.tuscany.sca.contribution.processor.PackageProcessor;
> +import 
> org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor;
> import org.apache.tuscany.sca.contribution.processor.URLArtifactProcessor;
> import 
> org.apache.tuscany.sca.contribution.resolver.ExtensibleModelResolver;
> import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
> @@ -52,7 +52,7 @@
> import 
> org.apache.tuscany.sca.contribution.resolver.impl.NamespaceImportAllModelResolverImpl;
> import 
> org.apache.tuscany.sca.contribution.resolver.impl.NamespaceImportModelResolverImpl;
> import org.apache.tuscany.sca.contribution.service.ContributionException;
> -import 
> org.apache.tuscany.sca.contribution.service.ContributionMetadataLoaderException;
> +import 
> org.apache.tuscany.sca.contribution.service.ContributionMetadataDocumentProcessor;
> import org.apache.tuscany.sca.contribution.service.ContributionRepository;
> import org.apache.tuscany.sca.contribution.service.ContributionService;
> import org.apache.tuscany.sca.contribution.service.util.IOHelper;
> @@ -62,6 +62,9 @@
>  *
>  * @version $Rev$ $Date$
>  */
> +/**
> + *
> + */
> public class ContributionServiceImpl implements ContributionService {
>
>     /**
> @@ -81,6 +84,12 @@
>     private URLArtifactProcessor artifactProcessor;
>
>     /**
> +     * Registry of available stax processors,
> +     * used for loading contribution metadata in a extensible way
> +     */
> +    private StAXArtifactProcessor staxProcessor;
> +
> +    /**
>      * Registry of available model resolvers
>      */
>
> @@ -106,10 +115,6 @@
>      */
>     private ContributionFactory contributionFactory;
>
> -    /**
> -     * contribution metadata loader
> -     */
> -    private ContributionMetadataLoaderImpl contributionLoader;
>
>     /**
>      * Contribution registry This is a registry of processed Contributions 
> indexed by URI
> @@ -118,7 +123,8 @@
>
>     public ContributionServiceImpl(ContributionRepository repository,
>                                    PackageProcessor packageProcessor,
> -                                   URLArtifactProcessor 
> artifactProcessor,
> +                                   URLArtifactProcessor 
> documentProcessor,
> +                                   StAXArtifactProcessor staxProcessor,
>                                    ContributionPostProcessor 
> postProcessor,
>                                    ModelResolverExtensionPoint 
> modelResolverExtensionPoint,
>                                    AssemblyFactory assemblyFactory,
> @@ -127,13 +133,13 @@
>         super();
>         this.contributionRepository = repository;
>         this.packageProcessor = packageProcessor;
> -        this.artifactProcessor = artifactProcessor;
> +        this.artifactProcessor = documentProcessor;
> +        this.staxProcessor = staxProcessor;
>         this.postProcessor = postProcessor;
>         this.modelResolverExtensionPoint = modelResolverExtensionPoint;
>         this.xmlFactory = xmlFactory;
>         this.assemblyFactory = assemblyFactory;
>         this.contributionFactory = contributionFactory;
> -        this.contributionLoader = new 
> ContributionMetadataLoaderImpl(assemblyFactory, contributionFactory);
>     }
>
>     public Contribution contribute(String contributionURI, URL sourceURL, 
> boolean storeInRepository)
> @@ -172,46 +178,29 @@
>         return addContribution(contributionURI, sourceURL, input, 
> modelResolver, true);
>     }
>
> -    private Contribution initializeContributionMetadata(URL sourceURL, 
> ModelResolver modelResolver) throws ContributionException {
> +    /**
> +     * Perform read of the contribution metada loader 
> (sca-contribution.xml and sca-contribution-generated.xml)
> +     * When the two metadata files are available, the information 
> provided are merged, and the sca-contribution has priorities
> +     *
> +     * @param sourceURL
> +     * @return Contribution
> +     * @throws ContributionException
> +     */
> +    private Contribution readContributionMetadata(URL sourceURL) throws 
> ContributionException {
>         Contribution contributionMetadata = null;
> -        URL contributionMetadataURL;
> -        URL generatedContributionMetadataURL;
> -        InputStream metadataStream = null;
>
>         URL[] clUrls = {sourceURL};
>         URLClassLoader cl = new URLClassLoader(clUrls, null);
> -
> -        contributionMetadataURL = 
> cl.getResource(Contribution.SCA_CONTRIBUTION_META);
> -        generatedContributionMetadataURL = 
> cl.getResource(Contribution.SCA_CONTRIBUTION_GENERATED_META);
> -
> +
> +
> +        ContributionMetadataDocumentProcessor metadataDocumentProcessor =
> +            new ContributionMetadataDocumentProcessorImpl(cl, 
> this.staxProcessor, this.assemblyFactory, this.contributionFactory, 
> this.xmlFactory);
> +        contributionMetadata = contributionFactory.createContribution();
>         try {
> -            contributionMetadata = 
> this.contributionFactory.createContribution();
> -            contributionMetadata.setModelResolver(modelResolver);
> -            if (contributionMetadataURL != null || 
> generatedContributionMetadataURL != null) {
> -                URL metadataURL = contributionMetadataURL != null ? 
> contributionMetadataURL
> -                                                                 : 
> generatedContributionMetadataURL;
> -
> -                try {
> -                    metadataStream = metadataURL.openStream();
> -                    XMLStreamReader xmlReader = 
> this.xmlFactory.createXMLStreamReader(metadataStream);
> -                    this.contributionLoader.load(contributionMetadata, 
> xmlReader);
> -
> -                } catch (IOException ioe) {
> -                    throw new 
> InvalidContributionMetadataException(ioe.getMessage(), 
> metadataURL.toExternalForm(), ioe);
> -                } catch (XMLStreamException xmle) {
> -                    throw new 
> InvalidContributionMetadataException(xmle.getMessage(), 
> metadataURL.toExternalForm(),
> -                                                                   xmle);
> -                } catch (ContributionMetadataLoaderException le) {
> -                    throw new 
> InvalidContributionMetadataException(le.getMessage(), 
> metadataURL.toExternalForm(), le);
> -                }
> -            }
> -        } finally {
> -            IOHelper.closeQuietly(metadataStream);
> -            metadataStream = null;
> -        }
> +            metadataDocumentProcessor.read(contributionMetadata);
> +        } catch (XMLStreamException e) {
> +            throw new InvalidContributionMetadataException("Invalid 
> contribution metadata for contribution.");
>
> -        if (contributionMetadata == null) {
> -            contributionMetadata = 
> this.contributionFactory.createContribution();
>         }
>
>         return contributionMetadata;
> @@ -273,7 +262,7 @@
>         }
>
>         //initialize contribution based on it's metadata if available
> -        Contribution contribution = 
> initializeContributionMetadata(locationURL, modelResolver);
> +        Contribution contribution = 
> readContributionMetadata(locationURL);
>
>         //create contribution model resolver
>         if (modelResolver == null) {
>
> Added: 
> incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/sca/contribution/services/ContributionMetadataDocumentProcessorTestCase.java
> URL: 
> http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/sca/contribution/services/ContributionMetadataDocumentProcessorTestCase.java?view=auto&rev=558625
> ==============================================================================
> ---  
> incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/sca/contribution/services/ContributionMetadataDocumentProcessorTestCase.java 
> (added)
> +++ 
> incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/sca/contribution/services/ContributionMetadataDocumentProcessorTestCase.java 
> Sun Jul 22 23:45:08 2007
> @@ -0,0 +1,96 @@
> +/*
> + * Licensed to the Apache Software Foundation (ASF) under one
> + * or more contributor license agreements.  See the NOTICE file
> + * distributed with this work for additional information
> + * regarding copyright ownership.  The ASF licenses this file
> + * to you under the Apache License, Version 2.0 (the
> + * "License"); you may not use this file except in compliance
> + * with the License.  You may obtain a copy of the License at
> + *
> + *   http://www.apache.org/licenses/LICENSE-2.0
> + *
> + * Unless required by applicable law or agreed to in writing,
> + * software distributed under the License is distributed on an
> + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
> + * KIND, either express or implied.  See the License for the
> + * specific language governing permissions and limitations
> + * under the License.
> + */
> +
> +package org.apache.tuscany.sca.contribution.services;
> +
> +import java.io.StringReader;
> +
> +import javax.xml.stream.XMLInputFactory;
> +import javax.xml.stream.XMLStreamReader;
> +
> +import junit.framework.TestCase;
> +
> +import org.apache.tuscany.sca.assembly.DefaultAssemblyFactory;
> +import org.apache.tuscany.sca.contribution.Contribution;
> +import org.apache.tuscany.sca.contribution.ContributionFactory;
> +import org.apache.tuscany.sca.contribution.impl.ContributionFactoryImpl;
> +import 
> org.apache.tuscany.sca.contribution.resolver.impl.ModelResolverImpl;
> +import 
> org.apache.tuscany.sca.contribution.service.impl.ContributionMetadataLoaderImpl;
> +import 
> org.apache.tuscany.sca.contribution.service.impl.InvalidValueException;
> +
> +/**
> + * @version $Rev: 538445 $ $Date: 2007-05-15 23:20:37 -0700 (Tue, 15 May 
> 2007) $
> + */
> +public class ContributionMetadataDocumentProcessorTestCase extends 
> TestCase {
> +
> +    private static final String VALID_XML =
> +        "<?xml version=\"1.0\" encoding=\"ASCII\"?>"
> +            + "<contribution xmlns=\"http://www.osoa.org/xmlns/sca/1.0\" 
> xmlns:ns=\"http://ns\">"
> +            + "<deployable composite=\"ns:Composite1\"/>"
> +            + "<deployable composite=\"ns:Composite2\"/>"
> +            + "<import namespace=\"http://ns2\" 
> location=\"sca://contributions/002/\"/>"
> +            + "<export namespace=\"http://ns1\"/>"
> +            + "</contribution>";
> +
> +    private static final String INVALID_XML =
> +        "<?xml version=\"1.0\" encoding=\"ASCII\"?>"
> +            + "<contribution xmlns=\"http://www.osoa.org/xmlns/sca/1.0\" 
> xmlns:ns=\"http://ns\">"
> +            + "<deployable composite=\"ns:Composite1\"/>"
> +            + "<deployable composite=\"ns3:Composite1\"/>"
> +            + "<import namespace=\"http://ns2\" 
> location=\"sca://contributions/002/\"/>"
> +            + "<export namespace=\"http://ns1\"/>"
> +            + "</contribution>";
> +
> +    private XMLInputFactory xmlFactory;
> +
> +    protected void setUp() throws Exception {
> +        super.setUp();
> +//        xmlFactory = XMLInputFactory.newInstance();
> +    }
> +
> +    public void testLoad() throws Exception {
> +//        XMLStreamReader reader = xmlFactory.createXMLStreamReader(new 
> StringReader(VALID_XML));
> +//
> +//        ContributionFactory factory = new ContributionFactoryImpl();
> +//        ContributionMetadataLoaderImpl loader =
> +//            new ContributionMetadataLoaderImpl(new 
> DefaultAssemblyFactory(), factory);
> +//        Contribution contribution = factory.createContribution();
> +//        contribution.setModelResolver(new 
> ModelResolverImpl(getClass().getClassLoader()));
> +//        loader.load(contribution, reader);
> +//        assertNotNull(contribution);
> +//        assertEquals(1, contribution.getImports().size());
> +//        assertEquals(1, contribution.getExports().size());
> +//        assertEquals(2, contribution.getDeployables().size());
> +    }
> +
> +    public void testLoadInvalid() throws Exception {
> +//        XMLStreamReader reader = xmlFactory.createXMLStreamReader(new 
> StringReader(INVALID_XML));
> +//        ContributionFactory factory = new ContributionFactoryImpl();
> +//        ContributionMetadataLoaderImpl loader =
> +//            new ContributionMetadataLoaderImpl(new 
> DefaultAssemblyFactory(), factory);
> +//        Contribution contribution = factory.createContribution();
> +//        contribution.setModelResolver(new 
> ModelResolverImpl(getClass().getClassLoader()));
> +//        try {
> +//            loader.load(contribution, reader);
> +//            fail("InvalidException should have been thrown");
> +//        } catch (InvalidValueException e) {
> +//            assertTrue(true);
> +//        }
> +    }
> +}
>
> Added: 
> incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/service/ContributionMetadataDocumentProcessor.java
> URL: 
> http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/service/ContributionMetadataDocumentProcessor.java?view=auto&rev=558625
> ==============================================================================
> ---  
> incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/service/ContributionMetadataDocumentProcessor.java 
> (added)
> +++ 
> incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/service/ContributionMetadataDocumentProcessor.java 
> Sun Jul 22 23:45:08 2007
> @@ -0,0 +1,41 @@
> +/*
> + * 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.service;
> +
> +import javax.xml.stream.XMLStreamException;
> +
> +import org.apache.tuscany.sca.contribution.Contribution;
> +
> +/**
> + * Document processor responsible to process the contribution metadata
> + *
> + * @version $Rev$ $Date$
> + */
> +public interface ContributionMetadataDocumentProcessor {
> +    /**
> +     * Create the model object for Contribution Service metadata 
> information
> +     *
> +     * @param contribution The contribution to populate with the proper 
> values from the side file
> +     * @param reader The XML stream reader positioned on the applicable 
> START_ELEMENT
> +     * @throws XMLStreamException
> +     * @throws ContributionMetadataReadException
> +     */
> +    void read(Contribution contribution) throws XMLStreamException, 
> ContributionReadException;
> +}
> \ No newline at end of file
>
> Modified: 
> incubator/tuscany/java/sca/modules/distributed/src/main/java/org/apache/tuscany/sca/distributed/host/impl/NodeRuntimeBuilder.java
> URL: 
> http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/distributed/src/main/java/org/apache/tuscany/sca/distributed/host/impl/NodeRuntimeBuilder.java?view=diff&rev=558625&r1=558624&r2=558625
> ==============================================================================
> ---  
> incubator/tuscany/java/sca/modules/distributed/src/main/java/org/apache/tuscany/sca/distributed/host/impl/NodeRuntimeBuilder.java 
> (original)
> +++ 
> incubator/tuscany/java/sca/modules/distributed/src/main/java/org/apache/tuscany/sca/distributed/host/impl/NodeRuntimeBuilder.java 
> Sun Jul 22 23:45:08 2007
> @@ -52,6 +52,7 @@
> import 
> org.apache.tuscany.sca.contribution.resolver.ModelResolverExtensionPoint;
> import org.apache.tuscany.sca.contribution.service.ContributionRepository;
> import org.apache.tuscany.sca.contribution.service.ContributionService;
> +import 
> org.apache.tuscany.sca.contribution.service.impl.ContributionMetadataProcessor;
> import 
> org.apache.tuscany.sca.contribution.service.impl.ContributionRepositoryImpl;
> import 
> org.apache.tuscany.sca.contribution.service.impl.ContributionServiceImpl;
> import 
> org.apache.tuscany.sca.contribution.service.impl.PackageTypeDescriberImpl;
> @@ -91,14 +92,12 @@
>         registry.addExtensionPoint(staxProcessors);
>
>         // Create and register STAX processors for SCA assembly XML
> -        ExtensibleStAXArtifactProcessor staxProcessor = new 
> ExtensibleStAXArtifactProcessor(staxProcessors, xmlFactory,
> - 
> XMLOutputFactory
> - 
> .newInstance());
> -        staxProcessors.addArtifactProcessor(new 
> CompositeProcessor(assemblyFactory, policyFactory, mapper,
> - 
> staxProcessor));
> +        ExtensibleStAXArtifactProcessor staxProcessor =
> +            new ExtensibleStAXArtifactProcessor(staxProcessors, 
> xmlFactory, XMLOutputFactory.newInstance());
> +        staxProcessors.addArtifactProcessor(new 
> CompositeProcessor(assemblyFactory, policyFactory, mapper, 
> staxProcessor));
>         staxProcessors.addArtifactProcessor(new 
> ComponentTypeProcessor(assemblyFactory, policyFactory, staxProcessor));
> -        staxProcessors
> -            .addArtifactProcessor(new 
> ConstrainingTypeProcessor(assemblyFactory, policyFactory, staxProcessor));
> +        staxProcessors.addArtifactProcessor(new 
> ConstrainingTypeProcessor(assemblyFactory, policyFactory, staxProcessor));
> +        staxProcessors.addArtifactProcessor(new 
> ContributionMetadataProcessor(assemblyFactory, contributionFactory));
>
>         // Create URL artifact processor extension point
>         // FIXME use the interface instead of the class
> @@ -147,6 +146,7 @@
>         ContributionService contributionService = new 
> ContributionServiceImpl(repository,
> 
> packageProcessor,
> 
> documentProcessor,
> + 
> staxProcessor,
> 
> postProcessor,
> 
> modelResolverExtensionPoint,
> 
> assemblyFactory,
>
> Modified: 
> incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/ReallySmallRuntimeBuilder.java
> URL: 
> http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/ReallySmallRuntimeBuilder.java?view=diff&rev=558625&r1=558624&r2=558625
> ==============================================================================
> ---  
> incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/ReallySmallRuntimeBuilder.java 
> (original)
> +++ 
> incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/ReallySmallRuntimeBuilder.java 
> Sun Jul 22 23:45:08 2007
> @@ -70,6 +70,7 @@
> import org.apache.tuscany.sca.contribution.service.ContributionRepository;
> import org.apache.tuscany.sca.contribution.service.ContributionService;
> import org.apache.tuscany.sca.contribution.service.TypeDescriber;
> +import 
> org.apache.tuscany.sca.contribution.service.impl.ContributionMetadataProcessor;
> import 
> org.apache.tuscany.sca.contribution.service.impl.ContributionRepositoryImpl;
> import 
> org.apache.tuscany.sca.contribution.service.impl.ContributionServiceImpl;
> import 
> org.apache.tuscany.sca.contribution.service.impl.PackageTypeDescriberImpl;
> @@ -174,14 +175,12 @@
>         registry.addExtensionPoint(staxProcessors);
>
>         // Create and register STAX processors for SCA assembly XML
> -        ExtensibleStAXArtifactProcessor staxProcessor = new 
> ExtensibleStAXArtifactProcessor(staxProcessors, xmlFactory,
> - 
> XMLOutputFactory
> - 
> .newInstance());
> -        staxProcessors.addArtifactProcessor(new 
> CompositeProcessor(assemblyFactory, policyFactory, mapper,
> - 
> staxProcessor));
> +        ExtensibleStAXArtifactProcessor staxProcessor =
> +            new ExtensibleStAXArtifactProcessor(staxProcessors, 
> xmlFactory, XMLOutputFactory.newInstance());
> +        staxProcessors.addArtifactProcessor(new 
> CompositeProcessor(assemblyFactory, policyFactory, mapper, 
> staxProcessor));
>         staxProcessors.addArtifactProcessor(new 
> ComponentTypeProcessor(assemblyFactory, policyFactory, staxProcessor));
> -        staxProcessors
> -            .addArtifactProcessor(new 
> ConstrainingTypeProcessor(assemblyFactory, policyFactory, staxProcessor));
> +        staxProcessors.addArtifactProcessor(new 
> ConstrainingTypeProcessor(assemblyFactory, policyFactory, staxProcessor));
> +        staxProcessors.addArtifactProcessor(new 
> ContributionMetadataProcessor(assemblyFactory,contributionFactory));
>
>         // Create URL artifact processor extension point
>         URLArtifactProcessorExtensionPoint documentProcessors = new 
> DefaultURLArtifactProcessorExtensionPoint();
> @@ -225,8 +224,9 @@
>         }
>
>         ExtensibleURLArtifactProcessor documentProcessor = new 
> ExtensibleURLArtifactProcessor(documentProcessors);
> +
>         ContributionService contributionService = new 
> ContributionServiceImpl(repository, packageProcessor,
> - 
> documentProcessor, postProcessor,
> + 
> documentProcessor, staxProcessor, postProcessor,
> 
> modelResolverExtensionPoint, assemblyFactory,
> 
> contributionFactory, xmlFactory);
>         return contributionService;
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
> For additional commands, e-mail: tuscany-commits-help@ws.apache.org
> 


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