git://wamblee.org
/
utils
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
6528585
)
Added getStatus() method and now also testing for the correct status.
author
erik
<erik@77661180-640e-0410-b3a8-9f9b13e6d0e0>
Mon, 31 Mar 2008 17:03:50 +0000
(17:03 +0000)
committer
erik
<erik@77661180-640e-0410-b3a8-9f9b13e6d0e0>
Mon, 31 Mar 2008 17:03:50 +0000
(17:03 +0000)
system/general/src/main/java/org/wamblee/system/AbstractComponent.java
patch
|
blob
|
history
system/general/src/main/java/org/wamblee/system/Component.java
patch
|
blob
|
history
system/general/src/main/java/org/wamblee/system/CompositeComponent.java
[moved from
system/general/src/main/java/org/wamblee/system/CompositeSystem.java
with 90% similarity]
patch
|
blob
|
history
system/general/src/test/java/org/wamblee/system/SystemAssemblerTest.java
patch
|
blob
|
history
system/spring/src/main/java/org/wamblee/system/spring/SpringSystem.java
patch
|
blob
|
history
diff --git
a/system/general/src/main/java/org/wamblee/system/AbstractComponent.java
b/system/general/src/main/java/org/wamblee/system/AbstractComponent.java
index 5c96b5491f650288dce681a15337b389f71490d8..47c82862683bc08881b1f42caacdd483f6d11df2 100644
(file)
--- a/
system/general/src/main/java/org/wamblee/system/AbstractComponent.java
+++ b/
system/general/src/main/java/org/wamblee/system/AbstractComponent.java
@@
-9,6
+9,7
@@
import java.util.Map;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.wamblee.system.Component.Status;
/**
* Abstract subsystem class making it easy to implement new subsystems.
/**
* Abstract subsystem class making it easy to implement new subsystems.
@@
-17,6
+18,7
@@
public abstract class AbstractComponent implements Component {
private static final Log LOG = LogFactory.getLog(AbstractComponent.class);
private static final Log LOG = LogFactory.getLog(AbstractComponent.class);
+ private Status _status;
private String _name;
private ServiceRegistry _registry;
private List<InterfaceDescriptor> _provided;
private String _name;
private ServiceRegistry _registry;
private List<InterfaceDescriptor> _provided;
@@
-37,6
+39,7
@@
public abstract class AbstractComponent implements Component {
*/
protected AbstractComponent(String aName, ServiceRegistry aRegistry, InterfaceDescriptor[] aProvided,
InterfaceDescriptor[] aRequired) {
*/
protected AbstractComponent(String aName, ServiceRegistry aRegistry, InterfaceDescriptor[] aProvided,
InterfaceDescriptor[] aRequired) {
+ _status = Status.NOT_STARTED;
_name = aName;
_registry = aRegistry;
_provided = new ArrayList<InterfaceDescriptor>();
_name = aName;
_registry = aRegistry;
_provided = new ArrayList<InterfaceDescriptor>();
@@
-45,6
+48,11
@@
public abstract class AbstractComponent implements Component {
_required.addAll(Arrays.asList(aRequired));
_running = new HashMap<InterfaceDescriptor, Service>();
}
_required.addAll(Arrays.asList(aRequired));
_running = new HashMap<InterfaceDescriptor, Service>();
}
+
+ @Override
+ public Status getStatus() {
+ return _status;
+ }
@Override
public final String getName() {
@Override
public final String getName() {
@@
-71,6
+79,7
@@
public abstract class AbstractComponent implements Component {
LOG.info("Initializing '" + aContext + "." + _name + "' with "
+ Arrays.asList(aRequiredServices));
doStart(aContext + "." + getName(), aRequiredServices);
LOG.info("Initializing '" + aContext + "." + _name + "' with "
+ Arrays.asList(aRequiredServices));
doStart(aContext + "." + getName(), aRequiredServices);
+ _status = Status.RUNNING;
return _running.values().toArray(new Service[0]);
}
return _running.values().toArray(new Service[0]);
}
@@
-110,6
+119,7
@@
public abstract class AbstractComponent implements Component {
for (Service svc: _running.values()) {
getRegistry().remove(svc);
}
for (Service svc: _running.values()) {
getRegistry().remove(svc);
}
+ _status = Status.STOPPED;
}
protected abstract void doStop();
}
protected abstract void doStop();
diff --git
a/system/general/src/main/java/org/wamblee/system/Component.java
b/system/general/src/main/java/org/wamblee/system/Component.java
index 6a31e01d61748002d63a435ac0da55f56ca66733..afbed94cd677fb04e8e049cddd25d3e53132b756 100644
(file)
--- a/
system/general/src/main/java/org/wamblee/system/Component.java
+++ b/
system/general/src/main/java/org/wamblee/system/Component.java
@@
-8,6
+8,16
@@
package org.wamblee.system;
*/
public interface Component {
*/
public interface Component {
+ enum Status {
+ NOT_STARTED, RUNNING, STOPPED
+ }
+
+ /**
+ * Gets the status of the component.
+ * @return Status.
+ */
+ Status getStatus();
+
/**
* Gets the name of the subsystem.
* @return Subsystem name.
/**
* Gets the name of the subsystem.
* @return Subsystem name.
diff --git
a/system/general/src/main/java/org/wamblee/system/CompositeSystem.java
b/system/general/src/main/java/org/wamblee/system/CompositeComponent.java
similarity index 90%
rename from
system/general/src/main/java/org/wamblee/system/CompositeSystem.java
rename to
system/general/src/main/java/org/wamblee/system/CompositeComponent.java
index 24547a9373078878880130b8463646312e87c682..7bc120aaf3b8991f08b7b5ddac851bca8cc9d3f7 100644
(file)
--- a/
system/general/src/main/java/org/wamblee/system/CompositeSystem.java
+++ b/
system/general/src/main/java/org/wamblee/system/CompositeComponent.java
@@
-14,9
+14,9
@@
import sun.util.LocaleServiceProviderPool.LocalizedObjectGetter;
*
* @author Erik Brakkee
*/
*
* @author Erik Brakkee
*/
-public class Composite
System
extends AbstractComponent {
+public class Composite
Component
extends AbstractComponent {
- private static final Log LOG = LogFactory.getLog(Composite
System
.class);
+ private static final Log LOG = LogFactory.getLog(Composite
Component
.class);
private Component[] _systems;
private Component[] _systems;
@@
-28,7
+28,7
@@
public class CompositeSystem extends AbstractComponent {
* @param aProvided Provided services of the system.
* @param aRequired Required services by the system.
*/
* @param aProvided Provided services of the system.
* @param aRequired Required services by the system.
*/
- public Composite
System
(String aName, ServiceRegistry aRegistry, Component[] aSystems,
+ public Composite
Component
(String aName, ServiceRegistry aRegistry, Component[] aSystems,
InterfaceDescriptor[] aProvided, InterfaceDescriptor[] aRequired) {
super(aName, aRegistry, aProvided, aRequired);
_systems = aSystems;
InterfaceDescriptor[] aProvided, InterfaceDescriptor[] aRequired) {
super(aName, aRegistry, aProvided, aRequired);
_systems = aSystems;
@@
-93,7
+93,9
@@
public class CompositeSystem extends AbstractComponent {
@Override
protected void doStop() {
@Override
protected void doStop() {
- // Empty.
+ for (int i = _systems.length-1; i >= 0; i--) {
+ _systems[i].stop();
+ }
}
private void info(String aMsg) {
}
private void info(String aMsg) {
diff --git
a/system/general/src/test/java/org/wamblee/system/SystemAssemblerTest.java
b/system/general/src/test/java/org/wamblee/system/SystemAssemblerTest.java
index 885cff39739a748fbd1e015c4f45f66b461128db..ab8bae6902debd4b49c16554c57345166f9f19fd 100644
(file)
--- a/
system/general/src/test/java/org/wamblee/system/SystemAssemblerTest.java
+++ b/
system/general/src/test/java/org/wamblee/system/SystemAssemblerTest.java
@@
-4,6
+4,7
@@
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.ArrayList;
import java.util.Arrays;
+import org.wamblee.system.Component.Status;
import org.wamblee.test.AssertionUtils;
import junit.framework.TestCase;
import org.wamblee.test.AssertionUtils;
import junit.framework.TestCase;
@@
-98,21
+99,32
@@
public class SystemAssemblerTest extends TestCase {
public void testComposite() {
Component environment = new Environment(_registry);
Component application = new Application(_registry);
public void testComposite() {
Component environment = new Environment(_registry);
Component application = new Application(_registry);
- CompositeSystem system = new CompositeSystem("all", _registry,
+ assertEquals(Status.NOT_STARTED, environment.getStatus());
+ assertEquals(Status.NOT_STARTED, application.getStatus());
+ CompositeComponent system = new CompositeComponent("all", _registry,
new Component[] { environment, application },
new InterfaceDescriptor[0], new InterfaceDescriptor[0]);
new Component[] { environment, application },
new InterfaceDescriptor[0], new InterfaceDescriptor[0]);
+ assertEquals(Status.NOT_STARTED, system.getStatus());
system.start("root", new Service[0]);
InterfaceDescriptor[] required = system.getRequiredServices();
assertEquals(0, required.length);
InterfaceDescriptor[] provided = system.getProvidedServices();
assertEquals(0, provided.length);
system.start("root", new Service[0]);
InterfaceDescriptor[] required = system.getRequiredServices();
assertEquals(0, required.length);
InterfaceDescriptor[] provided = system.getProvidedServices();
assertEquals(0, provided.length);
+ assertEquals(Status.RUNNING, environment.getStatus());
+ assertEquals(Status.RUNNING, application.getStatus());
+ assertEquals(Status.RUNNING, system.getStatus());
+
+ system.stop();
+ assertEquals(Status.STOPPED, environment.getStatus());
+ assertEquals(Status.STOPPED, application.getStatus());
+ assertEquals(Status.STOPPED, system.getStatus());
}
public void testCompositeWithWrongProvidedInfo() {
try {
Component environment = new Environment(_registry);
Component application = new Application(_registry);
}
public void testCompositeWithWrongProvidedInfo() {
try {
Component environment = new Environment(_registry);
Component application = new Application(_registry);
- Composite
System system = new CompositeSystem
(
+ Composite
Component system = new CompositeComponent
(
"all",
_registry,
new Component[] { environment, application },
"all",
_registry,
new Component[] { environment, application },
@@
-128,7
+140,7
@@
public class SystemAssemblerTest extends TestCase {
public void testCompositeWithSuperfluousRequiredInfo() {
Component environment = new Environment(_registry);
Component application = new Application(_registry);
public void testCompositeWithSuperfluousRequiredInfo() {
Component environment = new Environment(_registry);
Component application = new Application(_registry);
- Composite
System system = new CompositeSystem
("all", _registry,
+ Composite
Component system = new CompositeComponent
("all", _registry,
new Component[] { environment, application },
new InterfaceDescriptor[0],
new InterfaceDescriptor[] { new DefaultRequiredInterfaceDescriptor(
new Component[] { environment, application },
new InterfaceDescriptor[0],
new InterfaceDescriptor[] { new DefaultRequiredInterfaceDescriptor(
@@
-144,7
+156,7
@@
public class SystemAssemblerTest extends TestCase {
try {
Component environment = new Environment(_registry);
Component application = new Application(_registry);
try {
Component environment = new Environment(_registry);
Component application = new Application(_registry);
- Composite
System system = new CompositeSystem
("all", _registry,
+ Composite
Component system = new CompositeComponent
("all", _registry,
new Component[] { application }, new InterfaceDescriptor[0],
application.getRequiredServices());
system.start("root", new Service[0]);
new Component[] { application }, new InterfaceDescriptor[0],
application.getRequiredServices());
system.start("root", new Service[0]);
@@
-159,7
+171,7
@@
public class SystemAssemblerTest extends TestCase {
Component environment = new Environment(_registry);
Component application = new Application(_registry);
Component environment = new Environment(_registry);
Component application = new Application(_registry);
- Composite
System system = new CompositeSystem
("all", _registry,
+ Composite
Component system = new CompositeComponent
("all", _registry,
new Component[] { application }, new InterfaceDescriptor[0],
application.getRequiredServices());
Service[] envServices = environment.start("env", new Service[0]);
new Component[] { application }, new InterfaceDescriptor[0],
application.getRequiredServices());
Service[] envServices = environment.start("env", new Service[0]);
diff --git
a/system/spring/src/main/java/org/wamblee/system/spring/SpringSystem.java
b/system/spring/src/main/java/org/wamblee/system/spring/SpringSystem.java
index 7a8b513ee7b318129f1b643c89a9096d3d7e30fa..05731af829aa0b7ae24aafa2d79243af3fa247f2 100644
(file)
--- a/
system/spring/src/main/java/org/wamblee/system/spring/SpringSystem.java
+++ b/
system/spring/src/main/java/org/wamblee/system/spring/SpringSystem.java
@@
-11,7
+11,7
@@
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.context.support.GenericApplicationContext;
import org.wamblee.system.AbstractComponent;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.context.support.GenericApplicationContext;
import org.wamblee.system.AbstractComponent;
-import org.wamblee.system.Composite
System
;
+import org.wamblee.system.Composite
Component
;
import org.wamblee.system.ProvidedInterfaceDescriptor;
import org.wamblee.system.RequiredInterfaceDescriptor;
import org.wamblee.system.Service;
import org.wamblee.system.ProvidedInterfaceDescriptor;
import org.wamblee.system.RequiredInterfaceDescriptor;
import org.wamblee.system.Service;