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