You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by sl...@apache.org on 2009/07/29 13:40:15 UTC

svn commit: r798860 - in /tuscany/branches/sca-java-1.x/itest/workspace-manager/src/main/java/org/apache/tuscany/sca: artifact/ artifact/xyz/ implementation/xyz/ imprt/xyz/

Author: slaws
Date: Wed Jul 29 11:40:14 2009
New Revision: 798860

URL: http://svn.apache.org/viewvc?rev=798860&view=rev
Log:
TUSCANY-3174 - Extend test to include an URL artifact processor

Added:
    tuscany/branches/sca-java-1.x/itest/workspace-manager/src/main/java/org/apache/tuscany/sca/artifact/
    tuscany/branches/sca-java-1.x/itest/workspace-manager/src/main/java/org/apache/tuscany/sca/artifact/xyz/
    tuscany/branches/sca-java-1.x/itest/workspace-manager/src/main/java/org/apache/tuscany/sca/artifact/xyz/XYZ.java   (with props)
    tuscany/branches/sca-java-1.x/itest/workspace-manager/src/main/java/org/apache/tuscany/sca/artifact/xyz/XYZModelResolver.java   (with props)
    tuscany/branches/sca-java-1.x/itest/workspace-manager/src/main/java/org/apache/tuscany/sca/artifact/xyz/XYZProcessor.java   (with props)
Modified:
    tuscany/branches/sca-java-1.x/itest/workspace-manager/src/main/java/org/apache/tuscany/sca/implementation/xyz/ImplementationXYZProcessor.java
    tuscany/branches/sca-java-1.x/itest/workspace-manager/src/main/java/org/apache/tuscany/sca/imprt/xyz/ImportExportXYZListener.java
    tuscany/branches/sca-java-1.x/itest/workspace-manager/src/main/java/org/apache/tuscany/sca/imprt/xyz/ImportXYZImpl.java

Added: tuscany/branches/sca-java-1.x/itest/workspace-manager/src/main/java/org/apache/tuscany/sca/artifact/xyz/XYZ.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/itest/workspace-manager/src/main/java/org/apache/tuscany/sca/artifact/xyz/XYZ.java?rev=798860&view=auto
==============================================================================
--- tuscany/branches/sca-java-1.x/itest/workspace-manager/src/main/java/org/apache/tuscany/sca/artifact/xyz/XYZ.java (added)
+++ tuscany/branches/sca-java-1.x/itest/workspace-manager/src/main/java/org/apache/tuscany/sca/artifact/xyz/XYZ.java Wed Jul 29 11:40:14 2009
@@ -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;
+    }
+
+
+}

Propchange: tuscany/branches/sca-java-1.x/itest/workspace-manager/src/main/java/org/apache/tuscany/sca/artifact/xyz/XYZ.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tuscany/branches/sca-java-1.x/itest/workspace-manager/src/main/java/org/apache/tuscany/sca/artifact/xyz/XYZ.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: tuscany/branches/sca-java-1.x/itest/workspace-manager/src/main/java/org/apache/tuscany/sca/artifact/xyz/XYZModelResolver.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/itest/workspace-manager/src/main/java/org/apache/tuscany/sca/artifact/xyz/XYZModelResolver.java?rev=798860&view=auto
==============================================================================
--- tuscany/branches/sca-java-1.x/itest/workspace-manager/src/main/java/org/apache/tuscany/sca/artifact/xyz/XYZModelResolver.java (added)
+++ tuscany/branches/sca-java-1.x/itest/workspace-manager/src/main/java/org/apache/tuscany/sca/artifact/xyz/XYZModelResolver.java Wed Jul 29 11:40:14 2009
@@ -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;
+    }
+    
+}

Propchange: tuscany/branches/sca-java-1.x/itest/workspace-manager/src/main/java/org/apache/tuscany/sca/artifact/xyz/XYZModelResolver.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tuscany/branches/sca-java-1.x/itest/workspace-manager/src/main/java/org/apache/tuscany/sca/artifact/xyz/XYZModelResolver.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: tuscany/branches/sca-java-1.x/itest/workspace-manager/src/main/java/org/apache/tuscany/sca/artifact/xyz/XYZProcessor.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/itest/workspace-manager/src/main/java/org/apache/tuscany/sca/artifact/xyz/XYZProcessor.java?rev=798860&view=auto
==============================================================================
--- tuscany/branches/sca-java-1.x/itest/workspace-manager/src/main/java/org/apache/tuscany/sca/artifact/xyz/XYZProcessor.java (added)
+++ tuscany/branches/sca-java-1.x/itest/workspace-manager/src/main/java/org/apache/tuscany/sca/artifact/xyz/XYZProcessor.java Wed Jul 29 11:40:14 2009
@@ -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;
+    }
+
+}

Propchange: tuscany/branches/sca-java-1.x/itest/workspace-manager/src/main/java/org/apache/tuscany/sca/artifact/xyz/XYZProcessor.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tuscany/branches/sca-java-1.x/itest/workspace-manager/src/main/java/org/apache/tuscany/sca/artifact/xyz/XYZProcessor.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: tuscany/branches/sca-java-1.x/itest/workspace-manager/src/main/java/org/apache/tuscany/sca/implementation/xyz/ImplementationXYZProcessor.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/itest/workspace-manager/src/main/java/org/apache/tuscany/sca/implementation/xyz/ImplementationXYZProcessor.java?rev=798860&r1=798859&r2=798860&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.x/itest/workspace-manager/src/main/java/org/apache/tuscany/sca/implementation/xyz/ImplementationXYZProcessor.java (original)
+++ tuscany/branches/sca-java-1.x/itest/workspace-manager/src/main/java/org/apache/tuscany/sca/implementation/xyz/ImplementationXYZProcessor.java Wed Jul 29 11:40:14 2009
@@ -25,6 +25,7 @@
 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 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();

Modified: tuscany/branches/sca-java-1.x/itest/workspace-manager/src/main/java/org/apache/tuscany/sca/imprt/xyz/ImportExportXYZListener.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/itest/workspace-manager/src/main/java/org/apache/tuscany/sca/imprt/xyz/ImportExportXYZListener.java?rev=798860&r1=798859&r2=798860&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.x/itest/workspace-manager/src/main/java/org/apache/tuscany/sca/imprt/xyz/ImportExportXYZListener.java (original)
+++ tuscany/branches/sca-java-1.x/itest/workspace-manager/src/main/java/org/apache/tuscany/sca/imprt/xyz/ImportExportXYZListener.java Wed Jul 29 11:40:14 2009
@@ -45,27 +45,20 @@
         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 ) {

Modified: tuscany/branches/sca-java-1.x/itest/workspace-manager/src/main/java/org/apache/tuscany/sca/imprt/xyz/ImportXYZImpl.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/itest/workspace-manager/src/main/java/org/apache/tuscany/sca/imprt/xyz/ImportXYZImpl.java?rev=798860&r1=798859&r2=798860&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.x/itest/workspace-manager/src/main/java/org/apache/tuscany/sca/imprt/xyz/ImportXYZImpl.java (original)
+++ tuscany/branches/sca-java-1.x/itest/workspace-manager/src/main/java/org/apache/tuscany/sca/imprt/xyz/ImportXYZImpl.java Wed Jul 29 11:40:14 2009
@@ -66,6 +66,9 @@
     }
 
     public boolean match(Export export) {
+        if (export instanceof ExportXYZ){
+            return anAttribute.equals(((ExportXYZ)export).getAnAttribute());
+        }
         return false;
     }