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: <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to