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 2007/08/07 07:49:31 UTC

svn commit: r563395 - in /incubator/tuscany/java/sca: itest/contribution-import-export/export-composite/src/test/java/hello/ itest/contribution-import-export/import-composite/src/test/java/helloworld/ itest/contribution-import-export/import-java/src/te...

Author: jsdelfino
Date: Mon Aug  6 22:49:29 2007
New Revision: 563395

URL: http://svn.apache.org/viewvc?view=rev&rev=563395
Log:
Work in progress. Allow SCADomain and CompositeActivator to handle different composites separately instead of wiring the whole set of composites in the in memory SCADomain together.

Modified:
    incubator/tuscany/java/sca/itest/contribution-import-export/export-composite/src/test/java/hello/HelloTestCase.java
    incubator/tuscany/java/sca/itest/contribution-import-export/import-composite/src/test/java/helloworld/HelloWorldServerTestCase.java
    incubator/tuscany/java/sca/itest/contribution-import-export/import-java/src/test/java/helloworld/HelloWorldServerTestCase.java
    incubator/tuscany/java/sca/itest/contribution-import-export/import-wsdl/src/test/java/helloworld/HelloWorldServerTestCase.java
    incubator/tuscany/java/sca/itest/recursive/src/test/java/composite/LocateServiceEmbeddedSCADomainTestCase.java
    incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/runtime/CompositeActivator.java
    incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/runtime/CompositeActivatorImpl.java
    incubator/tuscany/java/sca/modules/distributed/src/main/java/org/apache/tuscany/sca/distributed/core/DistributedCompositeActivatorImpl.java
    incubator/tuscany/java/sca/modules/distributed/src/main/java/org/apache/tuscany/sca/distributed/host/impl/DistributedSCADomainImpl.java
    incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/DefaultSCADomain.java
    incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/EmbeddedSCADomain.java
    incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/HotUpdatableSCADomain.java
    incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/ReallySmallRuntime.java
    incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/ReallySmallRuntimeBuilder.java
    incubator/tuscany/java/sca/modules/host-embedded/src/test/java/org/apache/tuscany/sca/host/embedded/impl/DefaultSCADomainTestCase.java
    incubator/tuscany/java/sca/modules/host-embedded/src/test/java/org/apache/tuscany/sca/host/embedded/impl/EmbeddedSCADomainTestCase.java

Modified: incubator/tuscany/java/sca/itest/contribution-import-export/export-composite/src/test/java/hello/HelloTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/contribution-import-export/export-composite/src/test/java/hello/HelloTestCase.java?view=diff&rev=563395&r1=563394&r2=563395
==============================================================================
--- incubator/tuscany/java/sca/itest/contribution-import-export/export-composite/src/test/java/hello/HelloTestCase.java (original)
+++ incubator/tuscany/java/sca/itest/contribution-import-export/export-composite/src/test/java/hello/HelloTestCase.java Mon Aug  6 22:49:29 2007
@@ -56,8 +56,6 @@
         Composite consumerComposite = consumerContribution.getDeployables().get(0);
         domain.getDomainCompositeHelper().addComposite(consumerComposite);
         
-        //activate SCA Domain
-        domain.getDomainCompositeHelper().activateDomain();
         //Start Components from my composite
         domain.getDomainCompositeHelper().startComponent(domain.getDomainCompositeHelper().getComponent("HelloServiceComponent"));
     }

Modified: incubator/tuscany/java/sca/itest/contribution-import-export/import-composite/src/test/java/helloworld/HelloWorldServerTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/contribution-import-export/import-composite/src/test/java/helloworld/HelloWorldServerTestCase.java?view=diff&rev=563395&r1=563394&r2=563395
==============================================================================
--- incubator/tuscany/java/sca/itest/contribution-import-export/import-composite/src/test/java/helloworld/HelloWorldServerTestCase.java (original)
+++ incubator/tuscany/java/sca/itest/contribution-import-export/import-composite/src/test/java/helloworld/HelloWorldServerTestCase.java Mon Aug  6 22:49:29 2007
@@ -25,6 +25,7 @@
 
 import junit.framework.TestCase;
 
+import org.apache.tuscany.sca.assembly.Component;
 import org.apache.tuscany.sca.assembly.Composite;
 import org.apache.tuscany.sca.contribution.Contribution;
 import org.apache.tuscany.sca.contribution.service.ContributionService;
@@ -36,6 +37,7 @@
 public class HelloWorldServerTestCase extends TestCase{
     private ClassLoader cl;
     private EmbeddedSCADomain domain;
+    private Contribution helloWorldContribution;
 
     protected void setUp() throws Exception {
         //Create a test embedded SCA domain
@@ -57,18 +59,17 @@
 
         File helloWorldContribLocation = new File("./target/classes/");
         URL helloWorldContribURL = helloWorldContribLocation.toURL();
-        Contribution helloWorldContribution = contributionService.contribute("http://import-export/helloworld", helloWorldContribURL, false);
+        helloWorldContribution = contributionService.contribute("http://import-export/helloworld", helloWorldContribURL, false);
         for (Composite deployable : helloWorldContribution.getDeployables() ) {
             domain.getDomainCompositeHelper().addComposite(deployable);
         }
 
-        //activate SCA Domain
-        domain.getDomainCompositeHelper().activateDomain();
-
         //Start Components from my composite
-        domain.getDomainCompositeHelper().startComponent(domain.getDomainCompositeHelper().getComponent("HelloServiceComponent"));
-        domain.getDomainCompositeHelper().startComponent(domain.getDomainCompositeHelper().getComponent("SourceHelloServiceComponent"));
-        domain.getDomainCompositeHelper().startComponent(domain.getDomainCompositeHelper().getComponent("HelloWorldServiceComponent"));
+        for (Composite deployable : helloWorldContribution.getDeployables() ) {
+            for (Component component: deployable.getComponents()) {
+                domain.getDomainCompositeHelper().startComponent(component);
+            }
+        }
     }
 
 	public void testPing() throws IOException {
@@ -91,7 +92,11 @@
         contributionService.remove("http://import-export/export-composite");
 
         //Stop Components from my composite
-        domain.getDomainCompositeHelper().stopComponent(domain.getDomainCompositeHelper().getComponent("HelloWorldServiceComponent"));
+        for (Composite deployable : helloWorldContribution.getDeployables() ) {
+            for (Component component: deployable.getComponents()) {
+                domain.getDomainCompositeHelper().stopComponent(component);
+            }
+        }
 
         domain.stop();
             domain.close();

Modified: incubator/tuscany/java/sca/itest/contribution-import-export/import-java/src/test/java/helloworld/HelloWorldServerTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/contribution-import-export/import-java/src/test/java/helloworld/HelloWorldServerTestCase.java?view=diff&rev=563395&r1=563394&r2=563395
==============================================================================
--- incubator/tuscany/java/sca/itest/contribution-import-export/import-java/src/test/java/helloworld/HelloWorldServerTestCase.java (original)
+++ incubator/tuscany/java/sca/itest/contribution-import-export/import-java/src/test/java/helloworld/HelloWorldServerTestCase.java Mon Aug  6 22:49:29 2007
@@ -61,9 +61,6 @@
             domain.getDomainCompositeHelper().addComposite(deployable);
         }
 
-        //activate SCA Domain
-        domain.getDomainCompositeHelper().activateDomain();
-
         //Start Components from my composite
         domain.getDomainCompositeHelper().startComponent(domain.getDomainCompositeHelper().getComponent("HelloWorldServiceComponent"));
     }

Modified: incubator/tuscany/java/sca/itest/contribution-import-export/import-wsdl/src/test/java/helloworld/HelloWorldServerTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/contribution-import-export/import-wsdl/src/test/java/helloworld/HelloWorldServerTestCase.java?view=diff&rev=563395&r1=563394&r2=563395
==============================================================================
--- incubator/tuscany/java/sca/itest/contribution-import-export/import-wsdl/src/test/java/helloworld/HelloWorldServerTestCase.java (original)
+++ incubator/tuscany/java/sca/itest/contribution-import-export/import-wsdl/src/test/java/helloworld/HelloWorldServerTestCase.java Mon Aug  6 22:49:29 2007
@@ -62,9 +62,6 @@
             domain.getDomainCompositeHelper().addComposite(deployable);
         }
 
-        //activate SCA Domain
-        domain.getDomainCompositeHelper().activateDomain();
-
         //Start Components from my composite
         domain.getDomainCompositeHelper().startComponent(domain.getDomainCompositeHelper().getComponent("HelloWorldServiceComponent"));
     }

Modified: incubator/tuscany/java/sca/itest/recursive/src/test/java/composite/LocateServiceEmbeddedSCADomainTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/recursive/src/test/java/composite/LocateServiceEmbeddedSCADomainTestCase.java?view=diff&rev=563395&r1=563394&r2=563395
==============================================================================
--- incubator/tuscany/java/sca/itest/recursive/src/test/java/composite/LocateServiceEmbeddedSCADomainTestCase.java (original)
+++ incubator/tuscany/java/sca/itest/recursive/src/test/java/composite/LocateServiceEmbeddedSCADomainTestCase.java Mon Aug  6 22:49:29 2007
@@ -52,9 +52,6 @@
             domain.getDomainCompositeHelper().addComposite(deployable);
         }
 
-        //activate SCA Domain
-        domain.getDomainCompositeHelper().activateDomain();
-
         //Start Components from my composite
         domain.getDomainCompositeHelper().startComponent(domain.getDomainCompositeHelper().getComponent("SourceComponent"));
     }

Modified: incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/runtime/CompositeActivator.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/runtime/CompositeActivator.java?view=diff&rev=563395&r1=563394&r2=563395
==============================================================================
--- incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/runtime/CompositeActivator.java (original)
+++ incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/runtime/CompositeActivator.java Mon Aug  6 22:49:29 2007
@@ -42,20 +42,6 @@
     void deactivate(Composite composite) throws ActivationException;
 
     /**
-     * Start a composite
-     * @deprecated
-     * @param composite
-     */
-    void start(Composite composite) throws ActivationException;
-
-    /**
-     * Stop a composite
-     * @deprecated
-     * @param composite
-     */
-    void stop(Composite composite) throws ActivationException;
-
-    /**
      * Start a component
      * @param component
      */

Modified: incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/runtime/CompositeActivatorImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/runtime/CompositeActivatorImpl.java?view=diff&rev=563395&r1=563394&r2=563395
==============================================================================
--- incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/runtime/CompositeActivatorImpl.java (original)
+++ incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/runtime/CompositeActivatorImpl.java Mon Aug  6 22:49:29 2007
@@ -31,10 +31,6 @@
 import org.apache.tuscany.sca.assembly.Reference;
 import org.apache.tuscany.sca.assembly.SCABindingFactory;
 import org.apache.tuscany.sca.assembly.WireableBinding;
-import org.apache.tuscany.sca.assembly.builder.CompositeBuilderException;
-import org.apache.tuscany.sca.assembly.builder.CompositeBuilderMonitor;
-import org.apache.tuscany.sca.assembly.builder.Problem;
-import org.apache.tuscany.sca.assembly.builder.impl.CompositeBuilderImpl;
 import org.apache.tuscany.sca.core.invocation.InvocationChainImpl;
 import org.apache.tuscany.sca.core.invocation.NonBlockingInterceptor;
 import org.apache.tuscany.sca.interfacedef.IncompatibleInterfaceContractException;
@@ -66,8 +62,6 @@
  */
 public class CompositeActivatorImpl implements CompositeActivator {
 
-    private final AssemblyFactory assemblyFactory;
-    private final SCABindingFactory scaBindingFactory;
     private final InterfaceContractMapper interfaceContractMapper;
     private final ScopeRegistry scopeRegistry;
     private final WorkScheduler workScheduler;
@@ -88,9 +82,6 @@
                                   WorkScheduler workScheduler,
                                   RuntimeWireProcessor wireProcessor,
                                   ProviderFactoryExtensionPoint providerFactories) {
-        super();
-        this.assemblyFactory = assemblyFactory;
-        this.scaBindingFactory = scaBindingFactory;
         this.interfaceContractMapper = interfaceContractMapper;
         this.scopeRegistry = scopeRegistry;
         this.workScheduler = workScheduler;
@@ -104,8 +95,7 @@
      * @param composite
      * @throws IncompatibleInterfaceContractException
      */
-    @SuppressWarnings("unchecked")
-    protected void configureComposite(Composite composite) throws IncompatibleInterfaceContractException {
+    private void createProviders(Composite composite) throws IncompatibleInterfaceContractException {
         for (Component component : composite.getComponents()) {
 
             for (ComponentService service : component.getServices()) {
@@ -131,25 +121,29 @@
 
             Implementation implementation = component.getImplementation();
             if (implementation instanceof Composite) {
-                configureComposite((Composite)implementation);
+                createProviders((Composite)implementation);
             } else if (implementation != null) {
-                ImplementationProviderFactory providerFactory =
-                    (ImplementationProviderFactory)providerFactories.getProviderFactory(implementation.getClass());
-                if (providerFactory != null) {
-                    ImplementationProvider implementationProvider =
-                        providerFactory.createImplementationProvider((RuntimeComponent)component, implementation);
-                    if (implementationProvider != null) {
-                        ((RuntimeComponent)component).setImplementationProvider(implementationProvider);
-                    }
-                } else {
-                    throw new IllegalStateException("Provider factory not found for class: " + implementation
-                        .getClass().getName());
-                }
+                createImplementationProvider((RuntimeComponent)component, implementation);
                 setScopeContainer(component);
             }
         }
     }
 
+    private void createImplementationProvider(RuntimeComponent component, Implementation implementation) {
+        ImplementationProviderFactory providerFactory =
+            (ImplementationProviderFactory)providerFactories.getProviderFactory(implementation.getClass());
+        if (providerFactory != null) {
+            @SuppressWarnings("unchecked")
+            ImplementationProvider implementationProvider =
+                providerFactory.createImplementationProvider(component, implementation);
+            if (implementationProvider != null) {
+                component.setImplementationProvider(implementationProvider);
+            }
+        } else {
+            throw new IllegalStateException("Provider factory not found for class: " + implementation.getClass().getName());
+        }
+    }
+
     private void createServiceBindingProviders(RuntimeComponent component,
                                                RuntimeComponentService service,
                                                List<Binding> bindings) {
@@ -157,6 +151,7 @@
             BindingProviderFactory providerFactory =
                 (BindingProviderFactory)providerFactories.getProviderFactory(binding.getClass());
             if (providerFactory != null) {
+                @SuppressWarnings("unchecked")
                 ServiceBindingProvider bindingProvider =
                     providerFactory.createServiceBindingProvider((RuntimeComponent)component,
                                                                  (RuntimeComponentService)service,
@@ -177,6 +172,7 @@
             BindingProviderFactory providerFactory =
                 (BindingProviderFactory)providerFactories.getProviderFactory(binding.getClass());
             if (providerFactory != null) {
+                @SuppressWarnings("unchecked")
                 ReferenceBindingProvider bindingProvider =
                     providerFactory.createReferenceBindingProvider((RuntimeComponent)component,
                                                                    (RuntimeComponentReference)reference,
@@ -193,7 +189,7 @@
     /**
      * Start a composite
      */
-    protected void startComposite(Composite composite) {
+    private void startComposite(Composite composite) {
         for (Component component : composite.getComponents()) {
             startComponent(component);
         }
@@ -202,7 +198,7 @@
     /**
      * Stop a composite
      */
-    public void stopComposite(Composite composite) {
+    private void stopComposite(Composite composite) {
         for (Component component : composite.getComponents()) {
             stopComponent(component);
 
@@ -213,7 +209,7 @@
     /**
      * Start a component
      */
-    public void startComponent(Component component) {
+    private void startComponent(Component component) {
 
         for (ComponentService service : component.getServices()) {
             for (Binding binding : service.getBindings()) {
@@ -290,7 +286,7 @@
     /**
      * Stop a component
      */
-    public void stopComponent(Component component) {
+    private void stopComponent(Component component) {
         for (ComponentService service : component.getServices()) {
             for (Binding binding : service.getBindings()) {
                 ServiceBindingProvider bindingProvider = ((RuntimeComponentService)service).getBindingProvider(binding);
@@ -352,7 +348,7 @@
      * @param composite
      * @throws IncompatibleInterfaceContractException
      */
-    protected void createRuntimeWires(Composite composite) throws IncompatibleInterfaceContractException {
+    private void createRuntimeWires(Composite composite) throws IncompatibleInterfaceContractException {
         for (Component component : composite.getComponents()) {
             Implementation implementation = component.getImplementation();
             if (implementation instanceof Composite) {
@@ -764,57 +760,16 @@
         runtimeComponent.setScopeContainer(scopeRegistry.getScopeContainer(runtimeComponent));
     }
 
-    protected void buildComposite(Composite composite) throws CompositeBuilderException {
-
-        CompositeBuilderMonitor monitor = new CompositeBuilderMonitor() {
-
-            public void problem(Problem problem) {
-                // Uncommenting the following two lines can be useful to detect
-                // and troubleshoot SCA assembly XML composite configuration
-                // problems.
-
-                System.out.println("Composite assembly problem: " + problem.getMessage());
-            }
-        };
-
-        CompositeBuilderImpl builder =
-            new CompositeBuilderImpl(assemblyFactory, scaBindingFactory, interfaceContractMapper, monitor);
-
-        builder.build(composite);
-
-        // if (!problems.isEmpty()) {
-        // throw new VariantRuntimeException(new RuntimeException("Problems in
-        // the composite..."));
-        // }
-    }
-
     public void activate(Composite composite) throws ActivationException {
         try {
-            buildComposite(composite);
-            configureComposite(composite);
+            createProviders(composite);
             createRuntimeWires(composite);
         } catch (Exception e) {
             throw new ActivationException(e);
         }
     }
-
+    
     public void deactivate(Composite composite) throws ActivationException {
-    }
-
-    public void start(Composite composite) throws ActivationException {
-        try {
-            startComposite(composite);
-        } catch (Exception e) {
-            throw new ActivationException(e);
-        }
-    }
-
-    public void stop(Composite composite) throws ActivationException {
-        try {
-            stopComposite(composite);
-        } catch (Exception e) {
-            throw new ActivationException(e);
-        }
     }
 
     public void start(Component component) throws ActivationException {

Modified: incubator/tuscany/java/sca/modules/distributed/src/main/java/org/apache/tuscany/sca/distributed/core/DistributedCompositeActivatorImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/distributed/src/main/java/org/apache/tuscany/sca/distributed/core/DistributedCompositeActivatorImpl.java?view=diff&rev=563395&r1=563394&r2=563395
==============================================================================
--- incubator/tuscany/java/sca/modules/distributed/src/main/java/org/apache/tuscany/sca/distributed/core/DistributedCompositeActivatorImpl.java (original)
+++ incubator/tuscany/java/sca/modules/distributed/src/main/java/org/apache/tuscany/sca/distributed/core/DistributedCompositeActivatorImpl.java Mon Aug  6 22:49:29 2007
@@ -30,6 +30,7 @@
 import org.apache.tuscany.sca.assembly.SCABinding;
 import org.apache.tuscany.sca.assembly.SCABindingFactory;
 import org.apache.tuscany.sca.assembly.builder.CompositeBuilderException;
+import org.apache.tuscany.sca.core.runtime.ActivationException;
 import org.apache.tuscany.sca.core.runtime.CompositeActivatorImpl;
 import org.apache.tuscany.sca.distributed.assembly.DistributedSCABinding;
 import org.apache.tuscany.sca.distributed.host.DistributedSCADomain;
@@ -89,7 +90,7 @@
         }      
         
     }
-
+    
     /**
      * Take the composite and use the super class to build it. Once done 
      * work out which components run in this node and create appropriate
@@ -98,14 +99,14 @@
      * 
      * @param composite
      */
-    protected void buildComposite(Composite composite) throws CompositeBuilderException {
-        super.buildComposite(composite);
-        
-        // now we have a built composite look at which SCABindings
-        // need updating based on which components are present
-        // in this node
-        assignComponentsToNode(composite);
+    public void activate(Composite composite) throws ActivationException {
+        try {
+            assignComponentsToNode(composite);
+        } catch (CompositeBuilderException e) {
+            throw new ActivationException(e);
+        }
 
+        super.activate(composite);
     }
     
     /**

Modified: incubator/tuscany/java/sca/modules/distributed/src/main/java/org/apache/tuscany/sca/distributed/host/impl/DistributedSCADomainImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/distributed/src/main/java/org/apache/tuscany/sca/distributed/host/impl/DistributedSCADomainImpl.java?view=diff&rev=563395&r1=563394&r2=563395
==============================================================================
--- incubator/tuscany/java/sca/modules/distributed/src/main/java/org/apache/tuscany/sca/distributed/host/impl/DistributedSCADomainImpl.java (original)
+++ incubator/tuscany/java/sca/modules/distributed/src/main/java/org/apache/tuscany/sca/distributed/host/impl/DistributedSCADomainImpl.java Mon Aug  6 22:49:29 2007
@@ -100,28 +100,6 @@
         }
         
         /**
-         * Start a composite
-         * @deprecated
-         * @param composite
-         * @throws ActivationException
-         */
-        public void startComposite(Composite composite) throws ActivationException {
-            CompositeActivator compositeActivator = runtime.getCompositeActivator();
-            compositeActivator.start(composite);
-        }
-        
-        /**
-         * Stop a composite
-         * @deprecated
-         * @param composite
-         * @throws ActivationException
-         */
-        public void stopComposite(Composite composite) throws ActivationException {
-            CompositeActivator compositeActivator = runtime.getCompositeActivator();
-            compositeActivator.stop(composite);
-        }
-
-        /**
          * Get a reference to a component by name
          * @param componentName
          * @return

Modified: incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/DefaultSCADomain.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/DefaultSCADomain.java?view=diff&rev=563395&r1=563394&r2=563395
==============================================================================
--- incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/DefaultSCADomain.java (original)
+++ incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/DefaultSCADomain.java Mon Aug  6 22:49:29 2007
@@ -38,6 +38,8 @@
 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.builder.CompositeBuilder;
+import org.apache.tuscany.sca.assembly.builder.CompositeBuilderException;
 import org.apache.tuscany.sca.contribution.Contribution;
 import org.apache.tuscany.sca.contribution.DeployedArtifact;
 import org.apache.tuscany.sca.contribution.service.ContributionException;
@@ -148,20 +150,41 @@
             }
             
         }
+        
+        // Build the SCA composites
+        CompositeBuilder compositeBuilder = runtime.getCompositeBuilder();
+        for (Composite composite: domainComposite.getIncludes()) {
+            try {
+                compositeBuilder.build(composite);
+            } catch (CompositeBuilderException e) {
+                throw new ServiceRuntimeException(e);
+            }
+        }
 
-
-        // Activate and start the SCA domain composite
+        // Activate and start composites
         CompositeActivator compositeActivator = runtime.getCompositeActivator();
-        try {
-            compositeActivator.activate(domainComposite);
-            compositeActivator.start(domainComposite);
-        } catch (ActivationException e) {
-            throw new ServiceRuntimeException(e);
+        for (Composite composite: domainComposite.getIncludes()) {
+            try {
+                compositeActivator.activate(composite);
+            } catch (ActivationException e) {
+                throw new ServiceRuntimeException(e);
+            }
+        }
+        for (Composite composite: domainComposite.getIncludes()) {
+            try {
+                for (Component component : composite.getComponents()) {
+                    compositeActivator.start(component);
+                }
+            } catch (ActivationException e) {
+                throw new ServiceRuntimeException(e);
+            }
         }
 
         // Index the top level components
-        for (Component component : domainComposite.getComponents()) {
-            components.put(component.getName(), component);
+        for (Composite composite: domainComposite.getIncludes()) {
+            for (Component component : composite.getComponents()) {
+                components.put(component.getName(), component);
+            }
         }
         
         this.componentManager = new DefaultSCADomainComponentManager(this);
@@ -172,6 +195,25 @@
         
         super.close();
 
+        // Stop and deactivate composites
+        CompositeActivator compositeActivator = runtime.getCompositeActivator();
+        for (Composite composite: domainComposite.getIncludes()) {
+            try {
+                compositeActivator.deactivate(composite);
+            } catch (ActivationException e) {
+                throw new ServiceRuntimeException(e);
+            }
+        }
+        for (Composite composite: domainComposite.getIncludes()) {
+            try {
+                for (Component component : composite.getComponents()) {
+                    compositeActivator.stop(component);
+                }
+            } catch (ActivationException e) {
+                throw new ServiceRuntimeException(e);
+            }
+        }
+
         // Remove the contribution from the in-memory repository
         ContributionService contributionService = runtime.getContributionService();
         try {
@@ -180,15 +222,6 @@
             throw new ServiceRuntimeException(e);
         }
         
-        // Stop the SCA domain composite
-        CompositeActivator compositeActivator = runtime.getCompositeActivator();
-        try {
-            compositeActivator.stop(domainComposite);
-        } catch (ActivationException e) {
-            throw new ServiceRuntimeException(e);
-
-        }
-
         // Stop the runtime
         try {
             runtime.stop();

Modified: incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/EmbeddedSCADomain.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/EmbeddedSCADomain.java?view=diff&rev=563395&r1=563394&r2=563395
==============================================================================
--- incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/EmbeddedSCADomain.java (original)
+++ incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/EmbeddedSCADomain.java Mon Aug  6 22:49:29 2007
@@ -33,6 +33,8 @@
 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.builder.CompositeBuilder;
+import org.apache.tuscany.sca.assembly.builder.CompositeBuilderException;
 import org.apache.tuscany.sca.contribution.service.ContributionService;
 import org.apache.tuscany.sca.core.runtime.ActivationException;
 import org.apache.tuscany.sca.core.runtime.CompositeActivator;
@@ -67,11 +69,17 @@
          */
         public Composite addComposite(Composite composite) throws ActivationException {
             domainComposite.getIncludes().add(composite);
-            //CompositeActivator compositeActivator = runtime.getCompositeActivator();
-            //compositeActivator.activate(composite);
-            //for (Component component : composite.getComponents()) {
-            //    components.put(component.getName(), component);
-            //}
+            CompositeBuilder compositeBuilder = runtime.getCompositeBuilder();
+            try {
+                compositeBuilder.build(composite);
+            } catch (CompositeBuilderException e) {
+                throw new ActivationException(e);
+            }
+            CompositeActivator compositeActivator = runtime.getCompositeActivator();
+            compositeActivator.activate(composite);
+            for (Component component : composite.getComponents()) {
+                components.put(component.getName(), component);
+            }
             return composite;
         }
 
@@ -89,28 +97,6 @@
             }
         }
         
-        /**
-         * Start a composite
-         * @deprecated
-         * @param composite
-         * @throws ActivationException
-         */
-        public void startComposite(Composite composite) throws ActivationException {
-            CompositeActivator compositeActivator = runtime.getCompositeActivator();
-            compositeActivator.start(composite);
-        }
-        
-        /**
-         * Stop a composite
-         * @deprecated
-         * @param composite
-         * @throws ActivationException
-         */
-        public void stopComposite(Composite composite) throws ActivationException {
-            CompositeActivator compositeActivator = runtime.getCompositeActivator();
-            compositeActivator.stop(composite);
-        }
-
         public Set<String> getComponentNames(){
             return  Collections.unmodifiableSet(components.keySet());
         }
@@ -153,19 +139,6 @@
             compositeActivator.stop(component);
             componentManager.notifyComponentStopped(component.getName());
         }        
-        
-        /**
-         * Activate SCA Domain
-         * @throws ActivationException
-         */
-        public void activateDomain() throws ActivationException {
-            CompositeActivator compositeActivator = runtime.getCompositeActivator();
-            compositeActivator.activate(domainComposite);
-            for (Component component : domainComposite.getComponents()) {
-                components.put(component.getName(), component);
-            }
-
-        }
     }
 
     /**

Modified: incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/HotUpdatableSCADomain.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/HotUpdatableSCADomain.java?view=diff&rev=563395&r1=563394&r2=563395
==============================================================================
--- incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/HotUpdatableSCADomain.java (original)
+++ incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/HotUpdatableSCADomain.java Mon Aug  6 22:49:29 2007
@@ -32,6 +32,7 @@
 import java.util.HashMap;
 import java.util.List;
 
+import org.apache.tuscany.sca.assembly.Component;
 import org.apache.tuscany.sca.assembly.Composite;
 import org.apache.tuscany.sca.contribution.resolver.impl.ModelResolverImpl;
 import org.apache.tuscany.sca.contribution.service.ContributionService;
@@ -193,13 +194,13 @@
                 }
             }
 
-            domainHelper.activateDomain();
-
-//            for (Object m : modelResolver.getModels()) {
-//                if (m instanceof Composite) {
-//                    domainHelper.startComposite((Composite)m);
-//                }
-//            }
+            for (Object m : modelResolver.getModels()) {
+                if (m instanceof Composite) {
+                    for (Component component: ((Composite)m).getComponents()) {
+                        domainHelper.startComponent(component);
+                    }
+                }
+            }
 
             for (String componentName : domainHelper.getComponentNames()) {
                 domainHelper.startComponent(domainHelper.getComponent(componentName));

Modified: incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/ReallySmallRuntime.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/ReallySmallRuntime.java?view=diff&rev=563395&r1=563394&r2=563395
==============================================================================
--- incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/ReallySmallRuntime.java (original)
+++ incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/ReallySmallRuntime.java Mon Aug  6 22:49:29 2007
@@ -30,6 +30,7 @@
 import org.apache.tuscany.sca.assembly.AssemblyFactory;
 import org.apache.tuscany.sca.assembly.DefaultSCABindingFactory;
 import org.apache.tuscany.sca.assembly.SCABindingFactory;
+import org.apache.tuscany.sca.assembly.builder.CompositeBuilder;
 import org.apache.tuscany.sca.assembly.xml.Constants;
 import org.apache.tuscany.sca.context.ContextFactoryExtensionPoint;
 import org.apache.tuscany.sca.context.DefaultContextFactoryExtensionPoint;
@@ -72,6 +73,7 @@
     private AssemblyFactory assemblyFactory;
     private ContributionService contributionService;
     private CompositeActivator compositeActivator;
+    private CompositeBuilder compositeBuilder;
     private ThreadPoolWorkManager workManager;
     private ScopeRegistry scopeRegistry;
 
@@ -125,6 +127,11 @@
 
         // Create the ScopeRegistry
         scopeRegistry = ReallySmallRuntimeBuilder.createScopeRegistry(registry);
+        
+        // Create a composite builder
+        compositeBuilder = ReallySmallRuntimeBuilder.createCompositeBuilder(assemblyFactory,
+                                                                            scaBindingFactory,
+                                                                            mapper);
 
         // Create a composite activator
         compositeActivator = ReallySmallRuntimeBuilder.createCompositeActivator(registry,
@@ -174,6 +181,10 @@
 
     public CompositeActivator getCompositeActivator() {
         return compositeActivator;
+    }
+    
+    public CompositeBuilder getCompositeBuilder() {
+        return compositeBuilder;
     }
 
     public AssemblyFactory getAssemblyFactory() {

Modified: incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/ReallySmallRuntimeBuilder.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/ReallySmallRuntimeBuilder.java?view=diff&rev=563395&r1=563394&r2=563395
==============================================================================
--- incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/ReallySmallRuntimeBuilder.java (original)
+++ incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/ReallySmallRuntimeBuilder.java Mon Aug  6 22:49:29 2007
@@ -41,6 +41,8 @@
 import org.apache.tuscany.sca.assembly.Composite;
 import org.apache.tuscany.sca.assembly.ConstrainingType;
 import org.apache.tuscany.sca.assembly.SCABindingFactory;
+import org.apache.tuscany.sca.assembly.builder.CompositeBuilder;
+import org.apache.tuscany.sca.assembly.builder.impl.CompositeBuilderImpl;
 import org.apache.tuscany.sca.assembly.xml.ComponentTypeDocumentProcessor;
 import org.apache.tuscany.sca.assembly.xml.ComponentTypeModelResolver;
 import org.apache.tuscany.sca.assembly.xml.ComponentTypeProcessor;
@@ -159,6 +161,10 @@
                                        wireProcessor, providerFactories);
 
         return compositeActivator;
+    }
+    
+    public static CompositeBuilder createCompositeBuilder(AssemblyFactory assemblyFactory, SCABindingFactory scaBindingFactory, InterfaceContractMapper interfaceContractMapper) {
+        return new CompositeBuilderImpl(assemblyFactory, scaBindingFactory, interfaceContractMapper, null);
     }
 
     /**

Modified: incubator/tuscany/java/sca/modules/host-embedded/src/test/java/org/apache/tuscany/sca/host/embedded/impl/DefaultSCADomainTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/host-embedded/src/test/java/org/apache/tuscany/sca/host/embedded/impl/DefaultSCADomainTestCase.java?view=diff&rev=563395&r1=563394&r2=563395
==============================================================================
--- incubator/tuscany/java/sca/modules/host-embedded/src/test/java/org/apache/tuscany/sca/host/embedded/impl/DefaultSCADomainTestCase.java (original)
+++ incubator/tuscany/java/sca/modules/host-embedded/src/test/java/org/apache/tuscany/sca/host/embedded/impl/DefaultSCADomainTestCase.java Mon Aug  6 22:49:29 2007
@@ -49,16 +49,11 @@
         assertEquals("CRUDServiceComponent", componentManager.getComponentNames().iterator().next());
         assertNotNull(componentManager.getComponent("CRUDServiceComponent"));
         
-        //FIXME this used to work because of a bug in the compositebuilder/activator, causing componentManager
-        // to use a duplicate instance of the component, the original instance having already been started by
-        // new DefaultSCADomain()...
-        
-        assertFalse(componentManager.isComponentStarted("CRUDServiceComponent"));
-        componentManager.startComponent("CRUDServiceComponent");
         assertTrue(componentManager.isComponentStarted("CRUDServiceComponent"));
         componentManager.stopComponent("CRUDServiceComponent");
         assertFalse(componentManager.isComponentStarted("CRUDServiceComponent"));
     }
+    
     /**
      * @throws java.lang.Exception
      */

Modified: incubator/tuscany/java/sca/modules/host-embedded/src/test/java/org/apache/tuscany/sca/host/embedded/impl/EmbeddedSCADomainTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/host-embedded/src/test/java/org/apache/tuscany/sca/host/embedded/impl/EmbeddedSCADomainTestCase.java?view=diff&rev=563395&r1=563394&r2=563395
==============================================================================
--- incubator/tuscany/java/sca/modules/host-embedded/src/test/java/org/apache/tuscany/sca/host/embedded/impl/EmbeddedSCADomainTestCase.java (original)
+++ incubator/tuscany/java/sca/modules/host-embedded/src/test/java/org/apache/tuscany/sca/host/embedded/impl/EmbeddedSCADomainTestCase.java Mon Aug  6 22:49:29 2007
@@ -71,10 +71,7 @@
         EmbeddedSCADomain.DomainCompositeHelper domainHelper = domain.getDomainCompositeHelper();
         domainHelper.addComposite(myComposite);
 
-        // Activate the SCA Domain
-        domainHelper.activateDomain();
-
-        // Start the components in my composite
+        // Start my component
         domainHelper.startComponent(domainHelper.getComponent("CRUDServiceComponent"));
         
         // At this point the domain contains my contribution, my composite and
@@ -94,8 +91,8 @@
         result = service.retrieve(id);
         assertNull(result);
         
-        // Stop my composite
-        domainHelper.stopComposite(myComposite);
+        // Stop my component
+        domainHelper.stopComponent(domainHelper.getComponent("CRUDServiceComponent"));
         
         // Remove my composite
         domainHelper.removeComposite(myComposite);
@@ -129,12 +126,9 @@
         EmbeddedSCADomain.DomainCompositeHelper domainHelper = domain.getDomainCompositeHelper();
         domainHelper.addComposite(myComposite);
 
-        // Activate the SCA Domain
-        domainHelper.activateDomain();
-
-        // Start the components in my composite
+        // Start my component
         domainHelper.startComponent(domainHelper.getComponent("CRUDServiceComponent"));
-        
+
         // At this point the domain contains my contribution, my composite and
         // it's started, my application code can start using it
 
@@ -161,9 +155,9 @@
         assertTrue(cl.startCalled);
         assertTrue(componentManager.isComponentStarted("CRUDServiceComponent"));
 
-        // Stop my composite
-        domainHelper.stopComposite(myComposite);
-        
+        // Stop my component
+        domainHelper.stopComponent(domainHelper.getComponent("CRUDServiceComponent"));
+
         // Remove my composite
         domainHelper.removeComposite(myComposite);
         



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