package org.wamblee.system.spring; import java.util.HashMap; import java.util.Map; import junit.framework.TestCase; import org.wamblee.system.AbstractServiceDescriptor; import org.wamblee.system.DefaultProvidedServiceDescriptor; import org.wamblee.system.DefaultRequiredServiceDescriptor; import org.wamblee.system.DefaultServiceRegistry; import org.wamblee.system.ProvidedServiceDescriptor; import org.wamblee.system.RequiredServiceDescriptor; import org.wamblee.system.Service; import org.wamblee.system.ServiceDescriptor; import org.wamblee.system.ServiceRegistry; import org.wamblee.system.SystemAssemblyException; public class SpringSystemTest extends TestCase { private static final String HELLO_SERVICE_SPRING_XML = "test.org.wamblee.system.spring.xml"; private static final String HELLO_SERVICE_SPRING_WITH_REQS_XML = "test.org.wamblee.system.springWithRequirements.xml"; private ServiceRegistry _registry; @Override protected void setUp() throws Exception { super.setUp(); _registry = new DefaultServiceRegistry(); } public void testBlackboxSystem() { SpringSystem system = new SpringSystem("system", _registry, new String[] { HELLO_SERVICE_SPRING_XML }, new HashMap(), new HashMap()); system.start("Hello", new Service[0]); Service[] services = system.getRunningServices(); assertEquals(0, services.length); system.stop(); } public void testOneProvidedService() { Map provided = new HashMap(); provided.put("helloService", new DefaultProvidedServiceDescriptor( "hello", HelloService.class)); SpringSystem system = new SpringSystem("system", _registry, new String[] { HELLO_SERVICE_SPRING_XML }, provided, new HashMap()); system.start("Hello", new Service[0]); Service[] services = system.getRunningServices(); assertEquals(1, services.length); assertTrue(services[0].reference(HelloService.class) instanceof HelloService); assertEquals("Hello world!", services[0].reference(HelloService.class) .say()); system.stop(); } public void testWithMissingRequiremnt() { try { SpringSystem system = new SpringSystem("system", _registry, new String[] { HELLO_SERVICE_SPRING_WITH_REQS_XML }, new HashMap(), new HashMap()); system.start("Bla", new Service[0]); } catch (SystemAssemblyException e) { //e.printStackTrace(); return; } fail(); } public void testWithRequirement() { Map required = new HashMap(); required.put(new DefaultRequiredServiceDescriptor("hello", HelloService.class), "helloService"); SpringSystem system = new SpringSystem("system", _registry, new String[] { HELLO_SERVICE_SPRING_WITH_REQS_XML }, new HashMap(), required); HelloService helloObject = new HelloService("ladida"); Service helloService = _registry.register(new DefaultProvidedServiceDescriptor("hello", HelloService.class), helloObject); system.start("Bla", new Service[] { helloService } ); system.stop(); } public void testWithRequirementAndProvidedService() { Map required = new HashMap(); required.put(new DefaultRequiredServiceDescriptor("hello", HelloService.class), "helloService"); Map provided = new HashMap(); provided.put("blaService", new DefaultProvidedServiceDescriptor("bla", BlaService.class)); SpringSystem system = new SpringSystem("system", _registry, new String[] { HELLO_SERVICE_SPRING_WITH_REQS_XML }, provided, required); HelloService helloObject = new HelloService("ladida"); Service helloService = _registry.register(new DefaultProvidedServiceDescriptor("hello", HelloService.class), helloObject); Service[] services = system.start("Bla", new Service[] { helloService } ); assertEquals(1, services.length); assertTrue(services[0].reference(BlaService.class) instanceof BlaService); assertEquals("ladida", services[0].reference(BlaService.class) .execute()); system.stop(); } }