You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by js...@apache.org on 2008/04/25 19:47:31 UTC

svn commit: r651665 - in /incubator/tuscany/java/sca/modules: implementation-node-runtime/src/main/java/org/apache/tuscany/sca/implementation/node/launcher/ node2-api/src/main/java/org/apache/tuscany/sca/node/ node2-impl/src/main/java/org/apache/tuscan...

Author: jsdelfino
Date: Fri Apr 25 10:47:30 2008
New Revision: 651665

URL: http://svn.apache.org/viewvc?rev=651665&view=rev
Log:
Added a constructor to NodeImpl allowing the content of a composite in addition to its URI, useful if you already have that composite in hand and don't want to read it again from the file.

Modified:
    incubator/tuscany/java/sca/modules/implementation-node-runtime/src/main/java/org/apache/tuscany/sca/implementation/node/launcher/NodeImplementationLauncherBootstrap.java
    incubator/tuscany/java/sca/modules/node2-api/src/main/java/org/apache/tuscany/sca/node/SCANode2Factory.java
    incubator/tuscany/java/sca/modules/node2-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeFactoryImpl.java
    incubator/tuscany/java/sca/modules/node2-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeImpl.java
    incubator/tuscany/java/sca/modules/node2-launcher/src/main/java/org/apache/tuscany/sca/node/launcher/NodeLauncher.java
    incubator/tuscany/java/sca/modules/node2-launcher/src/main/java/org/apache/tuscany/sca/node/launcher/NodeLauncherUtil.java

Modified: incubator/tuscany/java/sca/modules/implementation-node-runtime/src/main/java/org/apache/tuscany/sca/implementation/node/launcher/NodeImplementationLauncherBootstrap.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/implementation-node-runtime/src/main/java/org/apache/tuscany/sca/implementation/node/launcher/NodeImplementationLauncherBootstrap.java?rev=651665&r1=651664&r2=651665&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/implementation-node-runtime/src/main/java/org/apache/tuscany/sca/implementation/node/launcher/NodeImplementationLauncherBootstrap.java (original)
+++ incubator/tuscany/java/sca/modules/implementation-node-runtime/src/main/java/org/apache/tuscany/sca/implementation/node/launcher/NodeImplementationLauncherBootstrap.java Fri Apr 25 10:47:30 2008
@@ -111,6 +111,22 @@
     }
 
     /**
+     * Bootstrap a new SCA node.
+     * 
+     * @param compositeURI
+     * @param uris
+     * @param locations
+     */
+    public NodeImplementationLauncherBootstrap(String compositeURI, String compositeContent, String[] uris, String[] locations) throws Exception {
+        SCANode2Factory nodeFactory = SCANode2Factory.newInstance();
+        SCAContribution[] contributions = new SCAContribution[uris.length];
+        for (int i = 0; i < uris.length; i++) {
+            contributions[i] = new SCAContribution(uris[i], locations[i]);
+        }
+        node = new NodeFacade(nodeFactory.createSCANode(compositeURI, compositeContent, contributions));
+    }
+
+    /**
      * Returns the SCA node.
      * 
      * @return

Modified: incubator/tuscany/java/sca/modules/node2-api/src/main/java/org/apache/tuscany/sca/node/SCANode2Factory.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/node2-api/src/main/java/org/apache/tuscany/sca/node/SCANode2Factory.java?rev=651665&r1=651664&r2=651665&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/node2-api/src/main/java/org/apache/tuscany/sca/node/SCANode2Factory.java (original)
+++ incubator/tuscany/java/sca/modules/node2-api/src/main/java/org/apache/tuscany/sca/node/SCANode2Factory.java Fri Apr 25 10:47:30 2008
@@ -83,6 +83,16 @@
     public abstract SCANode2 createSCANode(String compositeURI, SCAContribution... contributions);
 
     /**
+     * Creates a new SCA node.
+     * 
+     * @param compositeURI the URI of the composite to use 
+     * @param compositeContent the XML content of the composite to use 
+     * @param contributions the URI of the contributions that provides the composites and related artifacts 
+     * @return a new SCA node.
+     */
+    public abstract SCANode2 createSCANode(String compositeURI, String compositeContent, SCAContribution... contributions);
+
+    /**
      * Represents an SCA contribution uri + location.
      */
     public final static class SCAContribution {

Modified: incubator/tuscany/java/sca/modules/node2-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeFactoryImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/node2-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeFactoryImpl.java?rev=651665&r1=651664&r2=651665&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/node2-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeFactoryImpl.java (original)
+++ incubator/tuscany/java/sca/modules/node2-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeFactoryImpl.java Fri Apr 25 10:47:30 2008
@@ -41,4 +41,9 @@
     public SCANode2 createSCANode(String compositeURI, SCAContribution... contributions) {
         return new NodeImpl(compositeURI, contributions);
     }
+
+    @Override
+    public SCANode2 createSCANode(String compositeURI, String compositeContent, SCAContribution... contributions) {
+        return new NodeImpl(compositeURI, compositeContent, contributions);
+    }
 }

Modified: incubator/tuscany/java/sca/modules/node2-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/node2-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeImpl.java?rev=651665&r1=651664&r2=651665&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/node2-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeImpl.java (original)
+++ incubator/tuscany/java/sca/modules/node2-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeImpl.java Fri Apr 25 10:47:30 2008
@@ -19,7 +19,9 @@
 
 package org.apache.tuscany.sca.node.impl;
 
+import java.io.ByteArrayInputStream;
 import java.io.InputStream;
+import java.io.StringReader;
 import java.net.URL;
 import java.net.URLClassLoader;
 import java.util.ArrayList;
@@ -164,6 +166,52 @@
         }        
     }
     
+    /** 
+     * Constructs a new SCA node.
+     *  
+     * @param compositeURI
+     * @param compositeContent
+     * @param contributions
+     */
+    NodeImpl(String compositeURI, String compositeContent, SCAContribution[] contributions) {
+        configurationName = compositeURI;
+        logger.log(Level.INFO, "Creating node: " + configurationName);               
+
+        try {
+            // Initialize the runtime
+            initRuntime();
+            
+            // Create a node configuration
+            NodeImplementationFactory nodeImplementationFactory = modelFactories.getFactory(NodeImplementationFactory.class);
+            ConfiguredNodeImplementation configuration = nodeImplementationFactory.createConfiguredNodeImplementation();
+            
+            // Read the composite model
+            StAXArtifactProcessor<Composite> compositeProcessor = artifactProcessors.getProcessor(Composite.class);
+            URL compositeURL = new URL(compositeURI);
+            logger.log(Level.INFO, "Loading composite: " + compositeURL);
+            InputStream is = new ByteArrayInputStream(compositeContent.getBytes());
+            XMLStreamReader reader = inputFactory.createXMLStreamReader(new StringReader(compositeContent));
+            Composite composite = compositeProcessor.read(reader);
+            configuration.setComposite(composite);
+            
+            // Create contribution models
+            ContributionFactory contributionFactory = modelFactories.getFactory(ContributionFactory.class);
+            for (SCAContribution c: contributions) {
+                Contribution contribution = contributionFactory.createContribution();
+                contribution.setURI(c.getURI());
+                contribution.setLocation(c.getLocation());
+                contribution.setUnresolved(true);
+                configuration.getContributions().add(contribution);
+            }
+
+            // Configure the node
+            configureNode(configuration);
+
+        } catch (Exception e) {
+            throw new ServiceRuntimeException(e);
+        }        
+    }
+    
     /**
      * Initialize the Tuscany runtime.
      * 
@@ -219,11 +267,15 @@
         
         // Load the specified composite
         StAXArtifactProcessor<Composite> compositeProcessor = artifactProcessors.getProcessor(Composite.class);
-        URL compositeURL = new URL(configuration.getComposite().getURI());
-        logger.log(Level.INFO, "Loading composite: " + compositeURL);
-        InputStream is = compositeURL.openStream();
-        XMLStreamReader reader = inputFactory.createXMLStreamReader(is);
-        composite = compositeProcessor.read(reader);
+        if (configuration.getComposite().getName() == null) {
+            URL compositeURL = new URL(configuration.getComposite().getURI());
+            logger.log(Level.INFO, "Loading composite: " + compositeURL);
+            InputStream is = compositeURL.openStream();
+            XMLStreamReader reader = inputFactory.createXMLStreamReader(is);
+            composite = compositeProcessor.read(reader);
+        } else {
+            composite = configuration.getComposite();
+        }
         
         // Resolve it within the context of the first contribution
         Contribution mainContribution = contributions.get(contributions.size()-1);

Modified: incubator/tuscany/java/sca/modules/node2-launcher/src/main/java/org/apache/tuscany/sca/node/launcher/NodeLauncher.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/node2-launcher/src/main/java/org/apache/tuscany/sca/node/launcher/NodeLauncher.java?rev=651665&r1=651664&r2=651665&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/node2-launcher/src/main/java/org/apache/tuscany/sca/node/launcher/NodeLauncher.java (original)
+++ incubator/tuscany/java/sca/modules/node2-launcher/src/main/java/org/apache/tuscany/sca/node/launcher/NodeLauncher.java Fri Apr 25 10:47:30 2008
@@ -57,7 +57,7 @@
      * @throws LauncherException
      */
     public <T> T createNode(String configurationURI) throws LauncherException {
-        return (T)node(configurationURI, null, null);
+        return (T)node(configurationURI, null, null, null);
     }
     
     /**
@@ -96,7 +96,20 @@
      * @throws LauncherException
      */
     public <T> T createNode(String compositeURI, Contribution...contributions) throws LauncherException {
-        return (T)node(null, compositeURI, contributions);
+        return (T)node(null, compositeURI, null, contributions);
+    }
+    
+    /**
+     * Creates a new Node.
+     * 
+     * @param compositeURI
+     * @param compositeContent
+     * @param contributions
+     * @return a new node
+     * @throws LauncherException
+     */
+    public <T> T createNode(String compositeURI, String compositeContent, Contribution...contributions) throws LauncherException {
+        return (T)node(null, compositeURI, compositeContent, contributions);
     }
     
     public static void main(String[] args) throws Exception {

Modified: incubator/tuscany/java/sca/modules/node2-launcher/src/main/java/org/apache/tuscany/sca/node/launcher/NodeLauncherUtil.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/node2-launcher/src/main/java/org/apache/tuscany/sca/node/launcher/NodeLauncherUtil.java?rev=651665&r1=651664&r2=651665&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/node2-launcher/src/main/java/org/apache/tuscany/sca/node/launcher/NodeLauncherUtil.java (original)
+++ incubator/tuscany/java/sca/modules/node2-launcher/src/main/java/org/apache/tuscany/sca/node/launcher/NodeLauncherUtil.java Fri Apr 25 10:47:30 2008
@@ -271,7 +271,7 @@
      * @param contributions
      * @throws LauncherException
      */
-    static Object node(String configurationURI, String compositeURI, NodeLauncher.Contribution[] contributions) throws LauncherException {
+    static Object node(String configurationURI, String compositeURI, String compositeContent, NodeLauncher.Contribution[] contributions) throws LauncherException {
         ClassLoader tccl = Thread.currentThread().getContextClassLoader();
         try {
             // Set up runtime ClassLoader
@@ -296,6 +296,18 @@
                 // Construct the node with a configuration URI
                 bootstrap = bootstrapClass.getConstructor(String.class).newInstance(configurationURI);
                 
+            } else if (compositeContent != null) {
+                
+                // Construct the node with a composite URI and the URIs and
+                // locations of a list of contributions
+                Constructor<?> constructor = bootstrapClass.getConstructor(String.class, String.class, String[].class, String[].class);
+                String[] uris = new String[contributions.length];
+                String[] locations = new String[contributions.length];
+                for (int i = 0; i < contributions.length; i++) {
+                    uris[i] = contributions[i].getURI();
+                    locations[i] = contributions[i].getLocation();
+                }
+                bootstrap = constructor.newInstance(compositeURI, compositeContent, uris, locations);
             } else {
                 
                 // Construct the node with a composite URI and the URIs and