Serializable.class);
ProvidedInterface prov3 = new DefaultProvidedInterface("name",
MyMultiple.class);
-
+
Component client = new Application("client");
Component dummy = new Application("dummy");
-
- InterfaceRestriction noRestriction = new InterfaceRestriction() {
- @Override
+
+ InterfaceRestriction noRestriction = new InterfaceRestriction() {
+ @Override
public boolean isViolated(Component aClient,
RequiredInterface aRequired, Component aServer,
ProvidedInterface aProvided) {
return false;
- }
+ }
};
AssertionUtils.assertEquals(new ProvidedInterface[] { prov1 },
- Container.filterProvidedServices(client, req1,
- createProvidedInput(new ProvidedInterface[] { prov1 }, dummy), noRestriction));
+ Container.filterProvidedServices(client, req1,
+ createProvidedInput(new ProvidedInterface[] { prov1 },
+ dummy), noRestriction));
AssertionUtils.assertEquals(new ProvidedInterface[] { prov1 },
- Container.filterProvidedServices(client, req1,
- createProvidedInput(new ProvidedInterface[] { prov1, prov2 }, dummy), noRestriction));
+ Container.filterProvidedServices(client, req1,
+ createProvidedInput(new ProvidedInterface[] { prov1,
+ prov2 }, dummy), noRestriction));
AssertionUtils.assertEquals(new ProvidedInterface[] { prov1, prov3 },
- Container.filterProvidedServices(client, req1,
- createProvidedInput(new ProvidedInterface[] { prov1, prov3 }, dummy), noRestriction));
-
- InterfaceRestriction everything = new InterfaceRestriction() {
+ Container.filterProvidedServices(client, req1,
+ createProvidedInput(new ProvidedInterface[] { prov1,
+ prov3 }, dummy), noRestriction));
+
+ InterfaceRestriction everything = new InterfaceRestriction() {
@Override
public boolean isViolated(Component aClient,
RequiredInterface aRequired, Component aServer,
return true;
}
};
- AssertionUtils.assertEquals(new ProvidedInterface[0],
- Container.filterProvidedServices(client, req1,
- createProvidedInput(new ProvidedInterface[] { prov1, prov3 }, dummy), everything));
-
+ AssertionUtils.assertEquals(new ProvidedInterface[0], Container
+ .filterProvidedServices(client, req1, createProvidedInput(
+ new ProvidedInterface[] { prov1, prov3 }, dummy),
+ everything));
+
}
public void testEnvironmentApplication() {
assertEquals(env1.getString(), app.getString());
assertFalse(env2.getString().equals(app.getString()));
}
+
+ public void testProvidedInDifferentScopes() {
+ // Scoping problem occurred. Externally and internally provided
+ // components clashed
+ // because unique id generation in the scope was wrong.
+
+ StringComponent str = new StringComponent("string");
+ Application app = new Application("app");
+ Container container = new Container("top").addComponent(str)
+ .addComponent(app);
+ container.addRequiredInterface(new DefaultRequiredInterface("integer",
+ Integer.class));
+
+ ProvidedInterface provided = new DefaultProvidedInterface("hallo",
+ Integer.class);
+ container.getRequiredInterfaces()[0].setProvider(provided);
+
+ Scope external = new DefaultScope(new ProvidedInterface[0]);
+ external.publishInterface(provided, 100);
+ Scope scope = container.start(external);
+ }
+
+ public void testProvidedInterfaces() {
+ Environment env = new Environment(_tracker);
+ Container envcontainer = new Container("0").addComponent(env)
+ .addProvidedInterface(
+ new DefaultProvidedInterface("string", String.class))
+ .addProvidedInterface(
+ new DefaultProvidedInterface("integer", Integer.class));
+ Scope scope = envcontainer.start();
+
+ AssertionUtils.assertEquals(new String[] { "start.environment" },
+ _tracker.getEvents(Thread.currentThread()).toArray(
+ new String[0]));
+
+ envcontainer.stop(scope);
+ }
+
+ public void testCoupleTwoContainers() {
+ Environment env = new Environment(_tracker);
+ Container envcontainer = new Container("0").addComponent(env)
+ .addProvidedInterface(
+ new DefaultProvidedInterface("string", String.class))
+ .addProvidedInterface(
+ new DefaultProvidedInterface("integer", Integer.class));
+
+ Application app = new Application(_tracker);
+ Container appcontainer = new Container("1").addComponent(app)
+ .addRequiredInterface(
+ new DefaultRequiredInterface("string", String.class))
+ .addRequiredInterface(
+ new DefaultRequiredInterface("integer", Integer.class));
+
+ Container top = new Container("top");
+ top.addComponent(envcontainer).addComponent(appcontainer);
+
+ top.start();
+ AssertionUtils.assertEquals(new String[] { "start.environment", "start.application" },
+ _tracker.getEvents(Thread.currentThread()).toArray(
+ new String[0]));
+
+ }
}