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