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;
AssertionUtils.assertEquals(new String[] { "start.environment",
"start.application" }, _tracker.getEvents(
Thread.currentThread()).toArray(new String[0]));
- assertEquals(0, scope.getProvidedInterfaces().length);
+ assertEquals(0, scope.getProvidedInterfaces().size());
assertEquals(environment.getString(), application.getString());
assertEquals(environment.getInteger(), application.getInteger());
AssertionUtils.assertEquals(new String[] { "start.environment",
"start.application" }, _tracker.getEvents(
Thread.currentThread()).toArray(new String[0]));
- assertEquals(0, scope.getProvidedInterfaces().length);
+ assertEquals(0, scope.getProvidedInterfaces().size());
assertEquals(environment.getString(), application.getString());
assertEquals(environment.getInteger(), application.getInteger());
public void testApplicationEnvironment() {
try {
- Component environment = new Environment();
- Component application = new Application();
+ Component<?> environment = new Environment();
+ Component<?> application = new Application();
Container container = new Container("root", new Component[] {
application, environment }, new ProvidedInterface[0],
new RequiredInterface[0]);
}
public void testComposite() {
- Component environment = new Environment(_tracker);
- Component application = new Application(_tracker);
+ Component<?> environment = new Environment(_tracker);
+ Component<?> application = new Application(_tracker);
assertEquals(0, _tracker.getEventCount());
Container system = new Container("all", new Component[] { environment,
application }, new ProvidedInterface[0],
new RequiredInterface[0]);
Scope runtime = system.start();
- RequiredInterfaces required = system.getRequiredInterfaces();
+ List<RequiredInterface> required = system.getRequiredInterfaces();
assertEquals(0, required.size());
- ProvidedInterfaces provided = system.getProvidedInterfaces();
+ List<ProvidedInterface> provided = system.getProvidedInterfaces();
assertEquals(0, provided.size());
AssertionUtils.assertEquals(new String[] { "start.environment",
public void testCompositeWithWrongProvidedInfo() {
try {
- Component environment = new Environment();
- Component application = new Application();
+ Component<?> environment = new Environment();
+ Component<?> application = new Application();
Container system = new Container("all", new Component[] {
environment, application },
new ProvidedInterface[] { new DefaultProvidedInterface(
public void testCompositeRequiredInterfaceNotProvided() {
try {
- Component environment = new Environment();
- Component application = new Application();
+ Component<?> environment = new Environment();
+ Component<?> application = new Application();
Container system = new Container("all", new Component[] {
environment, application }, new ProvidedInterface[0],
new RequiredInterface[] { new DefaultRequiredInterface(
}
public void testCompositeWithSuperfluousRequiredInfo() {
- Component environment = new Environment();
- Component application = new Application();
+ Component<?> environment = new Environment();
+ Component<?> application = new Application();
Container system = new Container("all", new Component[] { environment,
application }, new ProvidedInterface[0],
new RequiredInterface[] { new DefaultRequiredInterface("float",
system.getRequiredInterfaces().get(0)
.setProvider(new DefaultProvidedInterface("hallo", Float.class));
system.start();
- RequiredInterfaces required = system.getRequiredInterfaces();
+ List<RequiredInterface> required = system.getRequiredInterfaces();
assertEquals(1, required.size());
- ProvidedInterfaces provided = system.getProvidedInterfaces();
+ List<ProvidedInterface> provided = system.getProvidedInterfaces();
assertEquals(0, provided.size());
}
public void testCompositeWithExternalDependencesNotProvided() {
try {
- Component environment = new Environment();
- Component application = new Application();
+ Component<?> application = new Application();
+
Container system = new Container("all",
new Component[] { application }, new ProvidedInterface[0],
- application.getRequiredInterfaces().toArray());
+ application.getRequiredInterfaces().toArray(new RequiredInterface[0]));
system.start();
} catch (SystemAssemblyException e) {
return;
public void testDuplicateComponent() {
try {
- Component comp1 = new Application();
- Component comp2 = new Application();
+ Component<?> comp1 = new Application();
+ Component<?> comp2 = new Application();
Container system = new Container("top");
system.addComponent(comp1).addComponent(comp2);
} catch (SystemAssemblyException e) {
public void testInconsistentHierarchy() {
try {
- Component comp = new Application();
+ Component<?> comp = new Application();
Container system = new Container("top").addComponent(comp);
Container system2 = new Container("top2").addComponent(comp);
} catch (SystemAssemblyException e) {
public void testCompositeWithExternalDependencesProvided() {
- Component environment = new Environment();
- Component application = new Application();
+ Component<?> environment = new Environment();
+ Component<?> application = new Application();
Container system = new Container("all",
new Component[] { application }, new ProvidedInterface[0],
- application.getRequiredInterfaces().toArray());
+ application.getRequiredInterfaces().toArray(new RequiredInterface[0]));
environment.start(new DefaultScope(new ProvidedInterface[0]));
system.getRequiredInterfaces().get(0).setProvider(environment
.getProvidedInterfaces().get(0));
.getProvidedInterfaces().get(1));
system.start();
- RequiredInterfaces required = system.getRequiredInterfaces();
+ List<RequiredInterface> required = system.getRequiredInterfaces();
assertEquals(2, required.size());
- ProvidedInterfaces provided = system.getProvidedInterfaces();
+ List<ProvidedInterface> provided = system.getProvidedInterfaces();
assertEquals(0, provided.size());
}
public void testAmbiguousInterfaces() {
try {
- Component environment1 = new Environment();
- Component environment2 = new Environment();
- Component application = new Application();
+ Component<?> environment1 = new Environment();
+ Component<?> environment2 = new Environment();
+ Component<?> application = new Application();
Container container = new Container("root", new Component[] {
environment1, environment2, application },
new ProvidedInterface[0], new RequiredInterface[0]);
public void testIncompleteRequirements() {
try {
- Component application = new Application();
+ Component<?> application = new Application();
Container system = new Container("all",
new Component[] { application }, new ProvidedInterface[0],
new RequiredInterface[0]);
.getProvidedInterfaces().get(0));
container.getRequiredInterfaces().get(1).setProvider(env
.getProvidedInterfaces().get(1));
- Scope external = new DefaultScope(env.getProvidedInterfaces().toArray());
+ Scope external = new DefaultScope(env.getProvidedInterfaces());
env.start(external);
container.start(external);
container.connectRequiredProvided("app", null, "env1", null);
container.start();
assertEquals(env1.getString(), app.getString());
+ assertEquals(env1.getInteger(), app.getInteger());
assertFalse(env2.getString().equals(app.getString()));
+ assertFalse(env2.getInteger().equals(app.getInteger()));
}
+
+ public void testRestrictionWithFromAndToInterfaceName() {
+ Environment env1 = new Environment("env1");
+ Environment env2 = new Environment("env2");
+ Application app = new Application("app");
+ Container container = new Container("top").addComponent(env1)
+ .addComponent(env2).addComponent(app);
+ container.connectRequiredProvided("app", app.getRequiredInterfaces().get(0).getName(),
+ "env1", env1.getProvidedInterfaces().get(0).getName());
+ container.connectRequiredProvided("app", app.getRequiredInterfaces().get(1).getName(),
+ "env2", env2.getProvidedInterfaces().get(1).getName());
+ container.start();
+ assertEquals(env1.getString(), app.getString());
+ assertEquals(env2.getInteger(), app.getInteger());
+ assertFalse(env2.getString().equals(app.getString()));
+ assertFalse(env1.getInteger().equals(app.getInteger()));
+ }
+
+ public void testRestrictionWrongComponentNames() {
+ Environment env1 = new Environment("env1");
+ Environment env2 = new Environment("env2");
+ Application app = new Application("app");
+ final Container container = new Container("top").addComponent(env1)
+ .addComponent(env2).addComponent(app);
+ AssertionUtils.assertException(new AssertionUtils.ErroneousCode() {
+ @Override
+ public void run() throws Exception {
+ container.connectRequiredProvided("app2", null, "env1", null);
+ }
+ }, SystemAssemblyException.class);
+ AssertionUtils.assertException(new AssertionUtils.ErroneousCode() {
+ @Override
+ public void run() throws Exception {
+ container.connectRequiredProvided("app", null, "env3", null);
+ }
+ }, SystemAssemblyException.class);
+ }
+
+ public void testRestrictionWrongInterfaceNames() {
+ final Environment env1 = new Environment("env1");
+ Environment env2 = new Environment("env2");
+ final Application app = new Application("app");
+ final Container container = new Container("top").addComponent(env1)
+ .addComponent(env2).addComponent(app);
+ AssertionUtils.assertException(new AssertionUtils.ErroneousCode() {
+ @Override
+ public void run() throws Exception {
+ container.connectRequiredProvided("app",
+ app.getRequiredInterfaces().get(0).getName() + "xxx", "env1", null);
+ }
+ }, SystemAssemblyException.class);
+ AssertionUtils.assertException(new AssertionUtils.ErroneousCode() {
+ @Override
+ public void run() throws Exception {
+ container.connectRequiredProvided("app", null, "env1",
+ env1.getProvidedInterfaces().get(0).getName() + "yyy");
+ }
+ }, SystemAssemblyException.class);
+ }
+
public void testProvidedInDifferentScopes() {
// Scoping problem occurred. Externally and internally provided