summaryrefslogtreecommitdiffstats
path: root/sca-java-2.x/trunk/modules/contribution-resource/src
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--sca-java-2.x/trunk/modules/contribution-resource/src/main/java/org/apache/tuscany/sca/contribution/resource/ResourceExport.java17
-rw-r--r--sca-java-2.x/trunk/modules/contribution-resource/src/main/java/org/apache/tuscany/sca/contribution/resource/ResourceImport.java21
-rw-r--r--sca-java-2.x/trunk/modules/contribution-resource/src/main/java/org/apache/tuscany/sca/contribution/resource/impl/ArtifactModelResolver.java36
-rw-r--r--sca-java-2.x/trunk/modules/contribution-resource/src/main/java/org/apache/tuscany/sca/contribution/resource/impl/ResourceExportModelResolver.java25
-rw-r--r--sca-java-2.x/trunk/modules/contribution-resource/src/main/java/org/apache/tuscany/sca/contribution/resource/impl/ResourceExportProcessor.java97
-rw-r--r--sca-java-2.x/trunk/modules/contribution-resource/src/main/java/org/apache/tuscany/sca/contribution/resource/impl/ResourceImportExportListener.java97
-rw-r--r--sca-java-2.x/trunk/modules/contribution-resource/src/main/java/org/apache/tuscany/sca/contribution/resource/impl/ResourceImportProcessor.java94
-rw-r--r--sca-java-2.x/trunk/modules/contribution-resource/src/main/resources/META-INF/services/org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor10
-rw-r--r--sca-java-2.x/trunk/modules/contribution-resource/src/test/java/org/apache/tuscany/sca/contribution/resource/impl/ResourceExportProcessorTestCase.java62
-rw-r--r--sca-java-2.x/trunk/modules/contribution-resource/src/test/java/org/apache/tuscany/sca/contribution/resource/impl/ResourceImportProcessorTestCase.java64
10 files changed, 196 insertions, 327 deletions
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());
- }
+ }
}