summaryrefslogtreecommitdiffstats
path: root/branches/sca-java-1.x/itest/workspace-manager/src/main/java/org/apache/tuscany/sca
diff options
context:
space:
mode:
authorslaws <slaws@13f79535-47bb-0310-9956-ffa450edef68>2009-07-29 11:40:14 +0000
committerslaws <slaws@13f79535-47bb-0310-9956-ffa450edef68>2009-07-29 11:40:14 +0000
commit9587b50d6b015fa5aa8a84b27475bee99060d06c (patch)
tree0c8529c8ff1d74aebd221e6e4dbed82d3e874b9c /branches/sca-java-1.x/itest/workspace-manager/src/main/java/org/apache/tuscany/sca
parentaab68ffeb310269802d9a597d313588b46be5342 (diff)
TUSCANY-3174 - Extend test to include an URL artifact processor
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@798860 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'branches/sca-java-1.x/itest/workspace-manager/src/main/java/org/apache/tuscany/sca')
-rw-r--r--branches/sca-java-1.x/itest/workspace-manager/src/main/java/org/apache/tuscany/sca/artifact/xyz/XYZ.java46
-rw-r--r--branches/sca-java-1.x/itest/workspace-manager/src/main/java/org/apache/tuscany/sca/artifact/xyz/XYZModelResolver.java86
-rw-r--r--branches/sca-java-1.x/itest/workspace-manager/src/main/java/org/apache/tuscany/sca/artifact/xyz/XYZProcessor.java95
-rw-r--r--branches/sca-java-1.x/itest/workspace-manager/src/main/java/org/apache/tuscany/sca/implementation/xyz/ImplementationXYZProcessor.java13
-rw-r--r--branches/sca-java-1.x/itest/workspace-manager/src/main/java/org/apache/tuscany/sca/imprt/xyz/ImportExportXYZListener.java29
-rw-r--r--branches/sca-java-1.x/itest/workspace-manager/src/main/java/org/apache/tuscany/sca/imprt/xyz/ImportXYZImpl.java3
6 files changed, 252 insertions, 20 deletions
diff --git a/branches/sca-java-1.x/itest/workspace-manager/src/main/java/org/apache/tuscany/sca/artifact/xyz/XYZ.java b/branches/sca-java-1.x/itest/workspace-manager/src/main/java/org/apache/tuscany/sca/artifact/xyz/XYZ.java
new file mode 100644
index 0000000000..3d12ddfdd2
--- /dev/null
+++ b/branches/sca-java-1.x/itest/workspace-manager/src/main/java/org/apache/tuscany/sca/artifact/xyz/XYZ.java
@@ -0,0 +1,46 @@
+/*
+ * 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.artifact.xyz;
+
+import org.apache.tuscany.sca.assembly.impl.BaseImpl;
+
+
+public class XYZ extends BaseImpl {
+
+ private String anAttribute;
+
+ /**
+ * Get the module name
+ * @return
+ */
+ public String getAnAttribute(){
+ return anAttribute;
+ }
+
+ /**
+ * Sets the module name
+ * @param pojoName
+ */
+ public void setAnAttribute(String anAttribute){
+ this.anAttribute = anAttribute;
+ }
+
+
+}
diff --git a/branches/sca-java-1.x/itest/workspace-manager/src/main/java/org/apache/tuscany/sca/artifact/xyz/XYZModelResolver.java b/branches/sca-java-1.x/itest/workspace-manager/src/main/java/org/apache/tuscany/sca/artifact/xyz/XYZModelResolver.java
new file mode 100644
index 0000000000..ee8c881d22
--- /dev/null
+++ b/branches/sca-java-1.x/itest/workspace-manager/src/main/java/org/apache/tuscany/sca/artifact/xyz/XYZModelResolver.java
@@ -0,0 +1,86 @@
+/*
+ * 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.artifact.xyz;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.xml.namespace.QName;
+
+import org.apache.tuscany.sca.assembly.Composite;
+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.namespace.NamespaceImport;
+import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
+import org.apache.tuscany.sca.imprt.xyz.ImportXYZ;
+
+/**
+ * A Model Resolver for Composite models.
+ *
+ * @version $Rev$ $Date$
+ */
+public class XYZModelResolver implements ModelResolver {
+
+ private Map<String, XYZ> map = new HashMap<String, XYZ>();
+ private Contribution contribution;
+
+ public XYZModelResolver(Contribution contribution, ModelFactoryExtensionPoint modelFactories) {
+ this.contribution = contribution;
+ }
+
+ public void addModel(Object resolved) {
+ XYZ xyz = (XYZ)resolved;
+ map.put(xyz.getAnAttribute(), xyz);
+ }
+
+ public Object removeModel(Object resolved) {
+ return map.remove(((XYZ)resolved).getAnAttribute());
+ }
+
+ public <T> T resolveModel(Class<T> modelClass, T unresolved) {
+
+ XYZ xyz = (XYZ)unresolved;
+
+ XYZ resolved = map.get(xyz.getAnAttribute());
+ if (resolved != null) {
+ return modelClass.cast(resolved);
+ }
+
+ // No definition found, delegate the resolution to the imports
+ for (Import import_ : this.contribution.getImports()) {
+ if (import_ instanceof ImportXYZ) {
+ ImportXYZ importXYZ = (ImportXYZ)import_;
+
+ if (xyz.getAnAttribute().equals(importXYZ.getAnAttribute())) {
+
+ // Delegate the resolution to the import resolver
+ resolved = importXYZ.getModelResolver().resolveModel(XYZ.class, (XYZ)unresolved);
+ if (!resolved.isUnresolved()) {
+ return modelClass.cast(resolved);
+ }
+ }
+ }
+ }
+
+ return (T)unresolved;
+ }
+
+}
diff --git a/branches/sca-java-1.x/itest/workspace-manager/src/main/java/org/apache/tuscany/sca/artifact/xyz/XYZProcessor.java b/branches/sca-java-1.x/itest/workspace-manager/src/main/java/org/apache/tuscany/sca/artifact/xyz/XYZProcessor.java
new file mode 100644
index 0000000000..18b7b3482a
--- /dev/null
+++ b/branches/sca-java-1.x/itest/workspace-manager/src/main/java/org/apache/tuscany/sca/artifact/xyz/XYZProcessor.java
@@ -0,0 +1,95 @@
+/*
+ * 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.artifact.xyz;
+
+import java.net.URI;
+import java.net.URL;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLInputFactory;
+
+import org.apache.tuscany.sca.assembly.builder.impl.ProblemImpl;
+import org.apache.tuscany.sca.contribution.ModelFactoryExtensionPoint;
+import org.apache.tuscany.sca.contribution.processor.URLArtifactProcessor;
+import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
+import org.apache.tuscany.sca.contribution.service.ContributionReadException;
+import org.apache.tuscany.sca.contribution.service.ContributionResolveException;
+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.xsd.XSDFactory;
+import org.apache.tuscany.sca.xsd.XSDefinition;
+
+/**
+ * An ArtifactProcessor for XYZ documents.
+ *
+ * @version $Rev$ $Date$
+ */
+public class XYZProcessor implements URLArtifactProcessor<XYZ> {
+
+ private XSDFactory factory;
+ private XMLInputFactory inputFactory;
+ private Monitor monitor;
+
+ public XYZProcessor(ModelFactoryExtensionPoint modelFactories, Monitor monitor) {
+ this.factory = modelFactories.getFactory(XSDFactory.class);
+ this.inputFactory = modelFactories.getFactory(XMLInputFactory.class);
+ this.monitor = monitor;
+ }
+
+ /**
+ * 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(), "xsd-xml-validation-messages", Severity.ERROR, model, message, ex);
+ monitor.problem(problem);
+ }
+ }
+
+ public XYZ read(URL contributionURL, URI artifactURI, URL artifactURL) throws ContributionReadException {
+ try {
+ XYZ xyz = new XYZ();
+ String attribute = artifactURL.toString();
+ xyz.setAnAttribute(attribute.substring(attribute.lastIndexOf('/') + 1));
+ return xyz;
+ } catch (Exception e) {
+ ContributionReadException ce = new ContributionReadException(e);
+ error("ContributionReadException", artifactURL, ce);
+ throw ce;
+ }
+ }
+
+ public void resolve(XYZ model, ModelResolver resolver) throws ContributionResolveException {
+ }
+
+ public String getArtifactType() {
+ return ".xyz";
+ }
+
+ public Class<XYZ> getModelType() {
+ return XYZ.class;
+ }
+
+}
diff --git a/branches/sca-java-1.x/itest/workspace-manager/src/main/java/org/apache/tuscany/sca/implementation/xyz/ImplementationXYZProcessor.java b/branches/sca-java-1.x/itest/workspace-manager/src/main/java/org/apache/tuscany/sca/implementation/xyz/ImplementationXYZProcessor.java
index 58f62891bf..e70d22a0f6 100644
--- a/branches/sca-java-1.x/itest/workspace-manager/src/main/java/org/apache/tuscany/sca/implementation/xyz/ImplementationXYZProcessor.java
+++ b/branches/sca-java-1.x/itest/workspace-manager/src/main/java/org/apache/tuscany/sca/implementation/xyz/ImplementationXYZProcessor.java
@@ -25,6 +25,7 @@ import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamReader;
import javax.xml.stream.XMLStreamWriter;
+import org.apache.tuscany.sca.artifact.xyz.XYZ;
import org.apache.tuscany.sca.assembly.AssemblyFactory;
import org.apache.tuscany.sca.assembly.ComponentType;
import org.apache.tuscany.sca.assembly.Service;
@@ -97,9 +98,17 @@ public class ImplementationXYZProcessor implements StAXArtifactProcessor<Impleme
public void resolve(ImplementationXYZ implementation, ModelResolver resolver) throws ContributionResolveException {
// Resolve the xyz implementation
-
+ XYZ xyz = new XYZ();
+ xyz.setAnAttribute(implementation.getAnAttribute());
+
// First resolve its module
- //resolver.resolveModel(ClassReference.class, null);
+ XYZ resolved = resolver.resolveModel(XYZ.class, xyz);
+
+ if (resolved == null){
+ return;
+ }
+
+ // use this to check that the import/export association has been created
// Check to see if we have a .componentType file describing the POJO class
ComponentType componentType = assemblyFactory.createComponentType();
diff --git a/branches/sca-java-1.x/itest/workspace-manager/src/main/java/org/apache/tuscany/sca/imprt/xyz/ImportExportXYZListener.java b/branches/sca-java-1.x/itest/workspace-manager/src/main/java/org/apache/tuscany/sca/imprt/xyz/ImportExportXYZListener.java
index 3b0ff19ce9..65b97876aa 100644
--- a/branches/sca-java-1.x/itest/workspace-manager/src/main/java/org/apache/tuscany/sca/imprt/xyz/ImportExportXYZListener.java
+++ b/branches/sca-java-1.x/itest/workspace-manager/src/main/java/org/apache/tuscany/sca/imprt/xyz/ImportExportXYZListener.java
@@ -45,27 +45,20 @@ public class ImportExportXYZListener implements ContributionListener {
for (Import import_: contribution.getImports()) {
boolean initialized = false;
- if (import_ instanceof NamespaceImport) {
- NamespaceImport namespaceImport = (NamespaceImport)import_;
+ if (import_ instanceof ImportXYZ) {
+ ImportXYZ importXYZ = (ImportXYZ)import_;
- // Find a matching contribution
- if (namespaceImport.getLocation() != null) {
- Contribution targetContribution = repository.getContribution(namespaceImport.getLocation());
- if (targetContribution != null) {
-
- // Find a matching contribution export
- for (Export export: targetContribution.getExports()) {
- if (export instanceof NamespaceExport) {
- NamespaceExport namespaceExport = (NamespaceExport)export;
- if (namespaceImport.getNamespace().equals(namespaceExport.getNamespace())) {
- namespaceImport.setModelResolver(namespaceExport.getModelResolver());
- initialized = true;
- break;
- }
- }
+ for(Contribution contrib : repository.getContributions()){
+ for (Export export: contrib.getExports()) {
+ ExportXYZ exportXYZ = (ExportXYZ)export;
+ if (exportXYZ.getAnAttribute().equals(importXYZ.getAnAttribute())) {
+ importXYZ.setModelResolver(exportXYZ.getModelResolver());
+ initialized = true;
+ System.out.println("Matched import to export for - " + exportXYZ.getAnAttribute());
+ break;
}
}
- }
+ }
//if no location was specified, try to resolve with any contribution
if( !initialized ) {
diff --git a/branches/sca-java-1.x/itest/workspace-manager/src/main/java/org/apache/tuscany/sca/imprt/xyz/ImportXYZImpl.java b/branches/sca-java-1.x/itest/workspace-manager/src/main/java/org/apache/tuscany/sca/imprt/xyz/ImportXYZImpl.java
index d9ea8495f3..ef3f0653f3 100644
--- a/branches/sca-java-1.x/itest/workspace-manager/src/main/java/org/apache/tuscany/sca/imprt/xyz/ImportXYZImpl.java
+++ b/branches/sca-java-1.x/itest/workspace-manager/src/main/java/org/apache/tuscany/sca/imprt/xyz/ImportXYZImpl.java
@@ -66,6 +66,9 @@ public class ImportXYZImpl extends ExtensibleImpl implements ImportXYZ {
}
public boolean match(Export export) {
+ if (export instanceof ExportXYZ){
+ return anAttribute.equals(((ExportXYZ)export).getAnAttribute());
+ }
return false;
}