X-Git-Url: http://wamblee.org/gitweb/?a=blobdiff_plain;f=system%2Fspring%2Fsrc%2Ftest%2Fjava%2Forg%2Fwamblee%2Fsystem%2Fspring%2FSpringComponentTest.java;h=ba465f4c1dbcb5a273558b46a7582232ce63d57a;hb=8de36ff0206c996baf3ee4adc3e2293b12ff5f39;hp=67ed048df8f19dbaed681191c855686d785486ac;hpb=2d1fd76ec884b5fc7be4078020fdf14d17166e8a;p=utils diff --git a/system/spring/src/test/java/org/wamblee/system/spring/SpringComponentTest.java b/system/spring/src/test/java/org/wamblee/system/spring/SpringComponentTest.java index 67ed048d..ba465f4c 100644 --- a/system/spring/src/test/java/org/wamblee/system/spring/SpringComponentTest.java +++ b/system/spring/src/test/java/org/wamblee/system/spring/SpringComponentTest.java @@ -1,12 +1,12 @@ /* * Copyright 2007 the original author or authors. - * + * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -15,14 +15,10 @@ */ package org.wamblee.system.spring; -import java.io.IOException; -import java.util.HashMap; -import java.util.Map; -import java.util.Properties; - import junit.framework.TestCase; import org.wamblee.io.ClassPathResource; + import org.wamblee.system.core.DefaultProvidedInterface; import org.wamblee.system.core.DefaultRequiredInterface; import org.wamblee.system.core.DefaultScope; @@ -30,36 +26,51 @@ import org.wamblee.system.core.ProvidedInterface; import org.wamblee.system.core.RequiredInterface; import org.wamblee.system.core.Scope; import org.wamblee.system.core.SystemAssemblyException; + import org.wamblee.test.EventTracker; -public class SpringComponentTest extends TestCase { +import java.io.IOException; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Properties; + +/** + * + * @author $author$ + * @version $Revision$ + */ +public class SpringComponentTest 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 static final String HELLO_SERVICE_SPRING_WITH_PROPERTIES_XML = "test.org.wamblee.system.springWithProperties.xml"; + private static final String HELLO_SERVICE_SPRING_WITH_PROPERTIES_XML2 = "test.org.wamblee.system.springWithProperties2.xml"; private static final String PROPERTY_FILE = "test.org.wamblee.system.spring.properties"; public static EventTracker EVENT_TRACKER; - private Scope _externalScope; + private Scope externalScope; @Override protected void setUp() throws Exception { super.setUp(); EVENT_TRACKER = new EventTracker(); - _externalScope = new DefaultScope(new ProvidedInterface[0]); + externalScope = new DefaultScope(new ProvidedInterface[0]); } public void testBlackboxSystem() { SpringComponent system = new SpringComponent("system", - new String[] { HELLO_SERVICE_SPRING_XML }, - new HashMap(), - new HashMap()); + new String[] { HELLO_SERVICE_SPRING_XML }, + new HashMap(), + new HashMap()); - Scope runtime = system.start(_externalScope); - assertEquals(0, _externalScope.getProvidedInterfaces().length); + Scope runtime = system.start(externalScope); + assertEquals(0, externalScope.getProvidedInterfaces().size()); system.stop(runtime); } @@ -67,23 +78,24 @@ public class SpringComponentTest extends TestCase { public void testOneProvidedService() { Map provided = new HashMap(); provided.put("helloService", new DefaultProvidedInterface("hello", - HelloService.class)); + HelloService.class)); SpringComponent system = new SpringComponent("system", - new String[] { HELLO_SERVICE_SPRING_XML }, provided, - new HashMap()); - Scope runtime = system.start(_externalScope); - ProvidedInterface[] services = runtime.getProvidedInterfaces(); + new String[] { HELLO_SERVICE_SPRING_XML }, provided, + new HashMap()); + Scope runtime = system.start(externalScope); + List services = runtime.getProvidedInterfaces(); + + assertEquals(1, services.size()); - assertEquals(1, services.length); - Object service = runtime.getInterfaceImplementation(services[0], - Object.class); + Object service = runtime.getInterfaceImplementation(services.get(0), + Object.class); assertTrue(service instanceof HelloService); // BUG; Provided services should be made available in the external // scope. - Object service2 = _externalScope.getInterfaceImplementation(provided - .get("helloService"), Object.class); + Object service2 = externalScope.getInterfaceImplementation(provided + .get("helloService"), Object.class); assertSame(service, service2); assertEquals("Hello world!", ((HelloService) service).say()); @@ -93,69 +105,74 @@ public class SpringComponentTest extends TestCase { public void testWithProperties() throws IOException { Map provided = new HashMap(); provided.put("helloService", new DefaultProvidedInterface("hello", - HelloService.class)); + HelloService.class)); + SpringComponent system = new SpringComponent("system", - new String[] { HELLO_SERVICE_SPRING_WITH_PROPERTIES_XML }, - provided, new HashMap()); + new String[] { HELLO_SERVICE_SPRING_WITH_PROPERTIES_XML }, + provided, new HashMap()); Properties props = new Properties(); props.load(new ClassPathResource(PROPERTY_FILE).getInputStream()); system.addProperties(props); - Scope scope = system.start(_externalScope); + Scope scope = system.start(externalScope); // BUG: Hello service was constructed multiple times. Once with the // unprocessed property // and another time with the processed property. assertEquals(1, EVENT_TRACKER.getEventCount()); - ProvidedInterface[] services = scope.getProvidedInterfaces(); + + List services = scope.getProvidedInterfaces(); assertEquals("Property Value", scope.getInterfaceImplementation( - services[0], HelloService.class).say()); + services.get(0), HelloService.class).say()); } public void testWithPropertiesAsBean() throws IOException { Map provided = new HashMap(); provided.put("helloService", new DefaultProvidedInterface("hello", - HelloService2.class)); + HelloService2.class)); + SpringComponent system = new SpringComponent("system", - new String[] { HELLO_SERVICE_SPRING_WITH_PROPERTIES_XML2 }, - provided, new HashMap()); + new String[] { HELLO_SERVICE_SPRING_WITH_PROPERTIES_XML2 }, + provided, new HashMap()); Properties props = new Properties(); props.load(new ClassPathResource(PROPERTY_FILE).getInputStream()); system.addProperties("properties", props); - Scope scope = system.start(_externalScope); + Scope scope = system.start(externalScope); - ProvidedInterface[] services = scope.getProvidedInterfaces(); + List services = scope.getProvidedInterfaces(); - Properties props2 = scope.getInterfaceImplementation(services[0], - HelloService2.class).getProperties(); + Properties props2 = scope.getInterfaceImplementation(services.get(0), + HelloService2.class).getProperties(); assertEquals(props, props2); } public void testWithMissingRequirement() { try { SpringComponent system = new SpringComponent("system", - new String[] { HELLO_SERVICE_SPRING_WITH_REQS_XML }, - new HashMap(), - new HashMap()); - system.start(_externalScope); + new String[] { HELLO_SERVICE_SPRING_WITH_REQS_XML }, + new HashMap(), + new HashMap()); + system.start(externalScope); } catch (SystemAssemblyException e) { // e.printStackTrace(); return; } + fail(); } public void testWithRequirement() { Map required = new HashMap(); required.put(new DefaultRequiredInterface("hello", HelloService.class), - "helloService"); + "helloService"); + SpringComponent system = new SpringComponent("system", - new String[] { HELLO_SERVICE_SPRING_WITH_REQS_XML }, - new HashMap(), required); + new String[] { HELLO_SERVICE_SPRING_WITH_REQS_XML }, + new HashMap(), required); HelloService helloObject = new HelloService("ladida"); ProvidedInterface helloService = new DefaultProvidedInterface("hello", - HelloService.class); + HelloService.class); Scope scope = new DefaultScope(new ProvidedInterface[] { helloService }); scope.publishInterface(helloService, helloObject); system.getRequiredInterfaces().get(0).setProvider(helloService); @@ -167,26 +184,28 @@ public class SpringComponentTest extends TestCase { public void testWithRequirementAndProvidedService() { Map required = new HashMap(); required.put(new DefaultRequiredInterface("hello", HelloService.class), - "helloService"); + "helloService"); + Map provided = new HashMap(); provided.put("blaService", new DefaultProvidedInterface("bla", - BlaService.class)); + BlaService.class)); SpringComponent system = new SpringComponent("system", - new String[] { HELLO_SERVICE_SPRING_WITH_REQS_XML }, provided, - required); + new String[] { HELLO_SERVICE_SPRING_WITH_REQS_XML }, provided, + required); HelloService helloObject = new HelloService("ladida"); ProvidedInterface helloService = new DefaultProvidedInterface("hello", - HelloService.class); + HelloService.class); Scope scope = new DefaultScope(new ProvidedInterface[] { helloService }); scope.publishInterface(helloService, helloObject); system.getRequiredInterfaces().get(0).setProvider(helloService); + Scope runtime = system.start(scope); - ProvidedInterface started = runtime.getProvidedInterfaces()[0]; + ProvidedInterface started = runtime.getProvidedInterfaces().get(0); Object impl = runtime.getInterfaceImplementation(started, - BlaService.class); + BlaService.class); assertNotNull(impl); assertTrue(impl instanceof BlaService); assertEquals("ladida", ((BlaService) impl).execute()); @@ -201,28 +220,29 @@ public class SpringComponentTest extends TestCase { public void testWithProvidedFromSubClassNotFromConfig() { Map provided = new HashMap(); provided.put("helloService", new DefaultProvidedInterface("hello", - HelloService.class)); + HelloService.class)); SubSpringComponent system = new SubSpringComponent("system", - new String[] { HELLO_SERVICE_SPRING_XML }, provided, - new HashMap()); + new String[] { HELLO_SERVICE_SPRING_XML }, provided, + new HashMap()); + + Scope runtime = system.start(externalScope); + List services = runtime.getProvidedInterfaces(); - Scope runtime = system.start(_externalScope); - ProvidedInterface[] services = runtime.getProvidedInterfaces(); + assertEquals(2, services.size()); - assertEquals(2, services.length); - Object service = runtime.getInterfaceImplementation(services[0], - Object.class); + Object service = runtime.getInterfaceImplementation(services.get(0), + Object.class); assertTrue(service instanceof HelloService); // BUG; Provided services should be made available in the external // scope. - Object service2 = _externalScope.getInterfaceImplementation(provided - .get("helloService"), Object.class); + Object service2 = externalScope.getInterfaceImplementation(provided + .get("helloService"), Object.class); assertSame(service, service2); - Object floatsvc = _externalScope.getInterfaceImplementation(system - .getProvidedInterfaces().get(1), Object.class); + Object floatsvc = externalScope.getInterfaceImplementation(system + .getProvidedInterfaces().get(1), Object.class); assertTrue(floatsvc instanceof Float); assertTrue((((Float) floatsvc).floatValue() - 100.345f) < 0.00001); @@ -231,23 +251,25 @@ public class SpringComponentTest extends TestCase { } /** - * Tests the spring component with an additional requirement from the subclass - * which is not required by the spring config files inside. + * Tests the spring component with an additional requirement from the + * subclass which is not required by the spring config files inside. */ public void testWithRequirementFromSubClass() { Map required = new HashMap(); required.put(new DefaultRequiredInterface("hello", HelloService.class), - "helloService"); + "helloService"); + SpringComponent system = new SubSpringComponent2("system", - new String[] { HELLO_SERVICE_SPRING_WITH_REQS_XML }, - new HashMap(), required); + new String[] { HELLO_SERVICE_SPRING_WITH_REQS_XML }, + new HashMap(), required); HelloService helloObject = new HelloService("ladida"); ProvidedInterface helloService = new DefaultProvidedInterface("hello", - HelloService.class); - - ProvidedInterface floatService = new DefaultProvidedInterface("float", Float.class); - + HelloService.class); + + ProvidedInterface floatService = new DefaultProvidedInterface("float", + Float.class); + Scope scope = new DefaultScope(new ProvidedInterface[] { helloService }); scope.publishInterface(helloService, helloObject); scope.publishInterface(floatService, 100.234f); @@ -256,8 +278,8 @@ public class SpringComponentTest extends TestCase { Scope runtime = system.start(scope); system.stop(runtime); - - assertEquals(100.234f, ((Float)runtime.get("floatValue")).floatValue(), 0.0001f); - } + assertEquals(100.234f, + ((Float) runtime.get("floatValue")).floatValue(), 0.0001f); + } }