+/*
+ * 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;
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.ProvidedInterface;
-import org.wamblee.system.RequiredInterface;
-import org.wamblee.system.Service;
-import org.wamblee.system.ServiceRegistry;
-import org.wamblee.system.SystemAssemblyException;
+import org.wamblee.system.core.DefaultProvidedInterface;
+import org.wamblee.system.core.DefaultRequiredInterface;
+import org.wamblee.system.core.ProvidedInterface;
+import org.wamblee.system.core.RequiredInterface;
+import org.wamblee.system.core.SystemAssemblyException;
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, ProvidedInterface>(),
new HashMap<RequiredInterface, String>());
- system.start("Hello", new Service[0]);
- Service[] services = system.getRunningServices();
+ system.start();
+ ProvidedInterface[] services = system.getRunningServices();
assertEquals(0, services.length);
system.stop();
public void testOneProvidedService() {
Map<String, ProvidedInterface> provided = new HashMap<String, ProvidedInterface>();
- provided.put("helloService", new DefaultProvidedInterfaceDescriptor(
+ 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<RequiredInterface, String>());
- system.start("Hello", new Service[0]);
- Service[] services = system.getRunningServices();
+ system.start();
+ 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, ProvidedInterface> provided = new HashMap<String, ProvidedInterface>();
- provided.put("helloService", new DefaultProvidedInterfaceDescriptor(
+ 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<RequiredInterface, String>());
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();
+ 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, ProvidedInterface>(),
new HashMap<RequiredInterface, String>());
- system.start("Bla", new Service[0]);
+ system.start();
} catch (SystemAssemblyException e) {
//e.printStackTrace();
return;
public void testWithRequirement() {
Map<RequiredInterface, String> required = new HashMap<RequiredInterface, String>();
- required.put(new DefaultRequiredInterfaceDescriptor("hello", HelloService.class),
+ 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, 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();
system.stop();
}
public void testWithRequirementAndProvidedService() {
Map<RequiredInterface, String> required = new HashMap<RequiredInterface, String>();
- required.put(new DefaultRequiredInterfaceDescriptor("hello", HelloService.class),
+ required.put(new DefaultRequiredInterface("hello", HelloService.class),
"helloService");
Map<String,ProvidedInterface> provided = new HashMap<String, ProvidedInterface>();
- provided.put("blaService", new DefaultProvidedInterfaceDescriptor("bla",
+ 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();
+ 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();
}