import org.wamblee.system.core.DefaultScope;
import org.wamblee.system.core.Environment;
import org.wamblee.system.core.ProvidedInterface;
+import org.wamblee.system.core.ProvidedInterfaces;
import org.wamblee.system.core.RequiredInterface;
+import org.wamblee.system.core.RequiredInterfaces;
import org.wamblee.system.core.Scope;
import org.wamblee.system.core.StringComponent;
import org.wamblee.system.core.SystemAssemblyException;
application }, new ProvidedInterface[0],
new RequiredInterface[0]);
Scope runtime = system.start();
- RequiredInterface[] required = system.getRequiredInterfaces();
- assertEquals(0, required.length);
- ProvidedInterface[] provided = system.getProvidedInterfaces();
- assertEquals(0, provided.length);
+ RequiredInterfaces required = system.getRequiredInterfaces();
+ assertEquals(0, required.size());
+ ProvidedInterfaces provided = system.getProvidedInterfaces();
+ assertEquals(0, provided.size());
AssertionUtils.assertEquals(new String[] { "start.environment",
"start.application" }, _tracker.getEvents(
application }, new ProvidedInterface[0],
new RequiredInterface[] { new DefaultRequiredInterface("float",
Float.class) });
- system.getRequiredInterfaces()[0]
+ system.getRequiredInterfaces().get(0)
.setProvider(new DefaultProvidedInterface("hallo", Float.class));
system.start();
- RequiredInterface[] required = system.getRequiredInterfaces();
- assertEquals(1, required.length);
- ProvidedInterface[] provided = system.getProvidedInterfaces();
- assertEquals(0, provided.length);
+ RequiredInterfaces required = system.getRequiredInterfaces();
+ assertEquals(1, required.size());
+ ProvidedInterfaces provided = system.getProvidedInterfaces();
+ assertEquals(0, provided.size());
}
public void testCompositeWithExternalDependencesNotProvided() {
Component application = new Application();
Container system = new Container("all",
new Component[] { application }, new ProvidedInterface[0],
- application.getRequiredInterfaces());
+ application.getRequiredInterfaces().toArray());
system.start();
} catch (SystemAssemblyException e) {
return;
}
fail();
-
}
public void testDuplicateComponent() {
fail();
}
+
public void testInconsistentHierarchy() {
try {
Component comp = new Application();
Component application = new Application();
Container system = new Container("all",
new Component[] { application }, new ProvidedInterface[0],
- application.getRequiredInterfaces());
+ application.getRequiredInterfaces().toArray());
environment.start(new DefaultScope(new ProvidedInterface[0]));
- system.getRequiredInterfaces()[0].setProvider(environment
- .getProvidedInterfaces()[0]);
- system.getRequiredInterfaces()[1].setProvider(environment
- .getProvidedInterfaces()[1]);
+ system.getRequiredInterfaces().get(0).setProvider(environment
+ .getProvidedInterfaces().get(0));
+ system.getRequiredInterfaces().get(1).setProvider(environment
+ .getProvidedInterfaces().get(1));
system.start();
- RequiredInterface[] required = system.getRequiredInterfaces();
- assertEquals(2, required.length);
- ProvidedInterface[] provided = system.getProvidedInterfaces();
- assertEquals(0, provided.length);
+ RequiredInterfaces required = system.getRequiredInterfaces();
+ assertEquals(2, required.size());
+ ProvidedInterfaces provided = system.getProvidedInterfaces();
+ assertEquals(0, provided.size());
}
new Component[] { application }, new ProvidedInterface[0],
Application.required(true));
Environment env = new Environment();
- container.getRequiredInterfaces()[0].setProvider(env
- .getProvidedInterfaces()[0]);
- container.getRequiredInterfaces()[1].setProvider(env
- .getProvidedInterfaces()[1]);
- Scope external = new DefaultScope(env.getProvidedInterfaces());
+ container.getRequiredInterfaces().get(0).setProvider(env
+ .getProvidedInterfaces().get(0));
+ container.getRequiredInterfaces().get(1).setProvider(env
+ .getProvidedInterfaces().get(1));
+ Scope external = new DefaultScope(env.getProvidedInterfaces().toArray());
env.start(external);
container.start(external);
- assertSame(env.getProvidedInterfaces()[0], container
- .getRequiredInterfaces()[0].getProvider());
- assertSame(env.getProvidedInterfaces()[1], container
- .getRequiredInterfaces()[1].getProvider());
- assertSame(env.getProvidedInterfaces()[0], application
- .getRequiredInterfaces()[0].getProvider());
- assertSame(env.getProvidedInterfaces()[1], application
- .getRequiredInterfaces()[1].getProvider());
+ assertSame(env.getProvidedInterfaces().get(0), container
+ .getRequiredInterfaces().get(0).getProvider());
+ assertSame(env.getProvidedInterfaces().get(1), container
+ .getRequiredInterfaces().get(1).getProvider());
+ assertSame(env.getProvidedInterfaces().get(0), application
+ .getRequiredInterfaces().get(0).getProvider());
+ assertSame(env.getProvidedInterfaces().get(1), application
+ .getRequiredInterfaces().get(1).getProvider());
}
public void testOptionalRequiredInterfaceNotProvidedOptionalInternal() {
new Component[] { application }, new ProvidedInterface[0],
Application.required(true));
Environment env = new Environment();
- container.getRequiredInterfaces()[0].setProvider(env
- .getProvidedInterfaces()[0]);
+ container.getRequiredInterfaces().get(0).setProvider(env
+ .getProvidedInterfaces().get(0));
Scope external = new DefaultScope(new ProvidedInterface[0]);
- external.publishInterface(env.getProvidedInterfaces()[0], env
+ external.publishInterface(env.getProvidedInterfaces().get(0), env
.getString());
container.start(external);
- assertSame(env.getProvidedInterfaces()[0], container
- .getRequiredInterfaces()[0].getProvider());
- assertNull(container.getRequiredInterfaces()[1].getProvider());
- assertSame(env.getProvidedInterfaces()[0], application
- .getRequiredInterfaces()[0].getProvider());
- assertNull(application.getRequiredInterfaces()[1].getProvider());
+ assertSame(env.getProvidedInterfaces().get(0), container
+ .getRequiredInterfaces().get(0).getProvider());
+ assertNull(container.getRequiredInterfaces().get(1).getProvider());
+ assertSame(env.getProvidedInterfaces().get(0), application
+ .getRequiredInterfaces().get(0).getProvider());
+ assertNull(application.getRequiredInterfaces().get(1).getProvider());
}
public void testOptionalRequiredInterfaceProvidedMandatoryInternal() {
new Component[] { application }, new ProvidedInterface[0],
Application.required(true));
Environment env = new Environment();
- container.getRequiredInterfaces()[0].setProvider(env
- .getProvidedInterfaces()[0]);
- container.getRequiredInterfaces()[1].setProvider(env
- .getProvidedInterfaces()[1]);
+ container.getRequiredInterfaces().get(0).setProvider(env
+ .getProvidedInterfaces().get(0));
+ container.getRequiredInterfaces().get(1).setProvider(env
+ .getProvidedInterfaces().get(1));
try {
container.start();
} catch (SystemAssemblyException e) {
ProvidedInterface provided = new DefaultProvidedInterface("hallo",
Integer.class);
- container.getRequiredInterfaces()[0].setProvider(provided);
+ container.getRequiredInterfaces().get(0).setProvider(provided);
Scope external = new DefaultScope(new ProvidedInterface[0]);
external.publishInterface(provided, 100);
Thread.currentThread()).toArray(new String[0]));
}
-
- public void testNonUniqueRequiredInterface() {
+
+ public void testNonUniqueRequiredInterface() {
final Container container = new Container("top");
- container.addRequiredInterface(new DefaultRequiredInterface("i", Integer.class));
- container.addRequiredInterface(new DefaultRequiredInterface("x", String.class));
- container.addRequiredInterface(new DefaultRequiredInterface("y", String.class));
-
+ container.addRequiredInterface(new DefaultRequiredInterface("i",
+ Integer.class));
+ container.addRequiredInterface(new DefaultRequiredInterface("x",
+ String.class));
+ container.addRequiredInterface(new DefaultRequiredInterface("y",
+ String.class));
+
Application app = new Application("1");
container.addComponent(app);
-
- AssertionUtils.assertException(new AssertionUtils.ErroneousCode() {
+ AssertionUtils.assertException(new AssertionUtils.ErroneousCode() {
@Override
public void run() throws Exception {
- container.start();
+ container.start();
}
}, SystemAssemblyException.class);
-
- container.connectExternalRequired("1", app.getRequiredInterfaces()[0].getName(),
- "y");
-
+
+ container.connectExternalRequired("1", app.getRequiredInterfaces().get(0)
+ .getName(), "y");
+
ProvidedInterface i = new DefaultProvidedInterface("i", Integer.class);
ProvidedInterface x = new DefaultProvidedInterface("x", String.class);
ProvidedInterface y = new DefaultProvidedInterface("y", String.class);
-
+
Scope externalScope = new DefaultScope(new ProvidedInterface[0]);
-
+
externalScope.publishInterface(i, 100);
externalScope.publishInterface(x, "x-value");
externalScope.publishInterface(y, "y-value");
-
- container.getRequiredInterfaces()[0].setProvider(i);
- container.getRequiredInterfaces()[1].setProvider(x);
- container.getRequiredInterfaces()[2].setProvider(y);
-
+
+ container.getRequiredInterfaces().get(0).setProvider(i);
+ container.getRequiredInterfaces().get(1).setProvider(x);
+ container.getRequiredInterfaces().get(2).setProvider(y);
+
Scope runtime = container.start(externalScope);
-
+
assertEquals("y-value", app.getString());
-
+
+ }
+
+ public void testNonUniqueProvidedInterface() {
+
+ final Container container = new Container("top")
+ .addProvidedInterface(new DefaultProvidedInterface("external",
+ String.class));
+ Environment env1 = new Environment("env1");
+ Environment env2 = new Environment("env2");
+
+ container.addComponent(env1);
+ container.addComponent(env2);
+
+ AssertionUtils.assertException(new AssertionUtils.ErroneousCode() {
+ @Override
+ public void run() throws Exception {
+ container.start();
+ }
+ }, SystemAssemblyException.class);
+
+ // now choose env2
+
+ container.connectExternalProvided(container.getProvidedInterfaces().get(0)
+ .getName(), env2.getName(), env2.getProvidedInterfaces().get(0)
+ .getName());
+
+ Scope scope = container.start();
+
+ // check the value of the provided interface of the container
+
+ String value = scope.getInterfaceImplementation(container
+ .getProvidedInterfaces().get(0), String.class);
+ assertNotNull(value);
+ assertEquals(value, env2.getString());
+ assertFalse(value.equals(env1.getString()));
}
}