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/04/22 07:40:51 UTC

svn commit: r531146 - in /incubator/tuscany/java/sca/modules: contribution-impl/src/main/java/org/apache/tuscany/contribution/service/impl/ contribution-impl/src/test/java/org/apache/tuscany/contribution/services/ contribution/ contribution/src/main/ja...

Author: lresende
Date: Sat Apr 21 22:40:50 2007
New Revision: 531146

URL: http://svn.apache.org/viewvc?view=rev&rev=531146
Log:
Contribution model return list of deployables composites

Added:
    incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/contribution/services/ContributionMetadataLoaderTestCase.java
      - copied, changed from r529749, incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/contribution/services/ContributionLoaderTestCase.java
Removed:
    incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/contribution/services/ContributionLoaderTestCase.java
Modified:
    incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/contribution/service/impl/ContributionMetadataLoaderImpl.java
    incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/contribution/service/impl/ContributionServiceImpl.java
    incubator/tuscany/java/sca/modules/contribution/pom.xml
    incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/contribution/Contribution.java

Modified: incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/contribution/service/impl/ContributionMetadataLoaderImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/contribution/service/impl/ContributionMetadataLoaderImpl.java?view=diff&rev=531146&r1=531145&r2=531146
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/contribution/service/impl/ContributionMetadataLoaderImpl.java (original)
+++ incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/contribution/service/impl/ContributionMetadataLoaderImpl.java Sat Apr 21 22:40:50 2007
@@ -27,6 +27,8 @@
 import javax.xml.stream.XMLStreamException;
 import javax.xml.stream.XMLStreamReader;
 
+import org.apache.tuscany.assembly.Composite;
+import org.apache.tuscany.assembly.impl.CompositeImpl;
 import org.apache.tuscany.contribution.Contribution;
 import org.apache.tuscany.contribution.ContributionImport;
 import org.apache.tuscany.contribution.service.ContributionMetadataLoader;
@@ -40,6 +42,8 @@
 public class ContributionMetadataLoaderImpl implements ContributionMetadataLoader {
     //FIXME use this from constants ?
     private static final String SCA10_NS = "http://www.osoa.org/xmlns/sca/1.0";
+    private static final String TARGET_NAMESPACE = "targetNamespace";
+    private static final String NAME = "composite";
     
     private static final QName CONTRIBUTION = new QName(SCA10_NS, "contribution");
     private static final QName DEPLOYABLE = new QName(SCA10_NS, "deployable");
@@ -80,14 +84,19 @@
                             if (ns == null) {
                                 throw new InvalidValueException("Invalid prefix: " + prefix);
                             }
-                            compositeName = new QName(ns, localPart, prefix);
+                            compositeName = new QName(getString(reader, TARGET_NAMESPACE), localPart, prefix);
                         } else {
                             String prefix = "";
                             String ns = reader.getNamespaceURI();
                             String localPart = name;
-                            compositeName = new QName(ns, localPart, prefix);
+                            compositeName = new QName(getString(reader, TARGET_NAMESPACE), localPart, prefix);
                         }
-                        contribution.getDeployables().add(compositeName);
+
+                        Composite composite = new CompositeImpl();
+                        composite.setName(compositeName);
+                        composite.setUnresolved(true);
+                        
+                        contribution.getDeployables().add(composite);
                     } else if (IMPORT.equals(element)) {
                         String ns = reader.getAttributeValue(null, "namespace");
                         if (ns == null) {
@@ -115,6 +124,49 @@
                     break;
 
             }
+        }
+    }
+    
+    /**
+     * Returns the string value of an attribute.
+     * @param reader
+     * @param name
+     * @return
+     */
+    protected String getString(XMLStreamReader reader, String name) {
+        return reader.getAttributeValue(null, name);
+    }
+
+    /**
+     * Returns the qname value of an attribute.
+     * @param reader
+     * @param name
+     * @return
+     */
+    protected QName getQName(XMLStreamReader reader, String name) {
+        String qname = reader.getAttributeValue(null, name);
+        return getQNameValue(reader, qname);
+    }
+    
+
+    /**
+     * Returns a qname from a string.  
+     * @param reader
+     * @param value
+     * @return
+     */
+    protected QName getQNameValue(XMLStreamReader reader, String value) {
+        if (value != null) {
+            int index = value.indexOf(':');
+            String prefix = index == -1 ? "" : value.substring(0, index);
+            String localName = index == -1 ? value : value.substring(index + 1);
+            String ns = reader.getNamespaceContext().getNamespaceURI(prefix);
+            if (ns == null) {
+                ns = "";
+            }
+            return new QName(ns, localName, prefix);
+        } else {
+            return null;
         }
     }
 

Modified: incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/contribution/service/impl/ContributionServiceImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/contribution/service/impl/ContributionServiceImpl.java?view=diff&rev=531146&r1=531145&r2=531146
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/contribution/service/impl/ContributionServiceImpl.java (original)
+++ incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/contribution/service/impl/ContributionServiceImpl.java Sat Apr 21 22:40:50 2007
@@ -24,6 +24,7 @@
 import java.net.URI;
 import java.net.URL;
 import java.net.URLClassLoader;
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -32,6 +33,7 @@
 import javax.xml.stream.XMLStreamException;
 import javax.xml.stream.XMLStreamReader;
 
+import org.apache.tuscany.assembly.Composite;
 import org.apache.tuscany.contribution.Contribution;
 import org.apache.tuscany.contribution.DeployedArtifact;
 import org.apache.tuscany.contribution.processor.PackageProcessorExtension;
@@ -117,7 +119,7 @@
         InputStream metadataStream = null;
 
         URL[] clUrls = {sourceURL};
-        URLClassLoader cl = new URLClassLoader(clUrls, getClass().getClassLoader());
+        URLClassLoader cl = new URLClassLoader(clUrls);
 
         contributionMetadataURL = cl.getResource(Contribution.SCA_CONTRIBUTION_META);
         generatedContributionMetadataURL = cl.getResource(Contribution.SCA_CONTRIBUTION_GENERATED_META);
@@ -200,7 +202,7 @@
     }
 
     /**
-     * 
+     * Utility/Helper methods for contribution service
      */
 
     /**
@@ -258,6 +260,8 @@
         processResolvePhase(contribution);
         processOptimizationPhase(contribution);
         
+        processDeployables(contribution);
+        
         // store the contribution on the registry
         this.contributionRegistry.put(contribution.getUri(), contribution);
     }
@@ -288,7 +292,16 @@
                 this.artifactProcessor.resolve(artifact.getModelObject(), artifactResolver);
             }
         }
-
+        
+        //resolve deployables from contribution metadata
+        List<Composite> resolvedDeployables = new ArrayList<Composite>();
+        for (Composite deployableComposite : contribution.getDeployables()) {
+            deployableComposite = artifactResolver.resolve(Composite.class, deployableComposite);
+            resolvedDeployables.add(deployableComposite);
+        }
+        
+        contribution.getDeployables().clear();
+        contribution.getDeployables().addAll(resolvedDeployables);
     }
 
     private void processOptimizationPhase(Contribution contribution) throws ContributionException {
@@ -300,4 +313,16 @@
 
     }
 
+    private void processDeployables(Contribution contribution) throws ContributionException {
+        if (contribution.getDeployables() == null || contribution.getDeployables().size() == 0){
+            //Contribution metadata not available with a list of deployables
+            //Promote all composites to deployable
+            for (DeployedArtifact deployedArtifact : contribution.getArtifacts().values()) {
+                Object model = deployedArtifact.getModelObject(); 
+                if (model instanceof Composite) {
+                    contribution.getDeployables().add((Composite) model);
+                }
+            }
+        }
+    }
 }

Copied: incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/contribution/services/ContributionMetadataLoaderTestCase.java (from r529749, incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/contribution/services/ContributionLoaderTestCase.java)
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/contribution/services/ContributionMetadataLoaderTestCase.java?view=diff&rev=531146&p1=incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/contribution/services/ContributionLoaderTestCase.java&r1=529749&p2=incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/contribution/services/ContributionMetadataLoaderTestCase.java&r2=531146
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/contribution/services/ContributionLoaderTestCase.java (original)
+++ incubator/tuscany/java/sca/modules/contribution-impl/src/test/java/org/apache/tuscany/contribution/services/ContributionMetadataLoaderTestCase.java Sat Apr 21 22:40:50 2007
@@ -33,7 +33,7 @@
 /**
  * @version $Rev$ $Date$
  */
-public class ContributionLoaderTestCase extends TestCase {
+public class ContributionMetadataLoaderTestCase extends TestCase {
 
     private static final String VALID_XML =
         "<?xml version=\"1.0\" encoding=\"ASCII\"?>" 

Modified: incubator/tuscany/java/sca/modules/contribution/pom.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution/pom.xml?view=diff&rev=531146&r1=531145&r2=531146
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution/pom.xml (original)
+++ incubator/tuscany/java/sca/modules/contribution/pom.xml Sat Apr 21 22:40:50 2007
@@ -30,6 +30,12 @@
 
     <dependencies>
         <dependency>
+            <groupId>org.apache.tuscany.sca</groupId>
+            <artifactId>tuscany-assembly</artifactId>
+            <version>1.0-incubating-SNAPSHOT</version>
+        </dependency>
+            	
+        <dependency>
             <groupId>stax</groupId>
             <artifactId>stax-api</artifactId>
             <version>1.0.1</version>

Modified: incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/contribution/Contribution.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/contribution/Contribution.java?view=diff&rev=531146&r1=531145&r2=531146
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/contribution/Contribution.java (original)
+++ incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/contribution/Contribution.java Sat Apr 21 22:40:50 2007
@@ -27,7 +27,7 @@
 import java.util.List;
 import java.util.Map;
 
-import javax.xml.namespace.QName;
+import org.apache.tuscany.assembly.Composite;
 
 /**
  * The representation of a deployed contribution
@@ -40,7 +40,7 @@
 
     protected List<String> exports = new ArrayList<String>();
     protected List<ContributionImport> imports = new ArrayList<ContributionImport>();
-    protected List<QName> deployables = new ArrayList<QName>();
+    protected List<Composite> deployables = new ArrayList<Composite>();
     
     /**
      * A list of artifacts in the contribution
@@ -80,7 +80,7 @@
         return imports;
     }
 
-    public List<QName> getDeployables() {
+    public List<Composite> getDeployables() {
         return deployables;
     }
 



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