Huge refactoring.
[utils] / system / spring / src / test / java / org / wamblee / system / spring / SpringComponentTest.java
index 43902d430c12f8130321bebf5eeb2a30d6f808fb..0914c9aa3d5e065c138ebb30387fe5f6ba377221 100644 (file)
@@ -12,7 +12,7 @@
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
- */ 
+ */
 package org.wamblee.system.spring;
 
 import java.io.IOException;
@@ -25,8 +25,10 @@ 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;
 import org.wamblee.system.core.ProvidedInterface;
 import org.wamblee.system.core.RequiredInterface;
+import org.wamblee.system.core.Scope;
 import org.wamblee.system.core.SystemAssemblyException;
 
 public class SpringComponentTest extends TestCase {
@@ -34,7 +36,7 @@ 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 PROPERTY_FILE = "test.org.wamblee.system.spring.properties";
+       private static final String PROPERTY_FILE = "test.org.wamblee.system.spring.properties";
 
        @Override
        protected void setUp() throws Exception {
@@ -46,46 +48,43 @@ public class SpringComponentTest extends TestCase {
                                new String[] { HELLO_SERVICE_SPRING_XML },
                                new HashMap<String, ProvidedInterface>(),
                                new HashMap<RequiredInterface, String>());
-               system.start();
-               ProvidedInterface[] services = system.getRunningInterfaces();
-               assertEquals(0, services.length);
-               
-               system.stop();
+               Scope runtime = system.start();
+               assertEquals(0, runtime.getProvidedInterfaces().length);
+
+               system.stop(runtime);
        }
 
        public void testOneProvidedService() {
                Map<String, ProvidedInterface> provided = new HashMap<String, ProvidedInterface>();
-               provided.put("helloService", new DefaultProvidedInterface(
-                               "hello", HelloService.class));
+               provided.put("helloService", new DefaultProvidedInterface("hello",
+                               HelloService.class));
 
-               SpringComponent system = new SpringComponent("system", 
+               SpringComponent system = new SpringComponent("system",
                                new String[] { HELLO_SERVICE_SPRING_XML }, provided,
                                new HashMap<RequiredInterface, String>());
-               system.start();
-               ProvidedInterface[] services = system.getRunningInterfaces();
+               Scope runtime = system.start();
+               ProvidedInterface[] services = runtime.getProvidedInterfaces();
                assertEquals(1, services.length);
-               assertTrue(services[0].getImplementation() instanceof HelloService);
-               assertEquals("Hello world!", ((HelloService)services[0].getImplementation())
-                               .say());
-               system.stop();
+               Object service = runtime.retrieveInterfaceImplementation(services[0], Object.class);
+               assertTrue(service instanceof HelloService);
+               assertEquals("Hello world!", ((HelloService) service).say());
+               system.stop(runtime);
        }
-       
+
        public void testWithProperties() throws IOException {
                Map<String, ProvidedInterface> provided = new HashMap<String, ProvidedInterface>();
-               provided.put("helloService", new DefaultProvidedInterface(
-                               "hello", HelloService.class));
-               SpringComponent system = new SpringComponent("system", 
+               provided.put("helloService", new DefaultProvidedInterface("hello",
+                               HelloService.class));
+               SpringComponent system = new SpringComponent("system",
                                new String[] { HELLO_SERVICE_SPRING_WITH_PROPERTIES_XML },
-                               provided,
-                               new HashMap<RequiredInterface, String>());
+                               provided, new HashMap<RequiredInterface, String>());
                Properties props = new Properties();
                props.load(new ClassPathResource(PROPERTY_FILE).getInputStream());
                system.addProperties(props);
-               
-               system.start();
-               ProvidedInterface[] services = system.getRunningInterfaces();
-               assertEquals("Property Value", 
-                               ((HelloService)services[0].getImplementation()).say());
+
+               Scope scope = system.start();
+               ProvidedInterface[] services = scope.getProvidedInterfaces();
+               assertEquals("Property Value", scope.retrieveInterfaceImplementation(services[0], HelloService.class).say());
        }
 
        public void testWithMissingRequirement() {
@@ -96,7 +95,7 @@ public class SpringComponentTest extends TestCase {
                                        new HashMap<RequiredInterface, String>());
                        system.start();
                } catch (SystemAssemblyException e) {
-                       //e.printStackTrace();
+                       // e.printStackTrace();
                        return;
                }
                fail();
@@ -109,41 +108,44 @@ public class SpringComponentTest extends TestCase {
                SpringComponent system = new SpringComponent("system",
                                new String[] { HELLO_SERVICE_SPRING_WITH_REQS_XML },
                                new HashMap<String, ProvidedInterface>(), required);
-               
-               HelloService helloObject = new HelloService("ladida"); 
-               ProvidedInterface helloService = new DefaultProvidedInterface("hello", HelloService.class);
-               helloService.publish(helloObject);
+
+               HelloService helloObject = new HelloService("ladida");
+               ProvidedInterface helloService = new DefaultProvidedInterface("hello",
+                               HelloService.class);
+               Scope scope = new DefaultScope(new ProvidedInterface[]{ helloService });
+               scope.publishInterface(helloService, helloObject);
                system.getRequiredInterfaces()[0].setProvider(helloService);
-               
-               system.start();
-               system.stop();
+
+               Scope runtime = system.start(scope);
+               system.stop(runtime);
        }
-       
+
        public void testWithRequirementAndProvidedService() {
                Map<RequiredInterface, String> required = new HashMap<RequiredInterface, String>();
                required.put(new DefaultRequiredInterface("hello", HelloService.class),
                                "helloService");
-               Map<String,ProvidedInterface> provided = new HashMap<String, ProvidedInterface>();
+               Map<String, ProvidedInterface> provided = new HashMap<String, ProvidedInterface>();
                provided.put("blaService", new DefaultProvidedInterface("bla",
                                BlaService.class));
 
                SpringComponent system = new SpringComponent("system",
-                               new String[] { HELLO_SERVICE_SPRING_WITH_REQS_XML },
-                               provided, required);
-               
-               HelloService helloObject = new HelloService("ladida"); 
-               ProvidedInterface helloService = 
-                       new DefaultProvidedInterface("hello", HelloService.class);
-               helloService.publish(helloObject);
+                               new String[] { HELLO_SERVICE_SPRING_WITH_REQS_XML }, provided,
+                               required);
+
+               HelloService helloObject = new HelloService("ladida");
+               ProvidedInterface helloService = new DefaultProvidedInterface("hello",
+                               HelloService.class);
+               Scope scope = new DefaultScope(new ProvidedInterface[] {  helloService });
+               scope.publishInterface(helloService, helloObject);
                system.getRequiredInterfaces()[0].setProvider(helloService);
-               system.start();
-               ProvidedInterface started = system.getProvidedInterfaces()[0];
-               
-           assertNotNull(started.getImplementation());
-           assertTrue(started.getImplementation() instanceof BlaService);
-               assertEquals("ladida", 
-                               ((BlaService)started.getImplementation()).execute());
-               system.stop();
+               Scope runtime = system.start(scope);
+               ProvidedInterface started = runtime.getProvidedInterfaces()[0];
+
+               Object impl = runtime.retrieveInterfaceImplementation(started, BlaService.class);
+               assertNotNull(impl);
+               assertTrue(impl instanceof BlaService);
+               assertEquals("ladida", ((BlaService)impl).execute());
+               system.stop(runtime);
        }
 
 }