Author: lresende
Date: Fri Feb 29 16:33:46 2008
New Revision: 632509

URL: http://svn.apache.org/viewvc?rev=632509&view=rev
Log:
Adding ArtifactModelResolve to support resource import/export resolution

Added:
    
incubator/tuscany/java/sca/modules/contribution-resource/src/main/java/org/apache/tuscany/sca/contribution/resource/impl/ArtifactModelResolver.java
   (with props)
    
incubator/tuscany/java/sca/modules/contribution-resource/src/main/java/org/apache/tuscany/sca/contribution/resource/impl/ResourceImportExportListener.java
      - copied, changed from r632467, 
incubator/tuscany/java/sca/modules/contribution-resource/src/main/java/org/apache/tuscany/sca/contribution/resource/impl/ResourceceImportExportListener.java
Removed:
    
incubator/tuscany/java/sca/modules/contribution-resource/src/main/java/org/apache/tuscany/sca/contribution/resource/impl/ResourceceImportExportListener.java

Added: 
incubator/tuscany/java/sca/modules/contribution-resource/src/main/java/org/apache/tuscany/sca/contribution/resource/impl/ArtifactModelResolver.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution-resource/src/main/java/org/apache/tuscany/sca/contribution/resource/impl/ArtifactModelResolver.java?rev=632509&view=auto
==============================================================================
--- 
incubator/tuscany/java/sca/modules/contribution-resource/src/main/java/org/apache/tuscany/sca/contribution/resource/impl/ArtifactModelResolver.java
 (added)
+++ 
incubator/tuscany/java/sca/modules/contribution-resource/src/main/java/org/apache/tuscany/sca/contribution/resource/impl/ArtifactModelResolver.java
 Fri Feb 29 16:33:46 2008
@@ -0,0 +1,87 @@
+/*
+ * 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 java.util.HashMap;
+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.resolver.ModelResolver;
+import org.apache.tuscany.sca.contribution.resource.ResourceImport;
+
+/**
+ * A Model Resolver for ComponentType models.
+ *
+ * @version $Rev$ $Date$
+ */
+public class ArtifactModelResolver implements ModelResolver {
+       private Contribution contribution;
+    private Map<String, Artifact> map = new HashMap<String, Artifact>();
+    
+    public ArtifactModelResolver(Contribution contribution, 
ModelFactoryExtensionPoint modelFactories) {
+       this.contribution = contribution;
+    }
+
+    public void addModel(Object resolved) {
+       Artifact artifact = (Artifact)resolved;
+        map.put(artifact.getURI(), artifact);
+    }
+    
+    public Object removeModel(Object resolved) {
+        return map.remove(((Artifact)resolved).getURI());
+    }
+    
+    public <T> T resolveModel(Class<T> modelClass, T unresolved) {
+
+       //get artifact URI
+        String uri = ((Artifact)unresolved).getURI();
+        if (uri == null) {
+               return (T)unresolved;
+        }
+        
+        //lookup the componentType
+        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) {
+               ResourceImport resourceImport = (ResourceImport)import_;
+               //check the import location against the computed package name 
from the componentType URI
+                if (resourceImport.getURI().equals(uri)) {
+                    // Delegate the resolution to the import resolver
+                    resolved = 
resourceImport.getModelResolver().resolveModel(Artifact.class, 
(Artifact)unresolved);
+                    if (!resolved.isUnresolved()) {
+                        return modelClass.cast(resolved);
+                    }
+                }
+            }
+        }
+
+        return (T)unresolved;
+    }
+    
+}

Propchange: 
incubator/tuscany/java/sca/modules/contribution-resource/src/main/java/org/apache/tuscany/sca/contribution/resource/impl/ArtifactModelResolver.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
incubator/tuscany/java/sca/modules/contribution-resource/src/main/java/org/apache/tuscany/sca/contribution/resource/impl/ArtifactModelResolver.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Copied: 
incubator/tuscany/java/sca/modules/contribution-resource/src/main/java/org/apache/tuscany/sca/contribution/resource/impl/ResourceImportExportListener.java
 (from r632467, 
incubator/tuscany/java/sca/modules/contribution-resource/src/main/java/org/apache/tuscany/sca/contribution/resource/impl/ResourceceImportExportListener.java)
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution-resource/src/main/java/org/apache/tuscany/sca/contribution/resource/impl/ResourceImportExportListener.java?p2=incubator/tuscany/java/sca/modules/contribution-resource/src/main/java/org/apache/tuscany/sca/contribution/resource/impl/ResourceImportExportListener.java&p1=incubator/tuscany/java/sca/modules/contribution-resource/src/main/java/org/apache/tuscany/sca/contribution/resource/impl/ResourceceImportExportListener.java&r1=632467&r2=632509&rev=632509&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/modules/contribution-resource/src/main/java/org/apache/tuscany/sca/contribution/resource/impl/ResourceceImportExportListener.java
 (original)
+++ 
incubator/tuscany/java/sca/modules/contribution-resource/src/main/java/org/apache/tuscany/sca/contribution/resource/impl/ResourceImportExportListener.java
 Fri Feb 29 16:33:46 2008
@@ -19,9 +19,6 @@
 
 package org.apache.tuscany.sca.contribution.resource.impl;
 
-import java.util.ArrayList;
-import java.util.List;
-
 import org.apache.tuscany.sca.contribution.Contribution;
 import org.apache.tuscany.sca.contribution.Export;
 import org.apache.tuscany.sca.contribution.Import;
@@ -38,7 +35,7 @@
  * 
  * @version $Rev$ $Date$
  */
-public class ResourceceImportExportListener implements ContributionListener {
+public class ResourceImportExportListener implements ContributionListener {
 
     /**
      * Initialize the import/export model resolvers
@@ -58,7 +55,6 @@
         for (Import import_: contribution.getImports()) {
             boolean initialized = false;
 
-            
             if (import_ instanceof ResourceImport) {
                 ResourceImport resourceImport = (ResourceImport)import_;
                 
@@ -73,11 +69,6 @@
                                 ResourceExport resourceExport = 
(ResourceExport)export;
                                 if 
(resourceImport.getURI().equals(resourceExport.getURI())) {
                                        
resourceImport.setModelResolver(resourceExport.getModelResolver());
-                                    
-                                    List<Contribution> exportingContributions 
= new ArrayList<Contribution>();
-                                    
exportingContributions.add(targetContribution);
-                                    
import_.setExportContributions(exportingContributions);
-                                    
                                     initialized = true;
                                     break;
                                 }
@@ -91,10 +82,8 @@
             if( !initialized ) {
                 // Use a resolver that will consider all contributions
                 import_.setModelResolver(new 
DefaultImportAllModelResolver(import_, repository.getContributions()));
-                import_.setExportContributions(repository.getContributions());
             }
         }
-
     }
 
     public void contributionRemoved(ContributionRepository repository, 
Contribution contribution) {



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to