(no commit message)
[utils] / system / spring / src / test / java / org / wamblee / system / spring / SpringComponentTest.java
index f83e2ec116a885cb7a78dd23f4f03a59e95635f9..97e0417e9ec9f7db9a6d55455c2cae9b28d1b790 100644 (file)
@@ -1,3 +1,18 @@
+/*
+ * 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.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */ 
 package org.wamblee.system.spring;
 
 import java.io.IOException;
@@ -8,13 +23,10 @@ import java.util.Properties;
 import junit.framework.TestCase;
 
 import org.wamblee.io.ClassPathResource;
-import org.wamblee.system.DefaultProvidedInterfaceDescriptor;
-import org.wamblee.system.DefaultRequiredInterfaceDescriptor;
-import org.wamblee.system.DefaultServiceRegistry;
-import org.wamblee.system.ProvidedInterfaceDescriptor;
-import org.wamblee.system.RequiredInterfaceDescriptor;
-import org.wamblee.system.Service;
-import org.wamblee.system.ServiceRegistry;
+import org.wamblee.system.DefaultProvidedInterface;
+import org.wamblee.system.DefaultRequiredInterface;
+import org.wamblee.system.ProvidedInterface;
+import org.wamblee.system.RequiredInterface;
 import org.wamblee.system.SystemAssemblyException;
 
 public class SpringComponentTest extends TestCase {
@@ -24,67 +36,65 @@ public class SpringComponentTest extends TestCase {
        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 ServiceRegistry _registry;
-
        @Override
        protected void setUp() throws Exception {
                super.setUp();
-               _registry = new DefaultServiceRegistry();
        }
 
        public void testBlackboxSystem() {
-               SpringComponent system = new SpringComponent("system", _registry,
+               SpringComponent system = new SpringComponent("system",
                                new String[] { HELLO_SERVICE_SPRING_XML },
-                               new HashMap<String, ProvidedInterfaceDescriptor>(),
-                               new HashMap<RequiredInterfaceDescriptor, String>());
-               system.start("Hello", new Service[0]);
-               Service[] services = system.getRunningServices();
+                               new HashMap<String, ProvidedInterface>(),
+                               new HashMap<RequiredInterface, String>());
+               system.start("Hello");
+               ProvidedInterface[] services = system.getRunningServices();
                assertEquals(0, services.length);
                
                system.stop();
        }
 
        public void testOneProvidedService() {
-               Map<String, ProvidedInterfaceDescriptor> provided = new HashMap<String, ProvidedInterfaceDescriptor>();
-               provided.put("helloService", new DefaultProvidedInterfaceDescriptor(
+               Map<String, ProvidedInterface> provided = new HashMap<String, ProvidedInterface>();
+               provided.put("helloService", new DefaultProvidedInterface(
                                "hello", HelloService.class));
 
-               SpringComponent system = new SpringComponent("system", _registry,
+               SpringComponent system = new SpringComponent("system", 
                                new String[] { HELLO_SERVICE_SPRING_XML }, provided,
-                               new HashMap<RequiredInterfaceDescriptor, String>());
-               system.start("Hello", new Service[0]);
-               Service[] services = system.getRunningServices();
+                               new HashMap<RequiredInterface, String>());
+               system.start("Hello");
+               ProvidedInterface[] services = system.getRunningServices();
                assertEquals(1, services.length);
-               assertTrue(services[0].reference(HelloService.class) instanceof HelloService);
-               assertEquals("Hello world!", services[0].reference(HelloService.class)
+               assertTrue(services[0].getImplementation() instanceof HelloService);
+               assertEquals("Hello world!", ((HelloService)services[0].getImplementation())
                                .say());
                system.stop();
        }
        
        public void testWithProperties() throws IOException {
-               Map<String, ProvidedInterfaceDescriptor> provided = new HashMap<String, ProvidedInterfaceDescriptor>();
-               provided.put("helloService", new DefaultProvidedInterfaceDescriptor(
+               Map<String, ProvidedInterface> provided = new HashMap<String, ProvidedInterface>();
+               provided.put("helloService", new DefaultProvidedInterface(
                                "hello", HelloService.class));
-               SpringComponent system = new SpringComponent("system", _registry,
+               SpringComponent system = new SpringComponent("system", 
                                new String[] { HELLO_SERVICE_SPRING_WITH_PROPERTIES_XML },
                                provided,
-                               new HashMap<RequiredInterfaceDescriptor, String>());
+                               new HashMap<RequiredInterface, String>());
                Properties props = new Properties();
                props.load(new ClassPathResource(PROPERTY_FILE).getInputStream());
                system.addProperties(props);
                
-               system.start("Hello", new Service[0]);
-               Service[] services = system.getRunningServices();
-               assertEquals("Property Value", services[0].reference(HelloService.class).say());
+               system.start("Hello");
+               ProvidedInterface[] services = system.getRunningServices();
+               assertEquals("Property Value", 
+                               ((HelloService)services[0].getImplementation()).say());
        }
 
        public void testWithMissingRequirement() {
                try {
-                       SpringComponent system = new SpringComponent("system", _registry,
+                       SpringComponent system = new SpringComponent("system",
                                        new String[] { HELLO_SERVICE_SPRING_WITH_REQS_XML },
-                                       new HashMap<String, ProvidedInterfaceDescriptor>(),
-                                       new HashMap<RequiredInterfaceDescriptor, String>());
-                       system.start("Bla", new Service[0]);
+                                       new HashMap<String, ProvidedInterface>(),
+                                       new HashMap<RequiredInterface, String>());
+                       system.start("Bla");
                } catch (SystemAssemblyException e) {
                        //e.printStackTrace();
                        return;
@@ -93,39 +103,46 @@ public class SpringComponentTest extends TestCase {
        }
 
        public void testWithRequirement() {
-               Map<RequiredInterfaceDescriptor, String> required = new HashMap<RequiredInterfaceDescriptor, String>();
-               required.put(new DefaultRequiredInterfaceDescriptor("hello", HelloService.class),
+               Map<RequiredInterface, String> required = new HashMap<RequiredInterface, String>();
+               required.put(new DefaultRequiredInterface("hello", HelloService.class),
                                "helloService");
-               SpringComponent system = new SpringComponent("system", _registry,
+               SpringComponent system = new SpringComponent("system",
                                new String[] { HELLO_SERVICE_SPRING_WITH_REQS_XML },
-                               new HashMap<String, ProvidedInterfaceDescriptor>(), required);
+                               new HashMap<String, ProvidedInterface>(), required);
                
                HelloService helloObject = new HelloService("ladida"); 
-               Service helloService = _registry.register(new DefaultProvidedInterfaceDescriptor("hello", HelloService.class), helloObject);
-               system.start("Bla", new Service[] { helloService } );
+               ProvidedInterface helloService = new DefaultProvidedInterface("hello", HelloService.class);
+               helloService.publish(helloObject);
+               system.getRequiredServices()[0].setProvider(helloService);
+               
+               system.start("Bla");
                system.stop();
        }
        
        public void testWithRequirementAndProvidedService() {
-               Map<RequiredInterfaceDescriptor, String> required = new HashMap<RequiredInterfaceDescriptor, String>();
-               required.put(new DefaultRequiredInterfaceDescriptor("hello", HelloService.class),
+               Map<RequiredInterface, String> required = new HashMap<RequiredInterface, String>();
+               required.put(new DefaultRequiredInterface("hello", HelloService.class),
                                "helloService");
-               Map<String,ProvidedInterfaceDescriptor> provided = new HashMap<String, ProvidedInterfaceDescriptor>();
-               provided.put("blaService", new DefaultProvidedInterfaceDescriptor("bla",
+               Map<String,ProvidedInterface> provided = new HashMap<String, ProvidedInterface>();
+               provided.put("blaService", new DefaultProvidedInterface("bla",
                                BlaService.class));
 
-               SpringComponent system = new SpringComponent("system", _registry,
+               SpringComponent system = new SpringComponent("system",
                                new String[] { HELLO_SERVICE_SPRING_WITH_REQS_XML },
                                provided, required);
                
                HelloService helloObject = new HelloService("ladida"); 
-               Service helloService = _registry.register(new DefaultProvidedInterfaceDescriptor("hello", HelloService.class), helloObject);
-               Service[] services = system.start("Bla", new Service[] { helloService } );
-               assertEquals(1, services.length);
+               ProvidedInterface helloService = 
+                       new DefaultProvidedInterface("hello", HelloService.class);
+               helloService.publish(helloObject);
+               system.getRequiredServices()[0].setProvider(helloService);
+               system.start("Bla");
+               ProvidedInterface started = system.getProvidedServices()[0];
                
-               assertTrue(services[0].reference(BlaService.class) instanceof BlaService);
-               assertEquals("ladida", services[0].reference(BlaService.class)
-                               .execute());
+           assertNotNull(started.getImplementation());
+           assertTrue(started.getImplementation() instanceof BlaService);
+               assertEquals("ladida", 
+                               ((BlaService)started.getImplementation()).execute());
                system.stop();
        }