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


Reply via email to