/*
- * Copyright 2008 the original author or authors.
+ * Copyright 2005-2010 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
*/
package org.wamblee.system.adapters;
+import org.wamblee.system.container.Container;
import org.wamblee.system.core.Component;
-import org.wamblee.system.core.Container;
-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.test.AssertionUtils;
-import junit.framework.TestCase;
+import org.wamblee.test.AssertionUtils;
+/**
+ *
+ * @author $author$
+ * @version $Revision$
+ */
public class ClassAdapterTest extends AdapterTestCase {
+ public void testSimpleConstructorInjection() {
+ ClassConfiguration x1Config = new ClassConfiguration(X1.class);
+ x1Config.getObjectConfig().getSetterConfig().initAllSetters();
+ x1Config.getConstructorConfig().getParameters().setValue(0, "hello");
+ ClassConfiguration x4Config = new ClassConfiguration(X4.class);
+ x4Config.getObjectConfig().getSetterConfig().initAllSetters();
- public void testSimpleConstructorInjection() {
- ClassConfiguration x1Config = new ClassConfiguration(X1.class);
- x1Config.getConstructorConfig().getParameters().setValue(0, "hello");
- ClassConfiguration x4Config = new ClassConfiguration(X4.class);
-
ClassAdapter x1Adapter = new ClassAdapter("x1", x1Config);
ClassAdapter x4Adapter = new ClassAdapter("x4", x4Config);
-
- Container container = new Container("top", new Component[] {
- x1Adapter, x4Adapter
- }, new ProvidedInterface[0], new RequiredInterface[0]);
-
+
+ Container container = new Container("top", new Component[] { x1Adapter,
+ x4Adapter }, new ProvidedInterface[0], new RequiredInterface[0]);
+
Scope scope = container.start();
AssertionUtils.assertEquals(new String[] { "x1(hello)", "x4(x1)" },
- EVENT_TRACKER.getEvents(Thread.currentThread()).toArray());
-
- Object obj = scope.getRuntime(x1Adapter);
- assertTrue(obj instanceof X1);
- obj = scope.getRuntime(x4Adapter);
- assertTrue(obj instanceof X4);
- }
+ EVENT_TRACKER.getEvents(Thread.currentThread()).toArray());
+
+ Object obj1 = scope.getRuntime(x1Adapter);
+ assertTrue(obj1 instanceof X1);
+
+ Object obj4 = scope.getRuntime(x4Adapter);
+ assertTrue(obj4 instanceof X4);
+
+ X1 x1 = (X1) obj1;
+ X4 x4 = (X4) obj4;
+
+ assertSame(x1, x4.getX1());
+ }
+
+ public void testConstructorAndSetterInjection() {
+ ClassConfiguration x1Config = new ClassConfiguration(X1.class);
+ x1Config.getObjectConfig().getSetterConfig().initAllSetters();
+ x1Config.getConstructorConfig().getParameters().setValue(0, "hello");
+
+ ClassConfiguration x4Config = new ClassConfiguration(X4.class);
+ x4Config.getObjectConfig().getSetterConfig().initAllSetters();
+
+ ClassConfiguration x8Config = new ClassConfiguration(X8.class);
+ x8Config.getObjectConfig().getSetterConfig().initAllSetters();
+
+ ClassAdapter x1Adapter = new ClassAdapter("x1", x1Config);
+ ClassAdapter x4Adapter = new ClassAdapter("x4", x4Config);
+ ClassAdapter x8Adapter = new ClassAdapter("x8", x8Config);
+
+ Container container = new Container("top", new Component[] { x1Adapter,
+ x4Adapter, x8Adapter }, new ProvidedInterface[0],
+ new RequiredInterface[0]);
+
+ Scope scope = container.start();
+ AssertionUtils.assertEquals(new String[] { "x1(hello)", "x4(x1)",
+ "x8(x1)", "x8.setX4(x4)" }, EVENT_TRACKER.getEvents(
+ Thread.currentThread()).toArray());
+
+ Object obj1 = scope.getRuntime(x1Adapter);
+ assertTrue(obj1 instanceof X1);
+
+ Object obj4 = scope.getRuntime(x4Adapter);
+ assertTrue(obj4 instanceof X4);
+
+ Object obj8 = scope.getRuntime(x8Adapter);
+
+ X1 x1 = (X1) obj1;
+ X4 x4 = (X4) obj4;
+ X8 x8 = (X8) obj8;
+
+ assertSame(x4, x8.getX4());
+ assertSame(x1, x8.getX1());
+ }
}