From e9f4ee14d3c4f9d7db2e74271a0fe6f6cf63e9a9 Mon Sep 17 00:00:00 2001 From: erik Date: Fri, 4 Apr 2008 22:40:40 +0000 Subject: [PATCH] --- .../system/DefaultRequiredInterface.java | 3 + .../java/org/wamblee/system/Application.java | 20 ++++- .../system/DefaultRequiredInterfaceTest.java | 5 ++ .../java/org/wamblee/system/Environment.java | 21 ++++- .../wamblee/system/SystemAssemblerTest.java | 76 +++++++++++-------- 5 files changed, 90 insertions(+), 35 deletions(-) diff --git a/trunk/system/general/src/main/java/org/wamblee/system/DefaultRequiredInterface.java b/trunk/system/general/src/main/java/org/wamblee/system/DefaultRequiredInterface.java index 2f06247d..7bc5b270 100644 --- a/trunk/system/general/src/main/java/org/wamblee/system/DefaultRequiredInterface.java +++ b/trunk/system/general/src/main/java/org/wamblee/system/DefaultRequiredInterface.java @@ -64,6 +64,9 @@ public class DefaultRequiredInterface implements RequiredInterface { @Override public T getImplementation(Class aClass) { + if ( _provider == null ) { + return null; + } return (T)_provider.getImplementation(); } diff --git a/trunk/system/general/src/test/java/org/wamblee/system/Application.java b/trunk/system/general/src/test/java/org/wamblee/system/Application.java index 6e9eb675..3b84b3cb 100644 --- a/trunk/system/general/src/test/java/org/wamblee/system/Application.java +++ b/trunk/system/general/src/test/java/org/wamblee/system/Application.java @@ -2,6 +2,8 @@ package org.wamblee.system; import javax.sql.DataSource; +import org.wamblee.test.EventTracker; + public class Application extends AbstractComponent { private static RequiredInterface[] required() { return @@ -10,18 +12,32 @@ public class Application extends AbstractComponent { new DefaultRequiredInterface("integer", Integer.class) }; } + + private EventTracker _tracker; public Application() { super("application", new ProvidedInterface[0], required()); } + + public Application(EventTracker aTracker) { + this(); + _tracker = aTracker; + } @Override protected void doStart(String aContext) { - // Empty, no services provided externally. + track("start." + getName()); } @Override protected void doStop() { - // Empty. + track("stop." + getName()); + } + + private void track(String aString) { + if ( _tracker == null ) { + return; + } + _tracker.eventOccurred(aString); } } diff --git a/trunk/system/general/src/test/java/org/wamblee/system/DefaultRequiredInterfaceTest.java b/trunk/system/general/src/test/java/org/wamblee/system/DefaultRequiredInterfaceTest.java index 6a209b48..45cf9d92 100644 --- a/trunk/system/general/src/test/java/org/wamblee/system/DefaultRequiredInterfaceTest.java +++ b/trunk/system/general/src/test/java/org/wamblee/system/DefaultRequiredInterfaceTest.java @@ -20,4 +20,9 @@ public class DefaultRequiredInterfaceTest extends TestCase { new DefaultRequiredInterface("a", new Class[]{ String.class, Integer.class}))); } + + public void testGetImplementation() { + RequiredInterface required = new DefaultRequiredInterface("hello", String.class); + assertNull(required.getImplementation(String.class)); + } } diff --git a/trunk/system/general/src/test/java/org/wamblee/system/Environment.java b/trunk/system/general/src/test/java/org/wamblee/system/Environment.java index 300adf5c..d6465d68 100644 --- a/trunk/system/general/src/test/java/org/wamblee/system/Environment.java +++ b/trunk/system/general/src/test/java/org/wamblee/system/Environment.java @@ -2,6 +2,8 @@ package org.wamblee.system; import javax.sql.DataSource; +import org.wamblee.test.EventTracker; + public class Environment extends AbstractComponent { @@ -12,18 +14,33 @@ public class Environment extends AbstractComponent { }; } + private EventTracker _tracker; + public Environment() { super("environment", provided(), new RequiredInterface[0]); } + public Environment(EventTracker aTracker) { + this(); + _tracker = aTracker; + } + @Override protected void doStart(String aContext) { addService(aContext, getProvidedServices()[0], new Integer(1)); addService(aContext, getProvidedServices()[1], new Integer(2)); + track("start." + getName()); } - + @Override protected void doStop() { - // Empty. + track("stop." + getName()); + } + + private void track(String aString) { + if ( _tracker == null ) { + return; + } + _tracker.eventOccurred(aString); } } diff --git a/trunk/system/general/src/test/java/org/wamblee/system/SystemAssemblerTest.java b/trunk/system/general/src/test/java/org/wamblee/system/SystemAssemblerTest.java index d862b15e..7bbf08bf 100644 --- a/trunk/system/general/src/test/java/org/wamblee/system/SystemAssemblerTest.java +++ b/trunk/system/general/src/test/java/org/wamblee/system/SystemAssemblerTest.java @@ -6,14 +6,18 @@ import java.util.Arrays; import org.wamblee.system.Component.Status; import org.wamblee.test.AssertionUtils; +import org.wamblee.test.EventTracker; import junit.framework.TestCase; public class SystemAssemblerTest extends TestCase { + private EventTracker _tracker; + @Override protected void setUp() throws Exception { super.setUp(); + _tracker = new EventTracker(); } private static class MyMultiple implements Serializable, Runnable { @@ -28,12 +32,12 @@ public class SystemAssemblerTest extends TestCase { Runnable.class); RequiredInterface req2 = new DefaultRequiredInterface("name", Serializable.class); - ProvidedInterface prov1 = new DefaultProvidedInterface( - "name", Runnable.class); - ProvidedInterface prov2 = new DefaultProvidedInterface( - "name", Serializable.class); - ProvidedInterface prov3 = new DefaultProvidedInterface( - "name", MyMultiple.class); + ProvidedInterface prov1 = new DefaultProvidedInterface("name", + Runnable.class); + ProvidedInterface prov2 = new DefaultProvidedInterface("name", + Serializable.class); + ProvidedInterface prov3 = new DefaultProvidedInterface("name", + MyMultiple.class); AssertionUtils.assertEquals(new RequiredInterface[] { req1 }, SystemAssembler.filterRequiredServices(prov1, Arrays @@ -57,19 +61,19 @@ public class SystemAssemblerTest extends TestCase { } public void testEnvironmentApplication() { - Component environment = new Environment(); - Component application = new Application(); + Component environment = new Environment(_tracker); + Component application = new Application(_tracker); SystemAssembler assembler = new SystemAssembler(new Component[] { environment, application }, new ProvidedInterface[0]); assembler.start(); + AssertionUtils.assertEquals(new String[] { "start.environment", + "start.application" }, _tracker.getEvents( + Thread.currentThread()).toArray(new String[0])); ProvidedInterface[] envServices = environment.getRunningServices(); assertEquals(2, envServices.length); ProvidedInterface[] appServices = environment.getRunningServices(); assertEquals(2, appServices.length); - - // TODO test stopping!!!!!! - environment.stop(); - application.stop(); + } public void testApplicationEnvironment() { @@ -87,10 +91,12 @@ public class SystemAssemblerTest extends TestCase { } public void testComposite() { - Component environment = new Environment(); - Component application = new Application(); + Component environment = new Environment(_tracker); + Component application = new Application(_tracker); + assertEquals(0, _tracker.getEventCount()); assertEquals(Status.NOT_STARTED, environment.getStatus()); assertEquals(Status.NOT_STARTED, application.getStatus()); + Container system = new Container("all", new Component[] { environment, application }, new ProvidedInterface[0], new RequiredInterface[0]); @@ -103,20 +109,30 @@ public class SystemAssemblerTest extends TestCase { assertEquals(Status.RUNNING, environment.getStatus()); assertEquals(Status.RUNNING, application.getStatus()); assertEquals(Status.RUNNING, system.getStatus()); - + + AssertionUtils.assertEquals( + new String[] { "start.environment", "start.application" }, + _tracker.getEvents(Thread.currentThread()).toArray(new String[0])); + _tracker.clear(); + system.stop(); assertEquals(Status.STOPPED, environment.getStatus()); assertEquals(Status.STOPPED, application.getStatus()); assertEquals(Status.STOPPED, system.getStatus()); + + AssertionUtils.assertEquals( + new String[] { "stop.application", "stop.environment" }, + _tracker.getEvents(Thread.currentThread()).toArray(new String[0])); + + } public void testCompositeWithWrongProvidedInfo() { try { Component environment = new Environment(); Component application = new Application(); - Container system = new Container( - "all", - new Component[] { environment, application }, + Container system = new Container("all", new Component[] { + environment, application }, new ProvidedInterface[] { new DefaultProvidedInterface( "string", String.class) }, new DefaultRequiredInterface[0]); @@ -130,10 +146,8 @@ public class SystemAssemblerTest extends TestCase { try { Component environment = new Environment(); Component application = new Application(); - Container system = new Container( - "all", - new Component[] { environment, application }, - new ProvidedInterface[0], + Container system = new Container("all", new Component[] { + environment, application }, new ProvidedInterface[0], new RequiredInterface[] { new DefaultRequiredInterface( "string", String.class) }); system.start("root"); @@ -146,14 +160,12 @@ public class SystemAssemblerTest extends TestCase { public void testCompositeWithSuperfluousRequiredInfo() { Component environment = new Environment(); Component application = new Application(); - Container system = new Container( - "all", - new Component[] { environment, application }, - new ProvidedInterface[0], + Container system = new Container("all", new Component[] { environment, + application }, new ProvidedInterface[0], new RequiredInterface[] { new DefaultRequiredInterface( "string", String.class) }); - system.getRequiredServices()[0].setProvider( - new DefaultProvidedInterface("hallo", String.class)); + system.getRequiredServices()[0] + .setProvider(new DefaultProvidedInterface("hallo", String.class)); system.start("root"); RequiredInterface[] required = system.getRequiredServices(); assertEquals(1, required.length); @@ -184,9 +196,11 @@ public class SystemAssemblerTest extends TestCase { new Component[] { application }, new ProvidedInterface[0], application.getRequiredServices()); environment.start("env"); - system.getRequiredServices()[0].setProvider(environment.getProvidedServices()[0]); - system.getRequiredServices()[1].setProvider(environment.getProvidedServices()[1]); - + system.getRequiredServices()[0].setProvider(environment + .getProvidedServices()[0]); + system.getRequiredServices()[1].setProvider(environment + .getProvidedServices()[1]); + system.start("root"); RequiredInterface[] required = system.getRequiredServices(); assertEquals(2, required.length); -- 2.31.1