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