Author: jsdelfino
Date: Tue Mar 25 18:32:59 2008
New Revision: 641104

URL: http://svn.apache.org/viewvc?rev=641104&view=rev
Log:
Merged changes from trunk revision r641102. Fix for TUSCANY-2120. Create 
service references dynamically to invoke the node manager and start/stop nodes 
using the correct node URI. Also some minor cleanup, renamed DomainNodeLauncher 
to DomainManagerLauncher and remaining instances of DomainAdmin to 
DomainManager to make naming consistent.

Added:
    
incubator/tuscany/branches/sca-java-1.2/modules/node2-launcher/src/main/java/org/apache/tuscany/sca/node/launcher/DomainManagerLauncher.java
      - copied unchanged from r641102, 
incubator/tuscany/java/sca/modules/node2-launcher/src/main/java/org/apache/tuscany/sca/node/launcher/DomainManagerLauncher.java
    
incubator/tuscany/branches/sca-java-1.2/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/launcher/DomainManagerLauncherBootstrap.java
      - copied unchanged from r641102, 
incubator/tuscany/java/sca/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/launcher/DomainManagerLauncherBootstrap.java
    
incubator/tuscany/branches/sca-java-1.2/modules/workspace-admin/src/main/resources/DomainManager.composite
      - copied unchanged from r641102, 
incubator/tuscany/java/sca/modules/workspace-admin/src/main/resources/DomainManager.composite
Removed:
    
incubator/tuscany/branches/sca-java-1.2/modules/node2-launcher/src/main/java/org/apache/tuscany/sca/node/launcher/DomainNodeLauncher.java
    
incubator/tuscany/branches/sca-java-1.2/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/launcher/DomainAdminLauncherBootstrap.java
    
incubator/tuscany/branches/sca-java-1.2/modules/workspace-admin/src/main/resources/DomainAdmin.composite
Modified:
    
incubator/tuscany/branches/sca-java-1.2/modules/node2-api/src/main/java/org/apache/tuscany/sca/node/SCANode2Factory.java
    
incubator/tuscany/branches/sca-java-1.2/modules/node2-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeFactoryImpl.java
    
incubator/tuscany/branches/sca-java-1.2/modules/node2-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeImpl.java
    
incubator/tuscany/branches/sca-java-1.2/modules/node2-launcher/src/main/java/org/apache/tuscany/sca/node/launcher/NodeMain.java
    incubator/tuscany/branches/sca-java-1.2/modules/workspace-admin/pom.xml
    
incubator/tuscany/branches/sca-java-1.2/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/DeployableCompositeCollectionImpl.java
    
incubator/tuscany/branches/sca-java-1.2/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/DomainAdminUtil.java
    
incubator/tuscany/branches/sca-java-1.2/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/NodeProcessCollectionFacadeImpl.java
    
incubator/tuscany/branches/sca-java-1.2/samples/calculator-distributed/src/main/java/node/LaunchDomain.java
    
incubator/tuscany/branches/sca-java-1.2/samples/calculator-distributed/src/test/java/calculator/CalculatorDistributedTestCase.java
    
incubator/tuscany/branches/sca-java-1.2/tutorial/domain/launch/LaunchTutorialDomainManager.java

Modified: 
incubator/tuscany/branches/sca-java-1.2/modules/node2-api/src/main/java/org/apache/tuscany/sca/node/SCANode2Factory.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.2/modules/node2-api/src/main/java/org/apache/tuscany/sca/node/SCANode2Factory.java?rev=641104&r1=641103&r2=641104&view=diff
==============================================================================
--- 
incubator/tuscany/branches/sca-java-1.2/modules/node2-api/src/main/java/org/apache/tuscany/sca/node/SCANode2Factory.java
 (original)
+++ 
incubator/tuscany/branches/sca-java-1.2/modules/node2-api/src/main/java/org/apache/tuscany/sca/node/SCANode2Factory.java
 Tue Mar 25 18:32:59 2008
@@ -73,4 +73,40 @@
      */
     public abstract SCANode2 createSCANode(String configurationURI) throws 
Node2Exception;
 
+    /**
+     * Creates a new SCA node.
+     * 
+     * @param compositeURI the URI of the composite to use 
+     * @param contributions the URI of the composite to use 
+     * @return a new SCA node.
+     */
+    public abstract SCANode2 createSCANode(String compositeURI, 
SCAContribution... contributions) throws Node2Exception;
+
+    /**
+     * Represents an SCA contribution uri + location.
+     */
+    public final class SCAContribution {
+        private String uri;
+        private String location;
+        
+        /**
+         * Constructs a new SCA contribution.
+         * 
+         * @param uri
+         * @param location
+         */
+        public SCAContribution(String uri, String location) {
+            this.uri = uri;
+            this.location = location;
+        }
+        
+        public String getURI() {
+            return uri;
+        }
+        
+        public String getLocation() {
+            return location;
+        }
+    }
+    
 }

Modified: 
incubator/tuscany/branches/sca-java-1.2/modules/node2-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeFactoryImpl.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.2/modules/node2-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeFactoryImpl.java?rev=641104&r1=641103&r2=641104&view=diff
==============================================================================
--- 
incubator/tuscany/branches/sca-java-1.2/modules/node2-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeFactoryImpl.java
 (original)
+++ 
incubator/tuscany/branches/sca-java-1.2/modules/node2-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeFactoryImpl.java
 Tue Mar 25 18:32:59 2008
@@ -33,7 +33,13 @@
     public NodeFactoryImpl() {
     }
 
+    @Override
     public SCANode2 createSCANode(String configurationURI) throws 
Node2Exception {
         return new NodeImpl(configurationURI);
+    }
+    
+    @Override
+    public SCANode2 createSCANode(String compositeURI, SCAContribution... 
contributions) throws Node2Exception {
+        return new NodeImpl(compositeURI, contributions);
     }
 }

Modified: 
incubator/tuscany/branches/sca-java-1.2/modules/node2-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeImpl.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.2/modules/node2-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeImpl.java?rev=641104&r1=641103&r2=641104&view=diff
==============================================================================
--- 
incubator/tuscany/branches/sca-java-1.2/modules/node2-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeImpl.java
 (original)
+++ 
incubator/tuscany/branches/sca-java-1.2/modules/node2-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeImpl.java
 Tue Mar 25 18:32:59 2008
@@ -38,9 +38,8 @@
 import org.apache.tuscany.sca.assembly.ComponentService;
 import org.apache.tuscany.sca.assembly.Composite;
 import org.apache.tuscany.sca.assembly.CompositeService;
-import org.apache.tuscany.sca.assembly.SCABinding;
-import org.apache.tuscany.sca.assembly.SCABindingFactory;
 import org.apache.tuscany.sca.contribution.Contribution;
+import org.apache.tuscany.sca.contribution.ContributionFactory;
 import org.apache.tuscany.sca.contribution.ModelFactoryExtensionPoint;
 import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor;
 import 
org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessorExtensionPoint;
@@ -48,17 +47,15 @@
 import org.apache.tuscany.sca.core.ExtensionPointRegistry;
 import org.apache.tuscany.sca.core.assembly.ActivationException;
 import org.apache.tuscany.sca.core.assembly.CompositeActivator;
-import org.apache.tuscany.sca.core.context.ServiceReferenceImpl;
 import org.apache.tuscany.sca.host.embedded.impl.ReallySmallRuntime;
 import org.apache.tuscany.sca.implementation.node.ConfiguredNodeImplementation;
-import org.apache.tuscany.sca.interfacedef.InterfaceContract;
-import org.apache.tuscany.sca.interfacedef.java.JavaInterfaceFactory;
+import org.apache.tuscany.sca.implementation.node.NodeImplementationFactory;
 import org.apache.tuscany.sca.node.Node2Exception;
 import org.apache.tuscany.sca.node.SCAClient;
 import org.apache.tuscany.sca.node.SCANode2;
+import org.apache.tuscany.sca.node.SCANode2Factory.SCAContribution;
 import org.apache.tuscany.sca.runtime.RuntimeComponent;
 import org.apache.tuscany.sca.runtime.RuntimeComponentContext;
-import org.apache.tuscany.sca.runtime.RuntimeComponentReference;
 import org.osoa.sca.CallableReference;
 import org.osoa.sca.ServiceReference;
 import org.osoa.sca.ServiceRuntimeException;
@@ -72,12 +69,15 @@
        
     private final static Logger logger = 
Logger.getLogger(NodeImpl.class.getName());
             
-    // The node configuration URI
-    private String configurationURI;
-
+    // The node configuration name, used for logging
+    private String configurationName;
+    
     // The tuscany runtime that does the hard work
     private ReallySmallRuntime runtime;
-    private CompositeActivator activator;
+    private CompositeActivator compositeActivator;
+    private XMLInputFactory inputFactory;
+    private ModelFactoryExtensionPoint modelFactories;
+    private StAXArtifactProcessorExtensionPoint artifactProcessors;
 
     // The composite loaded into this node
     private Composite composite; 
@@ -88,55 +88,117 @@
      * @param configurationURI the URI of the node configuration information.
      * @throws Node2Exception
      */
-    public NodeImpl(String configurationURI) throws Node2Exception {
+    NodeImpl(String configurationURI) throws Node2Exception {
+        configurationName = configurationURI;
+        logger.log(Level.INFO, "Creating node: " + configurationName);         
      
+
         try {
-            init(configurationURI);
+            // Initialize the runtime
+            initRuntime();
+            
+            // Read the node configuration feed
+            StAXArtifactProcessor<ConfiguredNodeImplementation> 
configurationProcessor = 
artifactProcessors.getProcessor(ConfiguredNodeImplementation.class);
+            URL configurationURL = new URL(configurationURI);
+            InputStream is = configurationURL.openStream();
+            XMLStreamReader reader = inputFactory.createXMLStreamReader(is);
+            reader.nextTag();
+            ConfiguredNodeImplementation configuration = 
configurationProcessor.read(reader);
+            is.close();
+            
+            // Resolve contribution URLs
+            for (Contribution contribution: configuration.getContributions()) {
+                URL contributionURL = new URL(configurationURL, 
contribution.getLocation());
+                contribution.setLocation(contributionURL.toString());
+            }
+            
+            // Resolve composite URL
+            URL compositeURL = new URL(configurationURL, 
configuration.getComposite().getURI());
+            configuration.getComposite().setURI(compositeURL.toString());
+
+            // Configure the node
+            configureNode(configuration);
 
         } catch (Exception e) {
             throw new Node2Exception(e);
         }        
     }
     
-    private void init(String configurationURI) throws Exception {
-        logger.log(Level.INFO, "Creating node: " + configurationURI);          
     
+    /** 
+     * Constructs a new SCA node.
+     *  
+     * @param compositeURI
+     * @param contributions
+     * @throws Node2Exception
+     */
+    NodeImpl(String compositeURI, SCAContribution[] contributions) throws 
Node2Exception {
+        configurationName = compositeURI;
+        logger.log(Level.INFO, "Creating node: " + configurationName);         
      
 
-        this.configurationURI = configurationURI;
+        try {
+            // Initialize the runtime
+            initRuntime();
+            
+            // Create a node configuration
+            NodeImplementationFactory nodeImplementationFactory = 
modelFactories.getFactory(NodeImplementationFactory.class);
+            ConfiguredNodeImplementation configuration = 
nodeImplementationFactory.createConfiguredNodeImplementation();
+            
+            // Create composite model
+            AssemblyFactory assemblyFactory = 
modelFactories.getFactory(AssemblyFactory.class);
+            Composite composite = assemblyFactory.createComposite();
+            composite.setURI(compositeURI);
+            composite.setUnresolved(true);
+            
+            // 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);
 
-        // Create a node runtime for the domain contributions to run on
-        ClassLoader contextClassLoader =  
Thread.currentThread().getContextClassLoader();
-        runtime = new ReallySmallRuntime(contextClassLoader);
+        } catch (Exception e) {
+            throw new Node2Exception(e);
+        }        
+    }
+    
+    /**
+     * Initialize the Tuscany runtime.
+     * 
+     * @throws Exception
+     */
+    private void initRuntime() throws Exception {
+
+        // Create a node runtime
+        runtime = new 
ReallySmallRuntime(Thread.currentThread().getContextClassLoader());
         runtime.start();
-        activator = runtime.getCompositeActivator();
         
         // Get the various factories we need
         ExtensionPointRegistry registry = runtime.getExtensionPointRegistry();
-        ModelFactoryExtensionPoint modelFactories = 
registry.getExtensionPoint(ModelFactoryExtensionPoint.class);
-        XMLInputFactory inputFactory = 
modelFactories.getFactory(XMLInputFactory.class);
+        modelFactories = 
registry.getExtensionPoint(ModelFactoryExtensionPoint.class);
+        inputFactory = modelFactories.getFactory(XMLInputFactory.class);
 
         // Create the required artifact processors
-        StAXArtifactProcessorExtensionPoint artifactProcessors = 
registry.getExtensionPoint(StAXArtifactProcessorExtensionPoint.class);
-        StAXArtifactProcessor<ConfiguredNodeImplementation> 
configurationProcessor = 
artifactProcessors.getProcessor(ConfiguredNodeImplementation.class);
-        StAXArtifactProcessor<Composite> compositeProcessor = 
artifactProcessors.getProcessor(Composite.class);
-        
-        // Read the node configuration feed
-        URL configurationURL = new URL(configurationURI);
-        InputStream is = configurationURL.openStream();
-        XMLStreamReader reader = inputFactory.createXMLStreamReader(is);
-        reader.nextTag();
-        ConfiguredNodeImplementation configuration = 
configurationProcessor.read(reader);
-        is.close();
+        artifactProcessors = 
registry.getExtensionPoint(StAXArtifactProcessorExtensionPoint.class);
         
+        // Save the composite activator
+        compositeActivator = runtime.getCompositeActivator();
+    }
+    
+    private void configureNode(ConfiguredNodeImplementation configuration) 
throws Exception {
+
         // Find if any contribution JARs already available locally on the 
classpath
-        Map<String, URL> localContributions = new HashMap<String, URL>();
-        collectJARs(localContributions, contextClassLoader);
+        Map<String, URL> localContributions = localContributions();
 
         // Load the specified contributions
         ContributionService contributionService = 
runtime.getContributionService();
         List<Contribution> contributions = new ArrayList<Contribution>();
         for (Contribution contribution: configuration.getContributions()) {
-            
-            // Build contribution URL
-            URL contributionURL = new URL(configurationURL, 
contribution.getLocation());
+            URL contributionURL = new URL(contribution.getLocation());
 
             // Extract contribution file name
             String file =contributionURL.getPath();
@@ -158,10 +220,11 @@
         }
         
         // Load the specified composite
-        URL compositeURL = new URL(configurationURL, 
configuration.getComposite().getURI());
+        StAXArtifactProcessor<Composite> compositeProcessor = 
artifactProcessors.getProcessor(Composite.class);
+        URL compositeURL = new URL(configuration.getComposite().getURI());
         logger.log(Level.INFO, "Loading composite: " + compositeURL);
-        is = compositeURL.openStream();
-        reader = inputFactory.createXMLStreamReader(is);
+        InputStream is = compositeURL.openStream();
+        XMLStreamReader reader = inputFactory.createXMLStreamReader(is);
         composite = compositeProcessor.read(reader);
         
         // Resolve it within the context of the first contribution
@@ -172,8 +235,8 @@
         // This is temporary to make the activator happy
         AssemblyFactory assemblyFactory = runtime.getAssemblyFactory();
         Composite tempComposite = assemblyFactory.createComposite();
-        tempComposite.setName(new QName(configurationURI, "temp"));
-        tempComposite.setURI(configurationURI);
+        tempComposite.setName(new QName("http://tempuri.org";, "temp"));
+        tempComposite.setURI("http://tempuri.org";);
         
         // Include the node composite in the top-level composite 
         tempComposite.getIncludes().add(composite);
@@ -183,15 +246,15 @@
     }
     
     public void start() throws Node2Exception {
-        logger.log(Level.INFO, "Starting node: " + configurationURI);          
     
+        logger.log(Level.INFO, "Starting node: " + configurationName);         
      
         
         try {
             
             // Activate the composite
-            activator.activate(composite);
+            compositeActivator.activate(composite);
             
             // Start the composite
-            activator.start(composite);
+            compositeActivator.start(composite);
             
         } catch (ActivationException e) {
             throw new Node2Exception(e);
@@ -199,30 +262,21 @@
     }
     
     public void stop() throws Node2Exception {
-        logger.log(Level.INFO, "Stopping node: " + configurationURI);          
     
+        logger.log(Level.INFO, "Stopping node: " + configurationName);         
      
         
         try {
             
             // Stop the composite
-            activator.stop(composite);
+            compositeActivator.stop(composite);
             
             // Deactivate the composite
-            activator.deactivate(composite);
+            compositeActivator.deactivate(composite);
             
         } catch (ActivationException e) {
             throw new Node2Exception(e);
         }
     }
     
-    /**
-     * Returns the extension point registry used by this node.
-     * 
-     * @return
-     */
-    public ExtensionPointRegistry getExtensionPointRegistry() {
-        return runtime.getExtensionPointRegistry();
-    }
-    
     public <B, R extends CallableReference<B>> R cast(B target) throws 
IllegalArgumentException {
         return (R)runtime.getProxyFactory().cast(target);
     }
@@ -236,39 +290,6 @@
         return serviceReference.getService();
     }
 
-    public <B> ServiceReference<B> createServiceReference(Class<B> 
businessInterface, String targetURI) {
-        try {
-          
-            AssemblyFactory assemblyFactory = runtime.getAssemblyFactory();
-            Composite composite = assemblyFactory.createComposite();
-            composite.setName(new QName(configurationURI, "default"));
-            RuntimeComponent component = 
(RuntimeComponent)assemblyFactory.createComponent();
-            component.setName("default");
-            component.setURI("default");
-            
runtime.getCompositeActivator().configureComponentContext(component);
-            composite.getComponents().add(component);
-            RuntimeComponentReference reference = 
(RuntimeComponentReference)assemblyFactory.createComponentReference();
-            reference.setName("default");
-            ModelFactoryExtensionPoint factories =
-                
runtime.getExtensionPointRegistry().getExtensionPoint(ModelFactoryExtensionPoint.class);
-            JavaInterfaceFactory javaInterfaceFactory = 
factories.getFactory(JavaInterfaceFactory.class);
-            InterfaceContract interfaceContract = 
javaInterfaceFactory.createJavaInterfaceContract();
-            
interfaceContract.setInterface(javaInterfaceFactory.createJavaInterface(businessInterface));
-            reference.setInterfaceContract(interfaceContract);
-            component.getReferences().add(reference);
-            reference.setComponent(component);
-            SCABindingFactory scaBindingFactory = 
factories.getFactory(SCABindingFactory.class);
-            SCABinding binding = scaBindingFactory.createSCABinding();
-            
-            binding.setURI(targetURI);
-            reference.getBindings().add(binding);       
-            return new ServiceReferenceImpl<B>(businessInterface, component, 
reference, binding, runtime
-                .getProxyFactory(), runtime.getCompositeActivator());
-        } catch (Exception e) {
-            throw new ServiceRuntimeException(e);
-        }
-    }
-        
     public <B> ServiceReference<B> getServiceReference(Class<B> 
businessInterface, String name) {
         
         // Extract the component name
@@ -310,13 +331,12 @@
                         }
                         componentContext =
                             
((RuntimeComponent)compositeService.getPromotedComponent()).getComponentContext();
-                        return 
componentContext.createSelfReference(businessInterface, compositeService
-                            .getPromotedService());
+                        return 
componentContext.createSelfReference(businessInterface, 
compositeService.getPromotedService());
                     }
                     break;
                 }
             }
-            // No matching service is found
+            // No matching service found
             throw new ServiceRuntimeException("Composite service not found: " 
+ name);
         } else {
             componentContext = 
((RuntimeComponent)component).getComponentContext();
@@ -328,6 +348,26 @@
         }
     }    
 
+    /**
+     * Returns the extension point registry used by this node.
+     * 
+     * @return
+     */
+    public ExtensionPointRegistry getExtensionPointRegistry() {
+        return runtime.getExtensionPointRegistry();
+    }
+
+    /**
+     * Returns contribution JARs available on the classpath.
+     * 
+     * @return
+     */
+    private static Map<String, URL> localContributions () {
+        Map<String, URL> localContributions = new HashMap<String, URL>();
+        collectJARs(localContributions, 
Thread.currentThread().getContextClassLoader());
+        return localContributions;
+    }
+    
     /**
      * Collect JARs on the classpath of a URLClassLoader
      * @param urls

Modified: 
incubator/tuscany/branches/sca-java-1.2/modules/node2-launcher/src/main/java/org/apache/tuscany/sca/node/launcher/NodeMain.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.2/modules/node2-launcher/src/main/java/org/apache/tuscany/sca/node/launcher/NodeMain.java?rev=641104&r1=641103&r2=641104&view=diff
==============================================================================
--- 
incubator/tuscany/branches/sca-java-1.2/modules/node2-launcher/src/main/java/org/apache/tuscany/sca/node/launcher/NodeMain.java
 (original)
+++ 
incubator/tuscany/branches/sca-java-1.2/modules/node2-launcher/src/main/java/org/apache/tuscany/sca/node/launcher/NodeMain.java
 Tue Mar 25 18:32:59 2008
@@ -33,7 +33,7 @@
     public static void main(String[] args) throws Exception {
         if (args.length != 0) {
             if (args[0].equals("domain")) {
-                DomainNodeLauncher.main(args);
+                DomainManagerLauncher.main(args);
             } else {
                 NodeLauncher.main(args);
             }

Modified: 
incubator/tuscany/branches/sca-java-1.2/modules/workspace-admin/pom.xml
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.2/modules/workspace-admin/pom.xml?rev=641104&r1=641103&r2=641104&view=diff
==============================================================================
--- incubator/tuscany/branches/sca-java-1.2/modules/workspace-admin/pom.xml 
(original)
+++ incubator/tuscany/branches/sca-java-1.2/modules/workspace-admin/pom.xml Tue 
Mar 25 18:32:59 2008
@@ -61,6 +61,12 @@
 
         <dependency>
             <groupId>org.apache.tuscany.sca</groupId>
+            <artifactId>tuscany-binding-atom</artifactId>
+            <version>1.2-incubating-SNAPSHOT</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.tuscany.sca</groupId>
             <artifactId>tuscany-workspace-impl</artifactId>
             <version>1.2-incubating-SNAPSHOT</version>
         </dependency>

Modified: 
incubator/tuscany/branches/sca-java-1.2/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/DeployableCompositeCollectionImpl.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.2/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/DeployableCompositeCollectionImpl.java?rev=641104&r1=641103&r2=641104&view=diff
==============================================================================
--- 
incubator/tuscany/branches/sca-java-1.2/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/DeployableCompositeCollectionImpl.java
 (original)
+++ 
incubator/tuscany/branches/sca-java-1.2/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/DeployableCompositeCollectionImpl.java
 Tue Mar 25 18:32:59 2008
@@ -26,6 +26,7 @@
 import static 
org.apache.tuscany.sca.workspace.admin.impl.DomainAdminUtil.compositeTitle;
 import static 
org.apache.tuscany.sca.workspace.admin.impl.DomainAdminUtil.contributionURI;
 import static 
org.apache.tuscany.sca.workspace.admin.impl.DomainAdminUtil.locationURL;
+import static 
org.apache.tuscany.sca.workspace.admin.impl.DomainAdminUtil.newRuntime;
 
 import java.io.IOException;
 import java.io.InputStream;
@@ -143,9 +144,10 @@
     @Init
     public void initialize() throws ParserConfigurationException {
         
+        // Bootstrap a runtime to get a populated registry
         // FIXME Remove this later
-        // Bootstrap a registry
-        ExtensionPointRegistry registry = registry();
+        ReallySmallRuntime runtime = newRuntime();
+        ExtensionPointRegistry registry = runtime.getExtensionPointRegistry();
         
         // Get model factories
         modelFactories = 
registry.getExtensionPoint(ModelFactoryExtensionPoint.class);
@@ -668,22 +670,6 @@
         item.setAlternate(compositeAlternateLink(contributionLocation, 
deployableURI));
         item.setRelated(relatedLink(deployable));
         return item;
-    }
-
-    /**
-     * Temporary instantiation of a dummy runtime to get a registry populated
-     * with all the right things.
-     * 
-     * @return the registry
-     */
-    private static ExtensionPointRegistry registry() {
-        try {
-            ReallySmallRuntime runtime = new 
ReallySmallRuntime(Thread.currentThread().getContextClassLoader());
-            runtime.start();
-            return runtime.getExtensionPointRegistry();
-        } catch (ActivationException e) {
-            throw new ServiceRuntimeException(e);
-        }
     }
 
     /**

Modified: 
incubator/tuscany/branches/sca-java-1.2/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/DomainAdminUtil.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.2/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/DomainAdminUtil.java?rev=641104&r1=641103&r2=641104&view=diff
==============================================================================
--- 
incubator/tuscany/branches/sca-java-1.2/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/DomainAdminUtil.java
 (original)
+++ 
incubator/tuscany/branches/sca-java-1.2/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/DomainAdminUtil.java
 Tue Mar 25 18:32:59 2008
@@ -26,6 +26,24 @@
 
 import javax.xml.namespace.QName;
 
+import org.apache.tuscany.sca.assembly.AssemblyFactory;
+import org.apache.tuscany.sca.assembly.Binding;
+import org.apache.tuscany.sca.assembly.Composite;
+import org.apache.tuscany.sca.contribution.ModelFactoryExtensionPoint;
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
+import org.apache.tuscany.sca.core.assembly.ActivationException;
+import org.apache.tuscany.sca.core.assembly.CompositeActivator;
+import org.apache.tuscany.sca.core.context.ServiceReferenceImpl;
+import org.apache.tuscany.sca.core.invocation.ProxyFactory;
+import org.apache.tuscany.sca.core.invocation.ProxyFactoryExtensionPoint;
+import org.apache.tuscany.sca.host.embedded.impl.ReallySmallRuntime;
+import org.apache.tuscany.sca.interfacedef.InterfaceContract;
+import org.apache.tuscany.sca.interfacedef.java.JavaInterfaceFactory;
+import org.apache.tuscany.sca.runtime.RuntimeComponent;
+import org.apache.tuscany.sca.runtime.RuntimeComponentReference;
+import org.osoa.sca.ServiceReference;
+import org.osoa.sca.ServiceRuntimeException;
+
 /**
  * Common functions and constants used by the admin components.
  *
@@ -172,5 +190,60 @@
             }
         }
         return null;
+    }
+
+    /**
+     * Create a new service reference dynamically.
+     * 
+     * @param <B>
+     * @param businessInterface
+     * @param binding
+     * @param assemblyFactory
+     * @param compositeActivator
+     * @return
+     */
+    static <B> ServiceReference<B> dynamicReference(Class<B> 
businessInterface, Binding binding, AssemblyFactory assemblyFactory, 
CompositeActivator compositeActivator) {
+        try {
+    
+            Composite composite = assemblyFactory.createComposite();
+            composite.setName(new QName("http://tempuri.org";, "default"));
+            RuntimeComponent component = 
(RuntimeComponent)assemblyFactory.createComponent();
+            component.setName("default");
+            component.setURI("default");
+            compositeActivator.configureComponentContext(component);
+            composite.getComponents().add(component);
+            RuntimeComponentReference reference = 
(RuntimeComponentReference)assemblyFactory.createComponentReference();
+            reference.setName("default");
+            JavaInterfaceFactory javaInterfaceFactory = 
compositeActivator.getJavaInterfaceFactory();
+            InterfaceContract interfaceContract = 
javaInterfaceFactory.createJavaInterfaceContract();
+            
interfaceContract.setInterface(javaInterfaceFactory.createJavaInterface(businessInterface));
+            reference.setInterfaceContract(interfaceContract);
+            component.getReferences().add(reference);
+            reference.setComponent(component);
+            reference.getBindings().add(binding);
+    
+            ProxyFactory proxyFactory = compositeActivator.getProxyFactory();
+            return new ServiceReferenceImpl<B>(businessInterface, component, 
reference, binding, proxyFactory, compositeActivator);
+            
+        } catch (Exception e) {
+            throw new ServiceRuntimeException(e);
+        }
+    }
+
+    /**
+     * Temporary instantiation of a dummy Tuscany runtime.
+     * FIXME We need a better way to bootstrap without having to create
+     * a runtime instance at all.
+     * 
+     * @return
+     */
+    static ReallySmallRuntime newRuntime() {
+        try {
+            ReallySmallRuntime runtime = new 
ReallySmallRuntime(Thread.currentThread().getContextClassLoader());
+            runtime.start();
+            return runtime;
+        } catch (ActivationException e) {
+            throw new ServiceRuntimeException(e);
+        }
     }
 }

Modified: 
incubator/tuscany/branches/sca-java-1.2/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/NodeProcessCollectionFacadeImpl.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.2/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/NodeProcessCollectionFacadeImpl.java?rev=641104&r1=641103&r2=641104&view=diff
==============================================================================
--- 
incubator/tuscany/branches/sca-java-1.2/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/NodeProcessCollectionFacadeImpl.java
 (original)
+++ 
incubator/tuscany/branches/sca-java-1.2/modules/workspace-admin/src/main/java/org/apache/tuscany/sca/workspace/admin/impl/NodeProcessCollectionFacadeImpl.java
 Tue Mar 25 18:32:59 2008
@@ -20,6 +20,8 @@
 package org.apache.tuscany.sca.workspace.admin.impl;
 
 import static 
org.apache.tuscany.sca.workspace.admin.impl.DomainAdminUtil.compositeQName;
+import static 
org.apache.tuscany.sca.workspace.admin.impl.DomainAdminUtil.dynamicReference;
+import static 
org.apache.tuscany.sca.workspace.admin.impl.DomainAdminUtil.newRuntime;
 import static 
org.apache.tuscany.sca.workspace.admin.impl.DomainAdminUtil.nodeURI;
 
 import java.net.URI;
@@ -29,11 +31,19 @@
 
 import javax.xml.namespace.QName;
 
+import org.apache.tuscany.sca.assembly.AssemblyFactory;
+import org.apache.tuscany.sca.binding.atom.AtomBinding;
+import org.apache.tuscany.sca.binding.atom.AtomBindingFactory;
+import org.apache.tuscany.sca.contribution.ModelFactoryExtensionPoint;
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
+import org.apache.tuscany.sca.core.assembly.CompositeActivator;
+import org.apache.tuscany.sca.host.embedded.impl.ReallySmallRuntime;
 import org.apache.tuscany.sca.implementation.data.collection.Entry;
 import org.apache.tuscany.sca.implementation.data.collection.Item;
 import org.apache.tuscany.sca.implementation.data.collection.ItemCollection;
 import 
org.apache.tuscany.sca.implementation.data.collection.LocalItemCollection;
 import org.apache.tuscany.sca.implementation.data.collection.NotFoundException;
+import org.osoa.sca.ServiceReference;
 import org.osoa.sca.ServiceRuntimeException;
 import org.osoa.sca.annotations.Init;
 import org.osoa.sca.annotations.Reference;
@@ -54,14 +64,27 @@
     @Reference
     public LocalItemCollection cloudCollection;
     
-    @Reference
-    public ItemCollection processCollection;
+    private AssemblyFactory assemblyFactory;
+    private AtomBindingFactory atomBindingFactory;
+    private CompositeActivator compositeActivator;
 
     /**
      * Initialize the component.
      */
     @Init
     public void initialize() {
+
+        // Get a runtime
+        ReallySmallRuntime runtime = newRuntime();
+        
+        // Get its composite activator
+        compositeActivator = runtime.getCompositeActivator();
+
+        // Get the model factories
+        ExtensionPointRegistry registry = runtime.getExtensionPointRegistry();
+        ModelFactoryExtensionPoint modelFactories = 
registry.getExtensionPoint(ModelFactoryExtensionPoint.class);
+        assemblyFactory = modelFactories.getFactory(AssemblyFactory.class);
+        atomBindingFactory = 
modelFactories.getFactory(AtomBindingFactory.class);
     }
     
     public Entry<String, Item>[] getAll() {
@@ -73,6 +96,7 @@
         // Dispatch to the hosts hosting these nodes
         List<Entry<String, Item>> entries = new 
ArrayList<Entry<String,Item>>();
         for (String host: hosts(nodeEntries)) {
+            ItemCollection processCollection = processCollection(host);
             for (Entry<String, Item> remoteEntry: processCollection.getAll()) {
                 entries.add(remoteEntry);
             }
@@ -89,7 +113,7 @@
         String host = host(key);
         
         // Dispatch the request to that host
-        String uri = "http://"; + host + ":9990/node/processes/" + key;
+        ItemCollection processCollection = processCollection(host);
         return processCollection.get(key);
     }
 
@@ -105,7 +129,7 @@
         }
         
         // Dispatch the request to that host
-        String uri = "http://"; + host + ":9990/node/processes/" + key;
+        ItemCollection processCollection = processCollection(host);
         return processCollection.post(key, item);
     }
 
@@ -120,7 +144,7 @@
         String host = host(key);
         
         // Dispatch the request to that host
-        String uri = "http://"; + host + ":9990/node/processes/" + key;
+        ItemCollection processCollection = processCollection(host);
         processCollection.delete(key);
     }
     
@@ -139,7 +163,7 @@
             }
             
             // Dispatch the request to that host
-            String uri = "http://"; + host + ":9990/node/processes/" + key;
+            ItemCollection processCollection = processCollection(host);
             return processCollection.query(queryString);
             
         } else {
@@ -208,4 +232,18 @@
         }
     }
 
+    /**
+     * Returns a proxy to the process collection service on the specified
+     * host.
+     * 
+     * @param host
+     * @return
+     */
+    private ItemCollection processCollection(String host) {
+        AtomBinding binding = atomBindingFactory.createAtomBinding();
+        binding.setURI("http://"; + host + ":9990/node/processes");
+        ServiceReference<ItemCollection> reference = 
dynamicReference(ItemCollection.class, binding, assemblyFactory, 
compositeActivator);
+        return reference.getService();
+    }
+        
 }

Modified: 
incubator/tuscany/branches/sca-java-1.2/samples/calculator-distributed/src/main/java/node/LaunchDomain.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.2/samples/calculator-distributed/src/main/java/node/LaunchDomain.java?rev=641104&r1=641103&r2=641104&view=diff
==============================================================================
--- 
incubator/tuscany/branches/sca-java-1.2/samples/calculator-distributed/src/main/java/node/LaunchDomain.java
 (original)
+++ 
incubator/tuscany/branches/sca-java-1.2/samples/calculator-distributed/src/main/java/node/LaunchDomain.java
 Tue Mar 25 18:32:59 2008
@@ -18,7 +18,7 @@
  */
 package node;
 
-import org.apache.tuscany.sca.node.launcher.DomainNodeLauncher;
+import org.apache.tuscany.sca.node.launcher.DomainManagerLauncher;
 
 /**
  * This server program that loads a composite to provide simple registry 
function.
@@ -27,7 +27,7 @@
  */
 public class LaunchDomain {
     public static void main(String[] args) throws Exception {
-        DomainNodeLauncher.main(args);
+        DomainManagerLauncher.main(args);
     }
 
 }

Modified: 
incubator/tuscany/branches/sca-java-1.2/samples/calculator-distributed/src/test/java/calculator/CalculatorDistributedTestCase.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.2/samples/calculator-distributed/src/test/java/calculator/CalculatorDistributedTestCase.java?rev=641104&r1=641103&r2=641104&view=diff
==============================================================================
--- 
incubator/tuscany/branches/sca-java-1.2/samples/calculator-distributed/src/test/java/calculator/CalculatorDistributedTestCase.java
 (original)
+++ 
incubator/tuscany/branches/sca-java-1.2/samples/calculator-distributed/src/test/java/calculator/CalculatorDistributedTestCase.java
 Tue Mar 25 18:32:59 2008
@@ -49,7 +49,7 @@
         try {
             System.out.println("Setting up domain");
             
-            SCADomain.newInstance("DomainAdmin.composite");
+            SCADomain.newInstance("DomainManager.composite");
             
             SCANode2Factory nodeFactory = SCANode2Factory.newInstance();
             nodeC  = 
nodeFactory.createSCANode("http://localhost:9990/node-image/NodeC";);

Modified: 
incubator/tuscany/branches/sca-java-1.2/tutorial/domain/launch/LaunchTutorialDomainManager.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/branches/sca-java-1.2/tutorial/domain/launch/LaunchTutorialDomainManager.java?rev=641104&r1=641103&r2=641104&view=diff
==============================================================================
--- 
incubator/tuscany/branches/sca-java-1.2/tutorial/domain/launch/LaunchTutorialDomainManager.java
 (original)
+++ 
incubator/tuscany/branches/sca-java-1.2/tutorial/domain/launch/LaunchTutorialDomainManager.java
 Tue Mar 25 18:32:59 2008
@@ -27,7 +27,7 @@
 public class LaunchTutorialDomainManager {
     
     public static void main(String[] args) throws Exception {
-        org.apache.tuscany.sca.node.launcher.DomainNodeLauncher.main(args);
+        org.apache.tuscany.sca.node.launcher.DomainManagerLauncher.main(args);
     }
 
 }



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

Reply via email to