You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by lr...@apache.org on 2007/07/22 03:21:03 UTC

svn commit: r558444 - in /incubator/tuscany/java/sca: itest/contribution-import-export/contrib-composite/src/test/java/hello/ modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ modules/contribution-impl/src/test/j...

Author: lresende
Date: Sat Jul 21 18:21:01 2007
New Revision: 558444

URL: http://svn.apache.org/viewvc?view=rev&rev=558444
Log:
Updates to ModelReseolver extensibility 
   - Passing contribution to resolvers, to access imports
   - Updates to WSDLModelResolver

Modified:
    incubator/tuscany/java/sca/itest/contribution-import-export/contrib-composite/src/test/java/hello/HelloTestCase.java
    incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionServiceImpl.java
    incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/sca/contribution/resolver/ExtensibleArtifactResolverTestCase.java
    incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/resolver/DefaultModelResolver.java
    incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/resolver/ExtensibleModelResolver.java
    incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/xml/WSDLModelResolver.java

Modified: incubator/tuscany/java/sca/itest/contribution-import-export/contrib-composite/src/test/java/hello/HelloTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/contribution-import-export/contrib-composite/src/test/java/hello/HelloTestCase.java?view=diff&rev=558444&r1=558443&r2=558444
==============================================================================
--- incubator/tuscany/java/sca/itest/contribution-import-export/contrib-composite/src/test/java/hello/HelloTestCase.java (original)
+++ incubator/tuscany/java/sca/itest/contribution-import-export/contrib-composite/src/test/java/hello/HelloTestCase.java Sat Jul 21 18:21:01 2007
@@ -20,7 +20,6 @@
 
 import java.io.File;
 import java.io.IOException;
-import java.net.Socket;
 import java.net.URL;
 
 import junit.framework.TestCase;
@@ -31,9 +30,6 @@
 import org.apache.tuscany.sca.contribution.resolver.impl.ModelResolverImpl;
 import org.apache.tuscany.sca.contribution.service.ContributionService;
 import org.apache.tuscany.sca.host.embedded.impl.EmbeddedSCADomain;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
 
 /**
  * Tests that the helloworld server is available

Modified: incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionServiceImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionServiceImpl.java?view=diff&rev=558444&r1=558443&r2=558444
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionServiceImpl.java (original)
+++ incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionServiceImpl.java Sat Jul 21 18:21:01 2007
@@ -141,11 +141,8 @@
         if (sourceURL == null) {
             throw new IllegalArgumentException("Source URL for the contribution is null");
         }
-
-        //FIXME get the right class loader
-        ModelResolver extensibleModelResolver = new ExtensibleModelResolver(this.modelResolverExtensionPoint, getClass().getClassLoader());
         
-        return addContribution(contributionURI, sourceURL, null, extensibleModelResolver, storeInRepository);
+        return addContribution(contributionURI, sourceURL, null, null, storeInRepository);
     }
     
     public Contribution contribute(String contributionURI, URL sourceURL, ModelResolver modelResolver, boolean storeInRepository) throws ContributionException,
@@ -163,10 +160,7 @@
     public Contribution contribute(String contributionURI, URL sourceURL, InputStream input)
             throws ContributionException, IOException {
 
-        //FIXME get the right class loader
-        ModelResolver extensibleModelResolver = new ExtensibleModelResolver(this.modelResolverExtensionPoint, getClass().getClassLoader());
-
-        return addContribution(contributionURI, sourceURL, input, extensibleModelResolver, true);
+        return addContribution(contributionURI, sourceURL, input, null, true);
     }
     
     public Contribution contribute(String contributionURI, URL sourceURL, InputStream input, ModelResolver modelResolver) 
@@ -227,6 +221,7 @@
 
     public void remove(String contribution) throws ContributionException {
         this.contributionRegistry.remove(contribution);
+        //FIXME remove references from contributionByExportedNamespace
     }
 
     public void addDeploymentComposite(Contribution contribution, Composite composite) throws ContributionException {
@@ -275,7 +270,15 @@
             }
         }
 
+        //initialize contribution based on it's metadata if available
         Contribution contribution = initializeContributionMetadata(locationURL, modelResolver);
+        
+        //create contribution model resolver
+        if (modelResolver == null) {
+            modelResolver = new ExtensibleModelResolver(this.modelResolverExtensionPoint, getClass().getClassLoader(), contribution);
+        }
+        
+        //set contribution initial information
         contribution.setURI(contributionURI.toString());
         contribution.setLocation(locationURL.toString());
         contribution.setModelResolver(modelResolver);
@@ -364,7 +367,6 @@
                 // Add the loaded model to the model resolver
                 modelResolver.addModel(model);
             }
-            
         }
     }
 
@@ -404,8 +406,8 @@
 
     @SuppressWarnings("unchecked")
     private Object processResolveImportsPhase(Contribution contribution, DeployedArtifact artifact) throws ContributionException {
-        for(ContributionImport importedArtifact : contribution.getImports()) {
-            String importedContributionURI = importedArtifact.getLocation();
+        for(ContributionImport contributionImport : contribution.getImports()) {
+            String importedContributionURI = contributionImport.getLocation();
             if (importedContributionURI != null && importedContributionURI.length() > 0) {
                 //location provided (contribution uri)
                 Contribution importedContribution = this.getContribution(importedContributionURI);
@@ -414,7 +416,7 @@
                 }
             } else {
                 //look into all the contributions that match exported uri
-                for(Contribution importedContribution : this.contributionByExportedNamespace.get(importedArtifact.getNamespace())) {
+                for(Contribution importedContribution : this.contributionByExportedNamespace.get(contributionImport.getNamespace())) {
                     this.artifactProcessor.resolve(artifact.getModel(), importedContribution.getModelResolver());
                 }
             }
@@ -429,8 +431,8 @@
     private Composite processResolveImportsPhase(Contribution contribution, Composite deployableComposite) throws ContributionException {
         Composite resolvedDeployable = deployableComposite;
         
-        for(ContributionImport importedArtifact : contribution.getImports()) {
-            String importedContributionURI = importedArtifact.getLocation();
+        for(ContributionImport contributionImport : contribution.getImports()) {
+            String importedContributionURI = contributionImport.getLocation();
             if (importedContributionURI != null && importedContributionURI.length() > 0) {
                 //location provided (contribution uri)
                 Contribution importedContribution = this.getContribution(importedContributionURI);
@@ -439,7 +441,7 @@
                 }
             } else {
                 //look into all the contributions that match exported uri
-                for(Contribution importedContribution : this.contributionByExportedNamespace.get(importedArtifact.getNamespace())) {
+                for(Contribution importedContribution : this.contributionByExportedNamespace.get(contributionImport.getNamespace())) {
                     Composite resolvingDeployable = importedContribution.getModelResolver().resolveModel(Composite.class, deployableComposite);
                     if (resolvingDeployable != null && resolvingDeployable.isUnresolved() == false) {
                         resolvedDeployable = resolvingDeployable;

Modified: incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/sca/contribution/resolver/ExtensibleArtifactResolverTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/sca/contribution/resolver/ExtensibleArtifactResolverTestCase.java?view=diff&rev=558444&r1=558443&r2=558444
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/sca/contribution/resolver/ExtensibleArtifactResolverTestCase.java (original)
+++ incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/sca/contribution/resolver/ExtensibleArtifactResolverTestCase.java Sat Jul 21 18:21:01 2007
@@ -41,7 +41,7 @@
         resolverExtensionPoint = new DefaultModelResolverExtensionPoint();
         resolverExtensionPoint.addResolver(Model.class, DefaultModelResolver.class);
         
-        resolver = new ExtensibleModelResolver(resolverExtensionPoint, getClass().getClassLoader());
+        resolver = new ExtensibleModelResolver(resolverExtensionPoint, getClass().getClassLoader(), null);
 
         factory = new ContributionFactoryImpl();
     }

Modified: incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/resolver/DefaultModelResolver.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/resolver/DefaultModelResolver.java?view=diff&rev=558444&r1=558443&r2=558444
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/resolver/DefaultModelResolver.java (original)
+++ incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/resolver/DefaultModelResolver.java Sat Jul 21 18:21:01 2007
@@ -24,8 +24,7 @@
 import java.util.HashMap;
 import java.util.Map;
 
-import org.apache.tuscany.sca.contribution.resolver.ClassReference;
-import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
+import org.apache.tuscany.sca.contribution.Contribution;
 
 /**
  * A default implementation of an artifact resolver, based on a map.
@@ -38,9 +37,11 @@
     private Map<Object, Object> map = new HashMap<Object, Object>();
     
     protected WeakReference<ClassLoader> classLoader;
+    protected Contribution contribution;
     
-    public DefaultModelResolver(ClassLoader classLoader) {
+    public DefaultModelResolver(ClassLoader classLoader, Contribution contribution) {
         this.classLoader = new WeakReference<ClassLoader>(classLoader);
+        this.contribution = contribution;
     }
     
     public <T> T resolveModel(Class<T> modelClass, T unresolved) {

Modified: incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/resolver/ExtensibleModelResolver.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/resolver/ExtensibleModelResolver.java?view=diff&rev=558444&r1=558443&r2=558444
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/resolver/ExtensibleModelResolver.java (original)
+++ incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/resolver/ExtensibleModelResolver.java Sat Jul 21 18:21:01 2007
@@ -23,13 +23,15 @@
 import java.util.HashMap;
 import java.util.Map;
 
+import org.apache.tuscany.sca.contribution.Contribution;
+
 public class ExtensibleModelResolver extends DefaultModelResolver implements ModelResolver {
     private final ModelResolverExtensionPoint resolverRegistry;
     private final Map<Class<?>, ModelResolver> resolverInstances = new HashMap<Class<?>, ModelResolver>();
     
 
-    public ExtensibleModelResolver(ModelResolverExtensionPoint resolverRegistry, ClassLoader cl) {
-        super(cl);
+    public ExtensibleModelResolver(ModelResolverExtensionPoint resolverRegistry, ClassLoader cl, Contribution contribution) {
+        super(cl, contribution);
         this.resolverRegistry = resolverRegistry; 
         initializeModelResolverInstances();
     }
@@ -52,9 +54,9 @@
             
             ModelResolver resolverInstance = null;
             try {
-                Constructor constructor = resolverInstanceType.getConstructor(ClassLoader.class);
+                Constructor constructor = resolverInstanceType.getConstructor(new Class[]{ClassLoader.class, Contribution.class});
                 if (constructor != null) {
-                    resolverInstance = (ModelResolver) constructor.newInstance(this.classLoader.get());
+                    resolverInstance = (ModelResolver) constructor.newInstance(this.classLoader.get(), this.contribution);
                 } else {
                     resolverInstance = (ModelResolver) resolverInstanceType.newInstance();
                 }

Modified: incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/xml/WSDLModelResolver.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/xml/WSDLModelResolver.java?view=diff&rev=558444&r1=558443&r2=558444
==============================================================================
--- incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/xml/WSDLModelResolver.java (original)
+++ incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/xml/WSDLModelResolver.java Sat Jul 21 18:21:01 2007
@@ -19,7 +19,10 @@
 
 package org.apache.tuscany.sca.interfacedef.wsdl.xml;
 
+import org.apache.tuscany.sca.contribution.Contribution;
+import org.apache.tuscany.sca.contribution.ContributionImport;
 import org.apache.tuscany.sca.contribution.resolver.DefaultModelResolver;
+import org.apache.tuscany.sca.interfacedef.wsdl.WSDLDefinition;
 
 /**
  * An Model Resolver for WSDL artifact types.
@@ -28,7 +31,42 @@
  */
 public class WSDLModelResolver extends DefaultModelResolver {
 
-    public WSDLModelResolver(ClassLoader cl) {
-        super(cl);
+    public WSDLModelResolver(ClassLoader cl, Contribution contribution) {
+        super(cl,contribution);
     }
+
+    private WSDLDefinition resolveImportedModel(WSDLDefinition unresolved) {
+        String namespace = unresolved.getNamespace();
+        if (namespace != null && namespace.length() > 0) {
+            for (ContributionImport contributionImport : this.contribution.getImports()) {
+                if(namespace.equalsIgnoreCase(contributionImport.getNamespace())) {
+                    //find who exports it
+                    
+                    //delegate the resolition to the import resolver
+                    contributionImport.getModelResolver().resolveModel(WSDLDefinition.class, unresolved);
+                    //if resolved... then we are done
+                    if(unresolved.isUnresolved() == false) {
+                        break;
+                    }
+                }
+            }
+        }
+        return unresolved;
+    }
+    
+    @Override
+    public <T> T resolveModel(Class<T> modelClass, T unresolved) {
+        return super.resolveModel(modelClass, unresolved);
+        /*
+        WSDLDefinition resolved = (WSDLDefinition) super.resolveModel(modelClass, unresolved);
+
+        if (resolved.isUnresolved()) {
+            resolved = resolveImportedModel(resolved);
+        }
+        
+        return null;
+        */
+    }
+    
+    
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org