You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by jb...@apache.org on 2006/07/17 17:02:53 UTC

svn commit: r422735 - in /incubator/tuscany/sandbox/chianti/sca: commands/launcher/src/main/resources/META-INF/tuscany/ core/src/main/java/org/apache/tuscany/core/component/scope/ core/src/main/java/org/apache/tuscany/core/implementation/composite/ cor...

Author: jboynes
Date: Mon Jul 17 08:02:51 2006
New Revision: 422735

URL: http://svn.apache.org/viewvc?rev=422735&view=rev
Log:
eager init happens on module start event not when the component is started

Modified:
    incubator/tuscany/sandbox/chianti/sca/commands/launcher/src/main/resources/META-INF/tuscany/system.scdl
    incubator/tuscany/sandbox/chianti/sca/core/src/main/java/org/apache/tuscany/core/component/scope/ModuleScopeContainer.java
    incubator/tuscany/sandbox/chianti/sca/core/src/main/java/org/apache/tuscany/core/implementation/composite/AbstractCompositeComponent.java
    incubator/tuscany/sandbox/chianti/sca/core/src/test/java/org/apache/tuscany/core/implementation/system/component/SystemCompositeLifecycleTestCase.java
    incubator/tuscany/sandbox/chianti/sca/spi/src/main/java/org/apache/tuscany/spi/extension/CompositeComponentExtension.java

Modified: incubator/tuscany/sandbox/chianti/sca/commands/launcher/src/main/resources/META-INF/tuscany/system.scdl
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/chianti/sca/commands/launcher/src/main/resources/META-INF/tuscany/system.scdl?rev=422735&r1=422734&r2=422735&view=diff
==============================================================================
--- incubator/tuscany/sandbox/chianti/sca/commands/launcher/src/main/resources/META-INF/tuscany/system.scdl (original)
+++ incubator/tuscany/sandbox/chianti/sca/commands/launcher/src/main/resources/META-INF/tuscany/system.scdl Mon Jul 17 08:02:51 2006
@@ -87,7 +87,7 @@
     <include name="org.apache.tuscany.launcher.JavaImplementation" scdlLocation="javaImplementation.scdl"/>
 
     <!-- component that scans the extension directory -->
-    <component name="directoryScanExtender">
+    <component name="directoryScanExtender" initLevel="90">
         <system:implementation.system class="org.apache.tuscany.core.services.extension.DirectoryScanExtender"/>
         <property name="path">extension</property>
     </component>

Modified: incubator/tuscany/sandbox/chianti/sca/core/src/main/java/org/apache/tuscany/core/component/scope/ModuleScopeContainer.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/chianti/sca/core/src/main/java/org/apache/tuscany/core/component/scope/ModuleScopeContainer.java?rev=422735&r1=422734&r2=422735&view=diff
==============================================================================
--- incubator/tuscany/sandbox/chianti/sca/core/src/main/java/org/apache/tuscany/core/component/scope/ModuleScopeContainer.java (original)
+++ incubator/tuscany/sandbox/chianti/sca/core/src/main/java/org/apache/tuscany/core/component/scope/ModuleScopeContainer.java Mon Jul 17 08:02:51 2006
@@ -4,8 +4,11 @@
 import java.util.List;
 import java.util.ListIterator;
 import java.util.Map;
+import java.util.TreeMap;
 import java.util.concurrent.ConcurrentHashMap;
 
+import org.apache.tuscany.core.component.event.CompositeStart;
+import org.apache.tuscany.core.component.event.CompositeStop;
 import org.apache.tuscany.spi.AbstractLifecycle;
 import org.apache.tuscany.spi.CoreRuntimeException;
 import org.apache.tuscany.spi.component.AtomicComponent;
@@ -14,9 +17,6 @@
 import org.apache.tuscany.spi.event.Event;
 import org.apache.tuscany.spi.model.Scope;
 
-import org.apache.tuscany.core.component.event.CompositeStart;
-import org.apache.tuscany.core.component.event.CompositeStop;
-
 /**
  * A scope context which manages atomic component instances keyed by module
  *
@@ -110,20 +110,35 @@
     }
 
     private void eagerInitComponents() throws CoreRuntimeException {
+        Map<Integer, List<AtomicComponent>> eagerInit = new TreeMap<Integer, List<AtomicComponent>>();
+
+        // find all eager init components and group them by init level
         for (Map.Entry<AtomicComponent, InstanceWrapper> entry : instanceWrappers.entrySet()) {
             AtomicComponent component = entry.getKey();
-            if (component.isEagerInit()) {
+            int initLevel = component.getInitLevel();
+            if (initLevel > 0) {
+                List<AtomicComponent> list = eagerInit.get(initLevel);
+                if (list == null) {
+                    list = new ArrayList<AtomicComponent>();
+                    eagerInit.put(initLevel, list);
+                }
+                list.add(component);
+            }
+        }
+
+        // start each group
+        for (List<AtomicComponent> list : eagerInit.values()) {
+            for (AtomicComponent component : list) {
                 // the instance could have been created from a depth-first traversal
                 InstanceWrapper ctx = instanceWrappers.get(component);
                 if (ctx == EMPTY) {
                     ctx = new InstanceWrapperImpl(component, component.createInstance());
                     ctx.start();
                     instanceWrappers.put(component, ctx);
+                    destroyQueue.add(ctx);
                 }
-                destroyQueue.add(ctx);
             }
         }
-
     }
 
     private static class EmptyWrapper extends AbstractLifecycle implements InstanceWrapper {

Modified: incubator/tuscany/sandbox/chianti/sca/core/src/main/java/org/apache/tuscany/core/implementation/composite/AbstractCompositeComponent.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/chianti/sca/core/src/main/java/org/apache/tuscany/core/implementation/composite/AbstractCompositeComponent.java?rev=422735&r1=422734&r2=422735&view=diff
==============================================================================
--- incubator/tuscany/sandbox/chianti/sca/core/src/main/java/org/apache/tuscany/core/implementation/composite/AbstractCompositeComponent.java (original)
+++ incubator/tuscany/sandbox/chianti/sca/core/src/main/java/org/apache/tuscany/core/implementation/composite/AbstractCompositeComponent.java Mon Jul 17 08:02:51 2006
@@ -79,7 +79,7 @@
             if (scopeContainer != null) {
                 scopeContainer.start();
             }
-            for (SCAObject child : getChildrenInStartOrder()) {
+            for (SCAObject child : children.values()) {
                 child.start();
             }
             initializeLatch.countDown();

Modified: incubator/tuscany/sandbox/chianti/sca/core/src/test/java/org/apache/tuscany/core/implementation/system/component/SystemCompositeLifecycleTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/chianti/sca/core/src/test/java/org/apache/tuscany/core/implementation/system/component/SystemCompositeLifecycleTestCase.java?rev=422735&r1=422734&r2=422735&view=diff
==============================================================================
--- incubator/tuscany/sandbox/chianti/sca/core/src/test/java/org/apache/tuscany/core/implementation/system/component/SystemCompositeLifecycleTestCase.java (original)
+++ incubator/tuscany/sandbox/chianti/sca/core/src/test/java/org/apache/tuscany/core/implementation/system/component/SystemCompositeLifecycleTestCase.java Mon Jul 17 08:02:51 2006
@@ -32,7 +32,6 @@
         Mock mock = mock(SystemAtomicComponent.class);
         mock.expects(atLeastOnce()).method("start");
         mock.expects(atLeastOnce()).method("stop");
-        mock.expects(atLeastOnce()).method("getInitLevel").will(returnValue(0));
         mock.stubs().method("getName").will(returnValue("source"));
         mock.stubs().method("getServiceInstance").will(returnValue(originalSource));
         mock.stubs().method("getServiceInterfaces").will(returnValue(interfaces));

Modified: incubator/tuscany/sandbox/chianti/sca/spi/src/main/java/org/apache/tuscany/spi/extension/CompositeComponentExtension.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/chianti/sca/spi/src/main/java/org/apache/tuscany/spi/extension/CompositeComponentExtension.java?rev=422735&r1=422734&r2=422735&view=diff
==============================================================================
--- incubator/tuscany/sandbox/chianti/sca/spi/src/main/java/org/apache/tuscany/spi/extension/CompositeComponentExtension.java (original)
+++ incubator/tuscany/sandbox/chianti/sca/spi/src/main/java/org/apache/tuscany/spi/extension/CompositeComponentExtension.java Mon Jul 17 08:02:51 2006
@@ -4,7 +4,6 @@
 import java.util.Collections;
 import java.util.List;
 import java.util.Map;
-import java.util.TreeMap;
 import java.util.concurrent.ConcurrentHashMap;
 
 import org.apache.tuscany.spi.component.AbstractSCAObject;
@@ -18,7 +17,6 @@
 import org.apache.tuscany.spi.component.Service;
 import org.apache.tuscany.spi.component.TargetException;
 import org.apache.tuscany.spi.component.TargetNotFoundException;
-import org.apache.tuscany.spi.component.AtomicComponent;
 import org.apache.tuscany.spi.event.Event;
 import org.apache.tuscany.spi.model.Scope;
 import org.apache.tuscany.spi.wire.InboundWire;
@@ -81,36 +79,6 @@
 
     public List<SCAObject> getChildren() {
         return Collections.unmodifiableList(new ArrayList<SCAObject>(children.values()));
-    }
-
-    public List<SCAObject> getChildrenInStartOrder() {
-        int size = children.size();
-        List<SCAObject> lazyInit = new ArrayList<SCAObject>(size);
-        Map<Integer, List<SCAObject>> eagerInit = new TreeMap<Integer, List<SCAObject>>();
-        for (SCAObject child : children.values()) {
-            if (child instanceof AtomicComponent) {
-                AtomicComponent atomic = (AtomicComponent) child;
-                int initLevel = atomic.getInitLevel();
-                if (initLevel > 0) {
-                    List<SCAObject> list = eagerInit.get(initLevel);
-                    if (list == null) {
-                        list = new ArrayList<SCAObject>();
-                        eagerInit.put(initLevel, list);
-                    }
-                    list.add(atomic);
-                } else {
-                    lazyInit.add(atomic);
-                }
-            } else {
-                lazyInit.add(child);
-            }
-        }
-        List<SCAObject> sorted = new ArrayList<SCAObject>(size);
-        for (List<SCAObject> list : eagerInit.values()) {
-            sorted.addAll(list);
-        }
-        sorted.addAll(lazyInit);
-        return Collections.unmodifiableList(sorted);
     }
 
     public List<Service> getServices() {



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