*/
package org.wamblee.system.adapters;
+import java.util.Collections;
import java.util.List;
import org.wamblee.system.core.DefaultProvidedInterface;
import org.wamblee.system.core.ProvidedInterface;
import org.wamblee.system.core.RequiredInterface;
+import org.wamblee.system.core.RequiredInterfaceComparator;
import org.wamblee.test.AssertionUtils;
public class ClassConfigurationTest extends AdapterTestCase {
+ public void testConstructorConfig() {
+ ClassConfiguration classConfig = new ClassConfiguration(X1.class);
- public void testConstructorConfig() {
- ClassConfiguration classConfig = new ClassConfiguration(X1.class);
-
- ConstructorConfiguration config = classConfig.getConstructorConfig()
- .greedy();
- ProvidedInterface provided = new DefaultProvidedInterface("arg",
- String.class);
- List<RequiredInterface> required = config.getRequiredInterfaces();
+ ConstructorConfiguration config = classConfig.getConstructorConfig()
+ .greedy();
+ ProvidedInterface provided = new DefaultProvidedInterface("arg",
+ String.class);
+ List<RequiredInterface> required = classConfig.getRequiredInterfaces();
- assertEquals(1, required.size());
- assertFalse(required.get(0).isOptional());
+ assertEquals(1, required.size());
+ assertFalse(required.get(0).isOptional());
- required.get(0).setProvider(provided);
+ required.get(0).setProvider(provided);
- provided.publish("hello", _scope);
- config.create(_scope);
+ provided.publish("hello", _scope);
+ classConfig.create(_scope);
+
+ AssertionUtils.assertEquals(new String[] { "x1(hello)" },
+ AdapterTestCase.EVENT_TRACKER.getEvents(Thread.currentThread())
+ .toArray());
+ }
+
+ public void testConstructorConfigWithSetters() {
+ ClassConfiguration classConfig = new ClassConfiguration(X7.class);
+
+ classConfig.getConstructorConfig().select(Boolean.class);
+ classConfig.getObjectConfig().getSetterConfig().values("port").setValue(0, 10);
+
+ ProvidedInterface providedBoolean = new DefaultProvidedInterface("boolean",
+ Boolean.class);
+ ProvidedInterface providedHost = new DefaultProvidedInterface("host", String.class);
+ List<RequiredInterface> required = classConfig.getRequiredInterfaces();
+
+ Collections.sort(required, new RequiredInterfaceComparator());
+ assertEquals(2, required.size());
+ assertEquals("arg0", required.get(0).getName());
+
+ required.get(0).setProvider(providedBoolean);
+ required.get(1).setProvider(providedHost);
+
+ providedBoolean.publish(true, _scope);
+ providedHost.publish("host.name.org", _scope);
+
+ Object obj = classConfig.create(_scope);
+ assertTrue(obj instanceof X7);
+ X7 x7 = (X7)obj;
+ assertNotNull(x7.getBoolean());
+ assertTrue(x7.getBoolean());
+ assertNull(x7.getHost());
+ assertNull(x7.getPort());
+
+ classConfig.inject(_scope, obj);
+
+ assertEquals("host.name.org", x7.getHost());
+ assertEquals(10, x7.getPort().intValue());
+ }
- AssertionUtils.assertEquals(new String[] { "x1(hello)" }, AdapterTestCase.EVENT_TRACKER
- .getEvents(Thread.currentThread()).toArray());
- }
}