diff options
author | lresende <lresende@13f79535-47bb-0310-9956-ffa450edef68> | 2010-09-06 16:49:51 +0000 |
---|---|---|
committer | lresende <lresende@13f79535-47bb-0310-9956-ffa450edef68> | 2010-09-06 16:49:51 +0000 |
commit | 1f63bc03e8cf8dd761a51e9f83c18b25654adbf4 (patch) | |
tree | 71509850b1bfaf44c4593cbf6afa5dd2d6dd153c /sca-java-2.x | |
parent | 4957d288168a5620b52537f754a529007514f811 (diff) |
Porting support to import/export resources from 1.x
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@993091 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to '')
15 files changed, 289 insertions, 354 deletions
diff --git a/sca-java-2.x/trunk/modules/assembly-xsd/src/main/resources/tuscany-sca-1.1-contribution-resource.xsd b/sca-java-2.x/trunk/modules/assembly-xsd/src/main/resources/tuscany-sca-1.1-contribution-resource.xsd new file mode 100644 index 0000000000..09645724a4 --- /dev/null +++ b/sca-java-2.x/trunk/modules/assembly-xsd/src/main/resources/tuscany-sca-1.1-contribution-resource.xsd @@ -0,0 +1,46 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + * 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. +--> +<schema xmlns="http://www.w3.org/2001/XMLSchema" + targetNamespace="http://tuscany.apache.org/xmlns/sca/1.1" + xmlns:sca="http://docs.oasis-open.org/ns/opencsa/sca/200912" + xmlns:t="http://tuscany.apache.org/xmlns/sca/1.1" + elementFormDefault="qualified"> + + <import namespace="http://docs.oasis-open.org/ns/opencsa/sca/200912" schemaLocation="sca-contribution-1.1-cd05-rev1.xsd"/> + + <element name="import.resource" type="t:ImportResourceType" substitutionGroup="sca:importBase"/> + <complexType name="ImportResourceType"> + <complexContent> + <extension base="sca:Import"> + <attribute name="uri" type="anyURI" use="required"/> + </extension> + </complexContent> + </complexType> + + <element name="export.resource" type="t:ExportResourceType" substitutionGroup="sca:exportBase"/> + <complexType name="ExportResourceType"> + <complexContent> + <extension base="sca:Export"> + <attribute name="uri" type="anyURI" use="required"/> + </extension> + </complexContent> + </complexType> + +</schema>
\ No newline at end of file diff --git a/sca-java-2.x/trunk/modules/assembly-xsd/src/main/resources/tuscany-sca-1.1.xsd b/sca-java-2.x/trunk/modules/assembly-xsd/src/main/resources/tuscany-sca-1.1.xsd index 08c6f57eb4..0259a17abb 100644 --- a/sca-java-2.x/trunk/modules/assembly-xsd/src/main/resources/tuscany-sca-1.1.xsd +++ b/sca-java-2.x/trunk/modules/assembly-xsd/src/main/resources/tuscany-sca-1.1.xsd @@ -26,13 +26,17 @@ <import namespace="http://docs.oasis-open.org/ns/opencsa/sca/200912" schemaLocation="sca-1.1-cd05-rev1.xsd"/> - <include schemaLocation="tuscany-sca-1.1-binding-atom.xsd"/> + <include schemaLocation="tuscany-sca-1.1-binding-atom.xsd"/> <include schemaLocation="tuscany-sca-1.1-binding-jms.xsd"/> <include schemaLocation="tuscany-sca-1.1-binding-http.xsd"/> <include schemaLocation="tuscany-sca-1.1-binding-jsonrpc.xsd"/> <include schemaLocation="tuscany-sca-1.1-binding-rest.xsd"/> <include schemaLocation="tuscany-sca-1.1-binding-rmi.xsd"/> + <!-- <include schemaLocation="tuscany-sca-1.1-binding-rss.xsd"/> + --> + + <include schemaLocation="tuscany-sca-1.1-contribution-resource.xsd"/> <include schemaLocation="tuscany-sca-1.1-implementation-osgi.xsd"/> <include schemaLocation="tuscany-sca-1.1-implementation-widget.xsd"/> diff --git a/sca-java-2.x/trunk/modules/contribution-resource/META-INF/MANIFEST.MF b/sca-java-2.x/trunk/modules/contribution-resource/META-INF/MANIFEST.MF new file mode 100644 index 0000000000..0f43a91324 --- /dev/null +++ b/sca-java-2.x/trunk/modules/contribution-resource/META-INF/MANIFEST.MF @@ -0,0 +1,34 @@ +Manifest-Version: 1.0
+Export-Package: org.apache.tuscany.sca.contribution.resource
+SCA-Version: 1.1
+Bundle-Name: Apache Tuscany SCA Resource Import/Export Model
+Bundle-Vendor: The Apache Software Foundation
+Bundle-Version: 2.0.0
+Bundle-ManifestVersion: 2
+Bundle-License: http://www.apache.org/licenses/LICENSE-2.0.txt
+Bundle-Description: Apache Tuscany SCA Resource Import/Export Model
+Import-Package: javax.xml.namespace,
+ javax.xml.parsers,
+ javax.xml.stream,
+ javax.xml.stream.events,
+ javax.xml.stream.util,
+ javax.xml.transform,
+ javax.xml.transform.sax,
+ javax.xml.transform.stream,
+ javax.xml.validation,
+ org.apache.tuscany.sca.assembly;version="2.0.0",
+ org.apache.tuscany.sca.assembly.xsd;version="2.0.0";resolution:=optional,
+ org.apache.tuscany.sca.common.java.io;version="2.0.0",
+ org.apache.tuscany.sca.common.xml;version="2.0.0",
+ org.apache.tuscany.sca.common.xml.stax;version="2.0.0",
+ org.apache.tuscany.sca.contribution;version="2.0.0",
+ org.apache.tuscany.sca.contribution.resolver;version="2.0.0",
+ org.apache.tuscany.sca.core;version="2.0.0",
+ org.apache.tuscany.sca.monitor;version="2.0.0",
+ org.w3c.dom,
+ org.w3c.dom.ls,
+ org.xml.sax,
+ org.xml.sax.helpers
+Bundle-SymbolicName: org.apache.tuscany.sca.contribution.resource
+Bundle-DocURL: http://www.apache.org/
+Bundle-RequiredExecutionEnvironment: J2SE-1.5,JavaSE-1.6 diff --git a/sca-java-2.x/trunk/modules/contribution-resource/pom.xml b/sca-java-2.x/trunk/modules/contribution-resource/pom.xml index 6a90995b75..576670176a 100644 --- a/sca-java-2.x/trunk/modules/contribution-resource/pom.xml +++ b/sca-java-2.x/trunk/modules/contribution-resource/pom.xml @@ -7,22 +7,22 @@ * 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. + * under the License. --> <project> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.apache.tuscany.sca</groupId> <artifactId>tuscany-modules</artifactId> - <version>1.7-SNAPSHOT</version> + <version>2.0-SNAPSHOT</version> <relativePath>../pom.xml</relativePath> </parent> <artifactId>tuscany-contribution-resource</artifactId> @@ -32,13 +32,13 @@ <dependency> <groupId>org.apache.tuscany.sca</groupId> <artifactId>tuscany-contribution</artifactId> - <version>1.7-SNAPSHOT</version> + <version>2.0-SNAPSHOT</version> </dependency> - <dependency> + <dependency> <groupId>org.apache.tuscany.sca</groupId> <artifactId>tuscany-core-spi</artifactId> - <version>1.7-SNAPSHOT</version> + <version>2.0-SNAPSHOT</version> </dependency> <dependency> @@ -54,23 +54,4 @@ </exclusions> </dependency> </dependencies> - - <build> - <plugins> - <plugin> - <groupId>org.apache.felix</groupId> - <artifactId>maven-bundle-plugin</artifactId> - - <configuration> - <instructions> - <Bundle-Version>${tuscany.version}</Bundle-Version> - <Bundle-SymbolicName>org.apache.tuscany.sca.contribution.resource</Bundle-SymbolicName> - <Bundle-Description>${pom.name}</Bundle-Description> - <Export-Package>org.apache.tuscany.sca.contribution.resource*</Export-Package> - </instructions> - </configuration> - </plugin> - </plugins> - </build> - </project> diff --git a/sca-java-2.x/trunk/modules/contribution-resource/src/main/java/org/apache/tuscany/sca/contribution/resource/ResourceExport.java b/sca-java-2.x/trunk/modules/contribution-resource/src/main/java/org/apache/tuscany/sca/contribution/resource/ResourceExport.java index 0bd30c19dd..8165b54fec 100644 --- a/sca-java-2.x/trunk/modules/contribution-resource/src/main/java/org/apache/tuscany/sca/contribution/resource/ResourceExport.java +++ b/sca-java-2.x/trunk/modules/contribution-resource/src/main/java/org/apache/tuscany/sca/contribution/resource/ResourceExport.java @@ -6,41 +6,44 @@ * 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. + * under the License. */ package org.apache.tuscany.sca.contribution.resource; +import javax.xml.namespace.QName; + import org.apache.tuscany.sca.contribution.Export; /** * The representation of an resource export. - * + * * @version $Rev$ $Date$ */ public interface ResourceExport extends Export { + QName TYPE = new QName(SCA11_TUSCANY_NS, "export.resource"); /** * Get Resource URI that identifies the export. - * + * * @return The exported resource URI */ String getURI(); /** * Set Resource URI that identifies the export. - * + * * @param uri The exported resource URI */ void setURI(String uri); - + } diff --git a/sca-java-2.x/trunk/modules/contribution-resource/src/main/java/org/apache/tuscany/sca/contribution/resource/ResourceImport.java b/sca-java-2.x/trunk/modules/contribution-resource/src/main/java/org/apache/tuscany/sca/contribution/resource/ResourceImport.java index 07eac9d843..3bba948c82 100644 --- a/sca-java-2.x/trunk/modules/contribution-resource/src/main/java/org/apache/tuscany/sca/contribution/resource/ResourceImport.java +++ b/sca-java-2.x/trunk/modules/contribution-resource/src/main/java/org/apache/tuscany/sca/contribution/resource/ResourceImport.java @@ -6,54 +6,57 @@ * 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. + * under the License. */ package org.apache.tuscany.sca.contribution.resource; +import javax.xml.namespace.QName; + import org.apache.tuscany.sca.contribution.Import; /** * The representation of an resource import. - * + * * @version $Rev$ $Date$ */ public interface ResourceImport extends Import { + QName TYPE = new QName(SCA11_TUSCANY_NS, "import.resource"); /** * Get the location used to resolve the definitions for this import - * + * * @return The import location */ String getLocation(); /** * Set the location used to resolve the definitions for this import - * + * * @param location The import location */ void setLocation(String location); /** * Get URI that identifies the resource import - * + * * @return The URI */ String getURI(); /** * Set URI that identifies the resource import - * + * * @param uri The resource URI */ void setURI(String uri); - + }
\ No newline at end of file diff --git a/sca-java-2.x/trunk/modules/contribution-resource/src/main/java/org/apache/tuscany/sca/contribution/resource/impl/ArtifactModelResolver.java b/sca-java-2.x/trunk/modules/contribution-resource/src/main/java/org/apache/tuscany/sca/contribution/resource/impl/ArtifactModelResolver.java index 67836748fc..de14c463d3 100644 --- a/sca-java-2.x/trunk/modules/contribution-resource/src/main/java/org/apache/tuscany/sca/contribution/resource/impl/ArtifactModelResolver.java +++ b/sca-java-2.x/trunk/modules/contribution-resource/src/main/java/org/apache/tuscany/sca/contribution/resource/impl/ArtifactModelResolver.java @@ -6,15 +6,15 @@ * 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. + * under the License. */ package org.apache.tuscany.sca.contribution.resource.impl; @@ -25,7 +25,7 @@ import java.util.Map; import org.apache.tuscany.sca.contribution.Artifact; import org.apache.tuscany.sca.contribution.Contribution; import org.apache.tuscany.sca.contribution.Import; -import org.apache.tuscany.sca.contribution.ModelFactoryExtensionPoint; +import org.apache.tuscany.sca.contribution.processor.ProcessorContext; import org.apache.tuscany.sca.contribution.resolver.ModelResolver; import org.apache.tuscany.sca.contribution.resource.ResourceImport; @@ -37,34 +37,34 @@ import org.apache.tuscany.sca.contribution.resource.ResourceImport; public class ArtifactModelResolver implements ModelResolver { private Contribution contribution; private Map<String, Artifact> map = new HashMap<String, Artifact>(); - - public ArtifactModelResolver(Contribution contribution, ModelFactoryExtensionPoint modelFactories) { + + public ArtifactModelResolver(Contribution contribution) { this.contribution = contribution; } - public void addModel(Object resolved) { + public void addModel(Object resolved, ProcessorContext context) { Artifact artifact = (Artifact)resolved; - map.put(artifact.getURI(), artifact); + map.put(artifact.getURI(), artifact); } - - public Object removeModel(Object resolved) { - return map.remove(((Artifact)resolved).getURI()); + + public Object removeModel(Object resolved, ProcessorContext context) { + return map.remove(((Artifact)resolved).getURI()); } - - public <T> T resolveModel(Class<T> modelClass, T unresolved) { + + public <T> T resolveModel(Class<T> modelClass, T unresolved, ProcessorContext context) { // Get the artifact URI String uri = ((Artifact)unresolved).getURI(); if (uri == null) { return (T)unresolved; } - + // Lookup the artifact Artifact resolved = (Artifact) map.get(uri); if (resolved != null) { return modelClass.cast(resolved); - } - + } + // If not found, delegate the resolution to the imports (in this case based on the resource imports) for (Import import_ : this.contribution.getImports()) { if (import_ instanceof ResourceImport) { @@ -73,7 +73,7 @@ public class ArtifactModelResolver implements ModelResolver { if ((resourceImport.getURI().equals(uri)) && (resourceImport.getModelResolver() != null)){ // Delegate the resolution to the import resolver - resolved = resourceImport.getModelResolver().resolveModel(Artifact.class, (Artifact)unresolved); + resolved = resourceImport.getModelResolver().resolveModel(Artifact.class, (Artifact)unresolved, context); if (!resolved.isUnresolved()) { return modelClass.cast(resolved); } @@ -83,5 +83,5 @@ public class ArtifactModelResolver implements ModelResolver { return (T)unresolved; } - + } diff --git a/sca-java-2.x/trunk/modules/contribution-resource/src/main/java/org/apache/tuscany/sca/contribution/resource/impl/ResourceExportModelResolver.java b/sca-java-2.x/trunk/modules/contribution-resource/src/main/java/org/apache/tuscany/sca/contribution/resource/impl/ResourceExportModelResolver.java index fd568e533d..96ee55ed45 100644 --- a/sca-java-2.x/trunk/modules/contribution-resource/src/main/java/org/apache/tuscany/sca/contribution/resource/impl/ResourceExportModelResolver.java +++ b/sca-java-2.x/trunk/modules/contribution-resource/src/main/java/org/apache/tuscany/sca/contribution/resource/impl/ResourceExportModelResolver.java @@ -6,20 +6,21 @@ * 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. + * under the License. */ package org.apache.tuscany.sca.contribution.resource.impl; import org.apache.tuscany.sca.contribution.Artifact; +import org.apache.tuscany.sca.contribution.processor.ProcessorContext; import org.apache.tuscany.sca.contribution.resolver.ModelResolver; import org.apache.tuscany.sca.contribution.resource.ResourceExport; @@ -32,31 +33,31 @@ public class ResourceExportModelResolver implements ModelResolver { private ResourceExport export; private ModelResolver resolver; - + public ResourceExportModelResolver(ResourceExport export, ModelResolver resolver) { this.export = export; this.resolver = resolver; } - - public void addModel(Object resolved) { + + public void addModel(Object resolved, ProcessorContext context) { throw new IllegalStateException(); } - public Object removeModel(Object resolved) { + public Object removeModel(Object resolved, ProcessorContext context) { throw new IllegalStateException(); } - public <T> T resolveModel(Class<T> modelClass, T unresolved) { - + public <T> T resolveModel(Class<T> modelClass, T unresolved, ProcessorContext context) { + // Filter based on the artifact URI Artifact artifact = (Artifact)unresolved; if (export.getURI().equals(artifact.getURI())) { - + // The artifact URI matches the exported URI, delegate to the // contribution's resolver - return resolver.resolveModel(modelClass, unresolved); + return resolver.resolveModel(modelClass, unresolved, context); } else { - + // The artifact URI is not exported, return the unresolved object return unresolved; } diff --git a/sca-java-2.x/trunk/modules/contribution-resource/src/main/java/org/apache/tuscany/sca/contribution/resource/impl/ResourceExportProcessor.java b/sca-java-2.x/trunk/modules/contribution-resource/src/main/java/org/apache/tuscany/sca/contribution/resource/impl/ResourceExportProcessor.java index dcd806776f..215338c7ce 100644 --- a/sca-java-2.x/trunk/modules/contribution-resource/src/main/java/org/apache/tuscany/sca/contribution/resource/impl/ResourceExportProcessor.java +++ b/sca-java-2.x/trunk/modules/contribution-resource/src/main/java/org/apache/tuscany/sca/contribution/resource/impl/ResourceExportProcessor.java @@ -6,15 +6,15 @@ * 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. + * under the License. */ package org.apache.tuscany.sca.contribution.resource.impl; @@ -27,106 +27,89 @@ import javax.xml.stream.XMLStreamException; import javax.xml.stream.XMLStreamReader; import javax.xml.stream.XMLStreamWriter; -import org.apache.tuscany.sca.contribution.ModelFactoryExtensionPoint; +import org.apache.tuscany.sca.contribution.processor.ContributionReadException; +import org.apache.tuscany.sca.contribution.processor.ContributionResolveException; +import org.apache.tuscany.sca.contribution.processor.ContributionWriteException; +import org.apache.tuscany.sca.contribution.processor.ProcessorContext; import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor; import org.apache.tuscany.sca.contribution.resolver.ModelResolver; import org.apache.tuscany.sca.contribution.resource.ResourceExport; import org.apache.tuscany.sca.contribution.resource.ResourceImportExportFactory; -import org.apache.tuscany.sca.contribution.service.ContributionReadException; -import org.apache.tuscany.sca.contribution.service.ContributionResolveException; -import org.apache.tuscany.sca.contribution.service.ContributionWriteException; +import org.apache.tuscany.sca.core.FactoryExtensionPoint; import org.apache.tuscany.sca.monitor.Monitor; import org.apache.tuscany.sca.monitor.Problem; import org.apache.tuscany.sca.monitor.Problem.Severity; -import org.apache.tuscany.sca.monitor.impl.ProblemImpl; /** * Artifact processor for Resource export - * + * * @version $Rev$ $Date$ */ public class ResourceExportProcessor implements StAXArtifactProcessor<ResourceExport> { - private static final String SCA10_NS = "http://www.osoa.org/xmlns/sca/1.0"; - private static final QName EXPORT_RESOURCE = new QName(SCA10_NS, "export.resource"); private static final String URI = "uri"; - + private final ResourceImportExportFactory factory; - private final Monitor monitor; - - public ResourceExportProcessor(ModelFactoryExtensionPoint modelFactories, Monitor monitor) { + + public ResourceExportProcessor(FactoryExtensionPoint modelFactories) { this.factory = modelFactories.getFactory(ResourceImportExportFactory.class); - this.monitor = monitor; } - + + /** * Report a error. - * + * * @param problems * @param message * @param model */ - private void error(String message, Object model, Object... messageParameters) { + private void error(Monitor monitor, String message, Object model, Object... messageParameters) { if (monitor != null) { - Problem problem = new ProblemImpl(this.getClass().getName(), "contribution-resource-validation-messages", Severity.ERROR, model, message, (Object[])messageParameters); - monitor.problem(problem); + Problem problem = monitor.createProblem(this.getClass().getName(), "contribution-resource-validation-messages", Severity.ERROR, model, message, (Object[])messageParameters); + monitor.problem(problem); } } - - /** - * Report a exception. - * - * @param problems - * @param message - * @param model - */ - private void error(String message, Object model, Exception ex) { - if (monitor != null) { - Problem problem = new ProblemImpl(this.getClass().getName(), "contribution-resource-validation-messages", Severity.ERROR, model, message, ex); - monitor.problem(problem); - } - } public QName getArtifactType() { - return EXPORT_RESOURCE; + return ResourceExport.TYPE; } - + public Class<ResourceExport> getModelType() { return ResourceExport.class; } - + /** * Process <export.resource uri=""/> */ - public ResourceExport read(XMLStreamReader reader) throws ContributionReadException { + public ResourceExport read(XMLStreamReader reader, ProcessorContext context) throws ContributionReadException { ResourceExport resourceExport = this.factory.createResourceExport(); QName element = null; - + try { while (reader.hasNext()) { int event = reader.getEventType(); switch (event) { case START_ELEMENT: element = reader.getName(); - + // Read <export.resource> - if (EXPORT_RESOURCE.equals(element)) { + if (ResourceExport.TYPE.equals(element)) { String uri = reader.getAttributeValue(null, URI); if (uri == null) { - error("AttributeURIMissing", reader); + error(context.getMonitor(), "AttributeURIMissing", reader); //throw new ContributionReadException("Attribute 'uri' is missing"); } else resourceExport.setURI(uri); - } - + } + break; case XMLStreamConstants.END_ELEMENT: - if (EXPORT_RESOURCE.equals(reader.getName())) { + if (ResourceExport.TYPE.equals(reader.getName())) { return resourceExport; } - break; + break; } - + // Read the next element if (reader.hasNext()) { reader.next(); @@ -135,26 +118,26 @@ public class ResourceExportProcessor implements StAXArtifactProcessor<ResourceEx } catch (XMLStreamException e) { ContributionReadException ex = new ContributionReadException(e); - error("XMLStreamException", reader, ex); + error(context.getMonitor(), "XMLStreamException", reader, ex); } - + return resourceExport; } - public void write(ResourceExport resourceExport, XMLStreamWriter writer) throws ContributionWriteException, XMLStreamException { - + public void write(ResourceExport resourceExport, XMLStreamWriter writer, ProcessorContext context) throws ContributionWriteException, XMLStreamException { + // Write <export.resource> - writer.writeStartElement(EXPORT_RESOURCE.getNamespaceURI(), EXPORT_RESOURCE.getLocalPart()); - + writer.writeStartElement(ResourceExport.TYPE.getNamespaceURI(), ResourceExport.TYPE.getLocalPart()); + if (resourceExport.getURI() != null) { writer.writeAttribute(URI, resourceExport.getURI()); } - + writer.writeEndElement(); } - public void resolve(ResourceExport resourceExport, ModelResolver resolver) throws ContributionResolveException { - + public void resolve(ResourceExport resourceExport, ModelResolver resolver, ProcessorContext context) throws ContributionResolveException { + if (resourceExport.getURI() != null) // Initialize the export's model resolver resourceExport.setModelResolver(new ResourceExportModelResolver(resourceExport, resolver)); diff --git a/sca-java-2.x/trunk/modules/contribution-resource/src/main/java/org/apache/tuscany/sca/contribution/resource/impl/ResourceImportExportListener.java b/sca-java-2.x/trunk/modules/contribution-resource/src/main/java/org/apache/tuscany/sca/contribution/resource/impl/ResourceImportExportListener.java deleted file mode 100644 index e7aecad786..0000000000 --- a/sca-java-2.x/trunk/modules/contribution-resource/src/main/java/org/apache/tuscany/sca/contribution/resource/impl/ResourceImportExportListener.java +++ /dev/null @@ -1,97 +0,0 @@ -/* - * 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.resource.impl; - -import org.apache.tuscany.sca.contribution.Contribution; -import org.apache.tuscany.sca.contribution.Export; -import org.apache.tuscany.sca.contribution.Import; -import org.apache.tuscany.sca.contribution.resolver.DefaultImportAllModelResolver; -import org.apache.tuscany.sca.contribution.resource.ResourceExport; -import org.apache.tuscany.sca.contribution.resource.ResourceImport; -import org.apache.tuscany.sca.contribution.service.ContributionListener; -import org.apache.tuscany.sca.contribution.service.ContributionRepository; - -/** - * Resource Import/Export contribution listener - * The listener would process all import/export from a given contribution - * and initialize the model resolvers properly - * - * @version $Rev$ $Date$ - */ -public class ResourceImportExportListener implements ContributionListener { - - /** - * Initialize the import/export model resolvers - * Export model resolvers are same as Contribution model resolver - * Import model resolvers are matched to a specific contribution if a location URI is specified, - * otherwise it try to resolve against all the other contributions - * Also set the exporting contributions used by contribution ClassLoaders to - * match import/export for class loading. - */ - public void contributionAdded(ContributionRepository repository, Contribution contribution) { - // Initialize the contribution exports - for (Export export: contribution.getExports()) { - export.setModelResolver(contribution.getModelResolver()); - } - - // Initialize the contribution imports - for (Import import_: contribution.getImports()) { - boolean initialized = false; - - if (import_ instanceof ResourceImport) { - ResourceImport resourceImport = (ResourceImport)import_; - - // Find a matching contribution - if (resourceImport.getLocation() != null) { - Contribution targetContribution = repository.getContribution(resourceImport.getLocation()); - if (targetContribution != null) { - - // Find a matching contribution export - for (Export export: targetContribution.getExports()) { - if (export instanceof ResourceExport) { - ResourceExport resourceExport = (ResourceExport)export; - if (resourceImport.getURI().equals(resourceExport.getURI())) { - resourceImport.setModelResolver(resourceExport.getModelResolver()); - initialized = true; - break; - } - } - } - } - } - - //if no location was specified, try to resolve with any contribution - if( !initialized ) { - // Use a resolver that will consider all contributions - import_.setModelResolver(new DefaultImportAllModelResolver(import_, repository.getContributions())); - } - } - } - } - - public void contributionRemoved(ContributionRepository repository, Contribution contribution) { - - } - - public void contributionUpdated(ContributionRepository repository, Contribution oldContribution, Contribution contribution) { - - } - -} diff --git a/sca-java-2.x/trunk/modules/contribution-resource/src/main/java/org/apache/tuscany/sca/contribution/resource/impl/ResourceImportProcessor.java b/sca-java-2.x/trunk/modules/contribution-resource/src/main/java/org/apache/tuscany/sca/contribution/resource/impl/ResourceImportProcessor.java index e5d30b389a..7e341f60fd 100644 --- a/sca-java-2.x/trunk/modules/contribution-resource/src/main/java/org/apache/tuscany/sca/contribution/resource/impl/ResourceImportProcessor.java +++ b/sca-java-2.x/trunk/modules/contribution-resource/src/main/java/org/apache/tuscany/sca/contribution/resource/impl/ResourceImportProcessor.java @@ -6,15 +6,15 @@ * 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. + * under the License. */ package org.apache.tuscany.sca.contribution.resource.impl; @@ -27,72 +27,52 @@ import javax.xml.stream.XMLStreamException; import javax.xml.stream.XMLStreamReader; import javax.xml.stream.XMLStreamWriter; -import org.apache.tuscany.sca.contribution.ModelFactoryExtensionPoint; +import org.apache.tuscany.sca.contribution.processor.ContributionReadException; +import org.apache.tuscany.sca.contribution.processor.ContributionResolveException; +import org.apache.tuscany.sca.contribution.processor.ContributionWriteException; +import org.apache.tuscany.sca.contribution.processor.ProcessorContext; import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor; import org.apache.tuscany.sca.contribution.resolver.ModelResolver; import org.apache.tuscany.sca.contribution.resource.ResourceImport; import org.apache.tuscany.sca.contribution.resource.ResourceImportExportFactory; -import org.apache.tuscany.sca.contribution.service.ContributionReadException; -import org.apache.tuscany.sca.contribution.service.ContributionResolveException; -import org.apache.tuscany.sca.contribution.service.ContributionWriteException; +import org.apache.tuscany.sca.core.FactoryExtensionPoint; import org.apache.tuscany.sca.monitor.Monitor; import org.apache.tuscany.sca.monitor.Problem; import org.apache.tuscany.sca.monitor.Problem.Severity; -import org.apache.tuscany.sca.monitor.impl.ProblemImpl; /** * Artifact processor for Namespace import - * + * * @version $Rev$ $Date$ */ public class ResourceImportProcessor implements StAXArtifactProcessor<ResourceImport> { - private static final String SCA10_NS = "http://www.osoa.org/xmlns/sca/1.0"; - - private static final QName IMPORT_RESOURCE = new QName(SCA10_NS, "import.resource"); - private static final String URI = "uri"; private static final String LOCATION = "location"; - + private final ResourceImportExportFactory factory; - private final Monitor monitor; - - public ResourceImportProcessor(ModelFactoryExtensionPoint modelFactories, Monitor monitor) { + + public ResourceImportProcessor(FactoryExtensionPoint modelFactories) { this.factory = modelFactories.getFactory(ResourceImportExportFactory.class); - this.monitor = monitor; } - + /** - * Report a warning. - * + * Report a error. + * * @param problems * @param message * @param model */ - private void error(String message, Object model, Object... messageParameters) { + private void error(Monitor monitor, String message, Object model, Object... messageParameters) { if (monitor != null) { - Problem problem = new ProblemImpl(this.getClass().getName(), "contribution-resource-validation-messages", Severity.ERROR, model, message, (Object[])messageParameters); + Problem problem = monitor.createProblem(this.getClass().getName(), "contribution-resource-validation-messages", Severity.ERROR, model, message, (Object[])messageParameters); monitor.problem(problem); } } - - /** - * Report a exception. - * - * @param problems - * @param message - * @param model - */ - private void error(String message, Object model, Exception ex) { - if (monitor != null) { - Problem problem = new ProblemImpl(this.getClass().getName(), "contribution-resource-validation-messages", Severity.ERROR, model, message, ex); - monitor.problem(problem); - } - } - + public QName getArtifactType() { - return IMPORT_RESOURCE; + return ResourceImport.TYPE; } - + public Class<ResourceImport> getModelType() { return ResourceImport.class; } @@ -100,26 +80,26 @@ public class ResourceImportProcessor implements StAXArtifactProcessor<ResourceI /** * Process <import.resource uri="" location=""/> */ - public ResourceImport read(XMLStreamReader reader) throws ContributionReadException { + public ResourceImport read(XMLStreamReader reader, ProcessorContext context) throws ContributionReadException { ResourceImport resourceImport = this.factory.createResourceImport(); QName element; - + try { while (reader.hasNext()) { int event = reader.getEventType(); switch (event) { case START_ELEMENT: element = reader.getName(); - + // Read <import> - if (IMPORT_RESOURCE.equals(element)) { + if (ResourceImport.TYPE.equals(element)) { String uri = reader.getAttributeValue(null, URI); if (uri == null) { - error("AttributeURIMissing", reader); + error(context.getMonitor(), "AttributeURIMissing", reader); //throw new ContributionReadException("Attribute 'uri' is missing"); } else resourceImport.setURI(uri); - + String location = reader.getAttributeValue(null, LOCATION); if (location != null) { resourceImport.setLocation(location); @@ -127,12 +107,12 @@ public class ResourceImportProcessor implements StAXArtifactProcessor<ResourceI } break; case XMLStreamConstants.END_ELEMENT: - if (IMPORT_RESOURCE.equals(reader.getName())) { + if (ResourceImport.TYPE.equals(reader.getName())) { return resourceImport; } - break; + break; } - + // Read the next element if (reader.hasNext()) { reader.next(); @@ -141,28 +121,28 @@ public class ResourceImportProcessor implements StAXArtifactProcessor<ResourceI } catch (XMLStreamException e) { ContributionReadException ex = new ContributionReadException(e); - error("XMLStreamException", reader, ex); + error(context.getMonitor(), "XMLStreamException", reader, ex); } - + return resourceImport; } - public void write(ResourceImport resourceImport, XMLStreamWriter writer) throws ContributionWriteException, XMLStreamException { - + public void write(ResourceImport resourceImport, XMLStreamWriter writer, ProcessorContext context) throws ContributionWriteException, XMLStreamException { + // Write <import> - writer.writeStartElement(IMPORT_RESOURCE.getNamespaceURI(), IMPORT_RESOURCE.getLocalPart()); - + writer.writeStartElement(ResourceImport.TYPE.getNamespaceURI(), ResourceImport.TYPE.getLocalPart()); + if (resourceImport.getURI() != null) { writer.writeAttribute(URI, resourceImport.getURI()); } if (resourceImport.getLocation() != null) { writer.writeAttribute(LOCATION, resourceImport.getLocation()); } - + writer.writeEndElement(); } - public void resolve(ResourceImport model, ModelResolver resolver) throws ContributionResolveException { + public void resolve(ResourceImport model, ModelResolver resolver, ProcessorContext context) throws ContributionResolveException { } } diff --git a/sca-java-2.x/trunk/modules/contribution-resource/src/main/resources/META-INF/services/org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor b/sca-java-2.x/trunk/modules/contribution-resource/src/main/resources/META-INF/services/org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor index 14eb81546d..fba50cd9b4 100644 --- a/sca-java-2.x/trunk/modules/contribution-resource/src/main/resources/META-INF/services/org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor +++ b/sca-java-2.x/trunk/modules/contribution-resource/src/main/resources/META-INF/services/org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor @@ -5,15 +5,15 @@ # 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. +# under the License. -org.apache.tuscany.sca.contribution.resource.impl.ResourceImportProcessor;qname=http://www.osoa.org/xmlns/sca/1.0#import.resource,model=org.apache.tuscany.sca.contribution.resource.ResourceImport -org.apache.tuscany.sca.contribution.resource.impl.ResourceExportProcessor;qname=http://www.osoa.org/xmlns/sca/1.0#export.resource,model=org.apache.tuscany.sca.contribution.resource.ResourceExport +org.apache.tuscany.sca.contribution.resource.impl.ResourceImportProcessor;qname=http://tuscany.apache.org/xmlns/sca/1.1#import.resource,model=org.apache.tuscany.sca.contribution.resource.ResourceImport +org.apache.tuscany.sca.contribution.resource.impl.ResourceExportProcessor;qname=http://tuscany.apache.org/xmlns/sca/1.1#export.resource,model=org.apache.tuscany.sca.contribution.resource.ResourceExport
\ No newline at end of file diff --git a/sca-java-2.x/trunk/modules/contribution-resource/src/test/java/org/apache/tuscany/sca/contribution/resource/impl/ResourceExportProcessorTestCase.java b/sca-java-2.x/trunk/modules/contribution-resource/src/test/java/org/apache/tuscany/sca/contribution/resource/impl/ResourceExportProcessorTestCase.java index ea44cb506b..98bd460add 100644 --- a/sca-java-2.x/trunk/modules/contribution-resource/src/test/java/org/apache/tuscany/sca/contribution/resource/impl/ResourceExportProcessorTestCase.java +++ b/sca-java-2.x/trunk/modules/contribution-resource/src/test/java/org/apache/tuscany/sca/contribution/resource/impl/ResourceExportProcessorTestCase.java @@ -6,81 +6,78 @@ * 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. + * under the License. */ package org.apache.tuscany.sca.contribution.resource.impl; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; import java.io.StringReader; import javax.xml.stream.XMLInputFactory; import javax.xml.stream.XMLStreamReader; -import junit.framework.TestCase; - import org.apache.tuscany.sca.contribution.processor.ExtensibleStAXArtifactProcessor; +import org.apache.tuscany.sca.contribution.processor.ProcessorContext; import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor; import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessorExtensionPoint; import org.apache.tuscany.sca.contribution.resource.ResourceExport; import org.apache.tuscany.sca.core.DefaultExtensionPointRegistry; import org.apache.tuscany.sca.core.ExtensionPointRegistry; -import org.apache.tuscany.sca.core.UtilityExtensionPoint; import org.apache.tuscany.sca.monitor.Monitor; -import org.apache.tuscany.sca.monitor.MonitorFactory; import org.apache.tuscany.sca.monitor.Problem; -import org.apache.tuscany.sca.monitor.impl.DefaultMonitorFactoryImpl; -import org.apache.tuscany.sca.monitor.impl.DefaultMonitorImpl; +import org.junit.BeforeClass; +import org.junit.Test; /** * Test NamespaceExportProcessorTestCase - * + * * @version $Rev$ $Date$ */ -public class ResourceExportProcessorTestCase extends TestCase { +public class ResourceExportProcessorTestCase { private static final String VALID_XML = - "<?xml version=\"1.0\" encoding=\"ASCII\"?>" - + "<export.resource xmlns=\"http://www.osoa.org/xmlns/sca/1.0\" xmlns:ns=\"http://ns\" uri=\"helloworld/HelloWorldService.componentType\"/>"; + "<?xml version=\"1.0\" encoding=\"ASCII\"?>" + + "<export.resource xmlns=\"http://tuscany.apache.org/xmlns/sca/1.1\" xmlns:ns=\"http://ns\" uri=\"helloworld/HelloWorldService.componentType\"/>"; private static final String INVALID_XML = - "<?xml version=\"1.0\" encoding=\"ASCII\"?>" - + "<export.resource xmlns=\"http://www.osoa.org/xmlns/sca/1.0\" xmlns:ns=\"http://ns\"/>"; + "<?xml version=\"1.0\" encoding=\"ASCII\"?>" + + "<export.resource xmlns=\"http://tuscany.apache.org/xmlns/sca/1.1\" xmlns:ns=\"http://ns\"/>"; - private XMLInputFactory inputFactory; - private StAXArtifactProcessor<Object> staxProcessor; - private Monitor monitor; + private static XMLInputFactory inputFactory; + private static StAXArtifactProcessor<Object> staxProcessor; + private static Monitor monitor; + private static ProcessorContext context; - @Override - protected void setUp() throws Exception { + @BeforeClass + public static void setUp() throws Exception { ExtensionPointRegistry extensionPoints = new DefaultExtensionPointRegistry(); + context = new ProcessorContext(extensionPoints); + monitor = context.getMonitor(); inputFactory = XMLInputFactory.newInstance(); - // Create a monitor - UtilityExtensionPoint utilities = extensionPoints.getExtensionPoint(UtilityExtensionPoint.class); - MonitorFactory monitorFactory = new DefaultMonitorFactoryImpl(); - if (monitorFactory != null) { - monitor = monitorFactory.createMonitor(); - utilities.addUtility(monitorFactory); - } + StAXArtifactProcessorExtensionPoint staxProcessors = extensionPoints.getExtensionPoint(StAXArtifactProcessorExtensionPoint.class); - staxProcessor = new ExtensibleStAXArtifactProcessor(staxProcessors, inputFactory, null, null); + staxProcessor = new ExtensibleStAXArtifactProcessor(staxProcessors, inputFactory, null); } /** * Test loading a valid export element from a contribution metadata stream * @throws Exception */ + @Test public void testLoad() throws Exception { XMLStreamReader reader = inputFactory.createXMLStreamReader(new StringReader(VALID_XML)); - ResourceExport resourceExport = (ResourceExport)staxProcessor.read(reader); + ResourceExport resourceExport = (ResourceExport)staxProcessor.read(reader, context); assertEquals("helloworld/HelloWorldService.componentType", resourceExport.getURI()); } @@ -88,6 +85,7 @@ public class ResourceExportProcessorTestCase extends TestCase { * Test loading an INVALID export element from a contribution metadata stream * @throws Exception */ + @Test public void testLoadInvalid() throws Exception { XMLStreamReader reader = inputFactory.createXMLStreamReader(new StringReader(INVALID_XML)); /*try { @@ -96,9 +94,9 @@ public class ResourceExportProcessorTestCase extends TestCase { } catch (ContributionReadException e) { assertTrue(true); }*/ - staxProcessor.read(reader); - Problem problem = ((DefaultMonitorImpl)monitor).getLastLoggedProblem(); + staxProcessor.read(reader, context); + Problem problem = monitor.getLastProblem(); assertNotNull(problem); assertEquals("AttributeURIMissing", problem.getMessageId()); - } + } } diff --git a/sca-java-2.x/trunk/modules/contribution-resource/src/test/java/org/apache/tuscany/sca/contribution/resource/impl/ResourceImportProcessorTestCase.java b/sca-java-2.x/trunk/modules/contribution-resource/src/test/java/org/apache/tuscany/sca/contribution/resource/impl/ResourceImportProcessorTestCase.java index 1ff931c162..4cff032ba2 100644 --- a/sca-java-2.x/trunk/modules/contribution-resource/src/test/java/org/apache/tuscany/sca/contribution/resource/impl/ResourceImportProcessorTestCase.java +++ b/sca-java-2.x/trunk/modules/contribution-resource/src/test/java/org/apache/tuscany/sca/contribution/resource/impl/ResourceImportProcessorTestCase.java @@ -6,82 +6,79 @@ * 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. + * under the License. */ package org.apache.tuscany.sca.contribution.resource.impl; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; import java.io.StringReader; import javax.xml.stream.XMLInputFactory; import javax.xml.stream.XMLStreamReader; -import junit.framework.TestCase; - import org.apache.tuscany.sca.contribution.processor.ExtensibleStAXArtifactProcessor; +import org.apache.tuscany.sca.contribution.processor.ProcessorContext; import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor; import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessorExtensionPoint; import org.apache.tuscany.sca.contribution.resource.ResourceImport; import org.apache.tuscany.sca.core.DefaultExtensionPointRegistry; import org.apache.tuscany.sca.core.ExtensionPointRegistry; -import org.apache.tuscany.sca.core.UtilityExtensionPoint; import org.apache.tuscany.sca.monitor.Monitor; -import org.apache.tuscany.sca.monitor.MonitorFactory; import org.apache.tuscany.sca.monitor.Problem; -import org.apache.tuscany.sca.monitor.impl.DefaultMonitorFactoryImpl; -import org.apache.tuscany.sca.monitor.impl.DefaultMonitorImpl; +import org.junit.BeforeClass; +import org.junit.Test; /** * Test NamespaceImportProcessorTestCase - * + * * @version $Rev$ $Date$ */ -public class ResourceImportProcessorTestCase extends TestCase { +public class ResourceImportProcessorTestCase { private static final String VALID_XML = - "<?xml version=\"1.0\" encoding=\"ASCII\"?>" - + "<import.resource xmlns=\"http://www.osoa.org/xmlns/sca/1.0\" xmlns:ns=\"http://ns\" uri=\"helloworld/HelloWorldService.componentType\" location=\"sca://contributions/001\"/>"; + "<?xml version=\"1.0\" encoding=\"ASCII\"?>" + + "<import.resource xmlns=\"http://tuscany.apache.org/xmlns/sca/1.1\" xmlns:ns=\"http://ns\" uri=\"helloworld/HelloWorldService.componentType\" location=\"sca://contributions/001\"/>"; private static final String INVALID_XML = - "<?xml version=\"1.0\" encoding=\"ASCII\"?>" - + "<import.resource xmlns=\"http://www.osoa.org/xmlns/sca/1.0\" xmlns:ns=\"http://ns\" location=\"sca://contributions/001\"/>"; + "<?xml version=\"1.0\" encoding=\"ASCII\"?>" + + "<import.resource xmlns=\"http://tuscany.apache.org/xmlns/sca/1.1\" xmlns:ns=\"http://ns\" location=\"sca://contributions/001\"/>"; - private XMLInputFactory inputFactory; - private StAXArtifactProcessor<Object> staxProcessor; - private Monitor monitor; + private static XMLInputFactory inputFactory; + private static StAXArtifactProcessor<Object> staxProcessor; + private static Monitor monitor; + private static ProcessorContext context; - @Override - protected void setUp() throws Exception { - ExtensionPointRegistry extensionPoints = new DefaultExtensionPointRegistry(); + @BeforeClass + public static void setUp() throws Exception { + ExtensionPointRegistry extensionPoints = new DefaultExtensionPointRegistry(); + context = new ProcessorContext(extensionPoints); + monitor = context.getMonitor(); inputFactory = XMLInputFactory.newInstance(); - // Create a monitor - UtilityExtensionPoint utilities = extensionPoints.getExtensionPoint(UtilityExtensionPoint.class); - MonitorFactory monitorFactory = new DefaultMonitorFactoryImpl(); - if (monitorFactory != null) { - monitor = monitorFactory.createMonitor(); - utilities.addUtility(monitorFactory); - } + StAXArtifactProcessorExtensionPoint staxProcessors = extensionPoints.getExtensionPoint(StAXArtifactProcessorExtensionPoint.class); - staxProcessor = new ExtensibleStAXArtifactProcessor(staxProcessors, inputFactory, null, null); + staxProcessor = new ExtensibleStAXArtifactProcessor(staxProcessors, inputFactory, null); } /** * Test loading a valid import element from a contribution metadata stream * @throws Exception */ + @Test public void testLoad() throws Exception { XMLStreamReader reader = inputFactory.createXMLStreamReader(new StringReader(VALID_XML)); - ResourceImport namespaceImport = (ResourceImport)staxProcessor.read(reader); + ResourceImport namespaceImport = (ResourceImport)staxProcessor.read(reader, context); assertEquals("helloworld/HelloWorldService.componentType", namespaceImport.getURI()); assertEquals("sca://contributions/001", namespaceImport.getLocation()); } @@ -90,6 +87,7 @@ public class ResourceImportProcessorTestCase extends TestCase { * Test loading a INVALID import element from a contribution metadata stream * @throws Exception */ + @Test public void testLoadInvalid() throws Exception { XMLStreamReader reader = inputFactory.createXMLStreamReader(new StringReader(INVALID_XML)); /*try { @@ -98,9 +96,9 @@ public class ResourceImportProcessorTestCase extends TestCase { } catch (ContributionReadException e) { assertTrue(true); }*/ - staxProcessor.read(reader); - Problem problem = ((DefaultMonitorImpl)monitor).getLastLoggedProblem(); + staxProcessor.read(reader, context); + Problem problem = monitor.getLastProblem(); assertNotNull(problem); assertEquals("AttributeURIMissing", problem.getMessageId()); - } + } } diff --git a/sca-java-2.x/trunk/modules/pom.xml b/sca-java-2.x/trunk/modules/pom.xml index 7954ad2c0b..677f550c14 100644 --- a/sca-java-2.x/trunk/modules/pom.xml +++ b/sca-java-2.x/trunk/modules/pom.xml @@ -64,6 +64,7 @@ <module>common-java</module> <module>common-xml</module> <module>contribution</module> + <module>contribution-resource</module> <module>core</module> <module>core-databinding</module> <module>core-spi</module> |