* 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.DefaultProvidedInterface;
-import org.wamblee.system.DefaultRequiredInterface;
-import org.wamblee.system.ProvidedInterface;
-import org.wamblee.system.RequiredInterface;
-import org.wamblee.system.SystemAssemblyException;
+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 {
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 {
new String[] { HELLO_SERVICE_SPRING_XML },
new HashMap<String, ProvidedInterface>(),
new HashMap<RequiredInterface, String>());
- system.start();
- ProvidedInterface[] services = system.getRunningServices();
- 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.getRunningServices();
+ 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.getInterfaceImplementation(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.getRunningServices();
- assertEquals("Property Value",
- ((HelloService)services[0].getImplementation()).say());
+
+ Scope scope = system.start();
+ ProvidedInterface[] services = scope.getProvidedInterfaces();
+ assertEquals("Property Value", scope.getInterfaceImplementation(services[0], HelloService.class).say());
}
public void testWithMissingRequirement() {
new HashMap<RequiredInterface, String>());
system.start();
} catch (SystemAssemblyException e) {
- //e.printStackTrace();
+ // e.printStackTrace();
return;
}
fail();
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);
- system.getRequiredServices()[0].setProvider(helloService);
-
- system.start();
- system.stop();
+
+ 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);
+
+ 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);
- system.getRequiredServices()[0].setProvider(helloService);
- system.start();
- ProvidedInterface started = system.getProvidedServices()[0];
-
- assertNotNull(started.getImplementation());
- assertTrue(started.getImplementation() instanceof BlaService);
- assertEquals("ladida",
- ((BlaService)started.getImplementation()).execute());
- system.stop();
+ 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);
+ Scope runtime = system.start(scope);
+ ProvidedInterface started = runtime.getProvidedInterfaces()[0];
+
+ Object impl = runtime.getInterfaceImplementation(started, BlaService.class);
+ assertNotNull(impl);
+ assertTrue(impl instanceof BlaService);
+ assertEquals("ladida", ((BlaService)impl).execute());
+ system.stop(runtime);
}
}