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=ff3aeb2429dcc82de2c83ffb215bbff06ea6f7a3;hpb=0d8d8f24656e585ee75558cfd6a4c661f8f14985;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 ff3aeb24..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,15 +15,10 @@ */ package org.wamblee.system.spring; -import java.io.IOException; -import java.util.HashMap; -import java.util.List; -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; @@ -31,13 +26,28 @@ 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"; @@ -55,12 +65,12 @@ public class SpringComponentTest extends TestCase { 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().size()); + assertEquals(0, externalScope.getProvidedInterfaces().size()); system.stop(runtime); } @@ -68,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()); + new String[] { HELLO_SERVICE_SPRING_XML }, provided, + new HashMap()); Scope runtime = system.start(externalScope); List services = runtime.getProvidedInterfaces(); assertEquals(1, services.size()); + Object service = runtime.getInterfaceImplementation(services.get(0), - Object.class); + 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); + .get("helloService"), Object.class); assertSame(service, service2); assertEquals("Hello world!", ((HelloService) service).say()); @@ -94,10 +105,11 @@ 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); @@ -107,18 +119,20 @@ public class SpringComponentTest extends TestCase { // unprocessed property // and another time with the processed property. assertEquals(1, EVENT_TRACKER.getEventCount()); + List services = scope.getProvidedInterfaces(); assertEquals("Property Value", scope.getInterfaceImplementation( - services.get(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); @@ -128,35 +142,37 @@ public class SpringComponentTest extends TestCase { List services = scope.getProvidedInterfaces(); Properties props2 = scope.getInterfaceImplementation(services.get(0), - HelloService2.class).getProperties(); + 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()); + 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); @@ -168,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().get(0); Object impl = runtime.getInterfaceImplementation(started, - BlaService.class); + BlaService.class); assertNotNull(impl); assertTrue(impl instanceof BlaService); assertEquals("ladida", ((BlaService) impl).execute()); @@ -202,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(); assertEquals(2, services.size()); + Object service = runtime.getInterfaceImplementation(services.get(0), - Object.class); + 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); + .get("helloService"), Object.class); assertSame(service, service2); Object floatsvc = externalScope.getInterfaceImplementation(system - .getProvidedInterfaces().get(1), Object.class); + .getProvidedInterfaces().get(1), Object.class); assertTrue(floatsvc instanceof Float); assertTrue((((Float) floatsvc).floatValue() - 100.345f) < 0.00001); @@ -232,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); @@ -257,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); + } }