(no commit message)
authorerik <erik@77661180-640e-0410-b3a8-9f9b13e6d0e0>
Fri, 4 Apr 2008 22:40:40 +0000 (22:40 +0000)
committererik <erik@77661180-640e-0410-b3a8-9f9b13e6d0e0>
Fri, 4 Apr 2008 22:40:40 +0000 (22:40 +0000)
system/general/src/main/java/org/wamblee/system/DefaultRequiredInterface.java
system/general/src/test/java/org/wamblee/system/Application.java
system/general/src/test/java/org/wamblee/system/DefaultRequiredInterfaceTest.java
system/general/src/test/java/org/wamblee/system/Environment.java
system/general/src/test/java/org/wamblee/system/SystemAssemblerTest.java

index 2f06247d3b2883c55f3cebcf5fabc8325d6dfdbc..7bc5b2703c7bb8c991ad9219b31bd4814d9b555b 100644 (file)
@@ -64,6 +64,9 @@ public class DefaultRequiredInterface implements RequiredInterface {
 
        @Override
        public <T> T getImplementation(Class<T> aClass) {
+               if ( _provider == null ) { 
+                       return null; 
+               }
                return (T)_provider.getImplementation();
        }
        
index 6e9eb675c25861ae7d911109a7ec89c1c378039b..3b84b3cb1788a93eaaef6d88a602dfb6cd2f44d0 100644 (file)
@@ -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<String> _tracker;
        
        public Application() {
                super("application", new ProvidedInterface[0], required()); 
        }
+       
+       public Application(EventTracker<String> 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);
        }
 }
index 6a209b4854737f1c228706a30182341ba8bf7fab..45cf9d928784192b9043de14d75437b1084b5e99 100644 (file)
@@ -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));
+       }
 }
index 300adf5c43c5dc18f78f7d904648b8d5c8e2d900..d6465d68e3266b0fc60c0e508ac0db118df8a765 100644 (file)
@@ -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<String> _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);
        }
 }
index d862b15e3eb4d08fbe2f1a64b89ebc60fa7b8425..7bbf08bf921b5ee5b294c74d2d6c75e236a877c3 100644 (file)
@@ -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<String> _tracker;
+
        @Override
        protected void setUp() throws Exception {
                super.setUp();
+               _tracker = new EventTracker<String>();
        }
 
        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);