[picocontainer-scm] [5565] java/2.x/trunk/pico/container/src/java/org/picocontainer: more emjection
paul-yCVjj/[email protected]
| Newsgroups | gmane.comp.java.picocontainer.cvs |
|---|---|
| Message-ID | <[email protected]> |
Revision 5565
Author paul
Date 2009-11-30 21:15:03 -0600 (Mon, 30 Nov 2009)
Log Message
more emjection
Modified Paths
- java/2.x/trunk/pico/container/src/java/org/picocontainer/Emjection.java
- java/2.x/trunk/pico/container/src/test/org/picocontainer/foo/EmjectionTestCase.java
Diff
Modified: java/2.x/trunk/pico/container/src/java/org/picocontainer/Emjection.java (5564 => 5565)
--- java/2.x/trunk/pico/container/src/java/org/picocontainer/Emjection.java 2009-11-30 19:23:36 UTC (rev 5564)
+++ java/2.x/trunk/pico/container/src/java/org/picocontainer/Emjection.java 2009-12-01 03:15:03 UTC (rev 5565)
@@ -2,6 +2,7 @@
import org.picocontainer.containers.ImmutablePicoContainer;
import org.picocontainer.containers.TransientPicoContainer;
+import org.picocontainer.injectors.ConstructorInjection;
import java.lang.reflect.Field;
import java.lang.reflect.Type;
@@ -21,7 +22,7 @@
if (emjection.pico == null) {
throw new PicoCompositionException("blah");
}
- TransientPicoContainer tpc = new TransientPicoContainer(emjection.pico);
+ TransientPicoContainer tpc = new TransientPicoContainer(new ConstructorInjection(), emjection.pico);
for (Object arg : args) {
tpc.addComponent(arg);
}
Modified: java/2.x/trunk/pico/container/src/test/org/picocontainer/foo/EmjectionTestCase.java (5564 => 5565)
--- java/2.x/trunk/pico/container/src/test/org/picocontainer/foo/EmjectionTestCase.java 2009-11-30 19:23:36 UTC (rev 5564)
+++ java/2.x/trunk/pico/container/src/test/org/picocontainer/foo/EmjectionTestCase.java 2009-12-01 03:15:03 UTC (rev 5565)
@@ -5,24 +5,45 @@
import org.picocontainer.DefaultPicoContainer;
import org.picocontainer.Emjection;
import org.picocontainer.MutablePicoContainer;
+import org.picocontainer.behaviors.Caching;
import static junit.framework.Assert.assertEquals;
+import static junit.framework.Assert.assertSame;
+import static org.junit.Assert.assertNotSame;
+import static org.picocontainer.Characteristics.EMJECTION_ENABLED;
public class EmjectionTestCase {
@Test
public void basicEmjection() {
-
StringBuilder sb = new StringBuilder();
MutablePicoContainer pico = new DefaultPicoContainer();
pico.addComponent(Antelope.class);
- pico.as(Characteristics.EMJECTION_ENABLED).addComponent(ZooKeeper.class);
+ pico.as(EMJECTION_ENABLED).addComponent(ZooKeeper.class);
pico.addComponent(sb);
ZooKeeper zooKeeper = pico.getComponent(ZooKeeper.class);
zooKeeper.doHeadCount();
-
assertEquals("giraffe=true, antelope=true", sb.toString());
+ }
+
+ @Test
+ public void testThatTransientNatureOfAdhocDependencies() {
+ MutablePicoContainer pico = new DefaultPicoContainer(new Caching());
+ pico.addComponent(Antelope.class);
+ pico.as(EMJECTION_ENABLED).addComponent(ZooKeeper.class);
+ pico.addComponent(new StringBuilder());
+ ZooKeeper component = pico.getComponent(ZooKeeper.class);
+ component.doHeadCount();
+ Zoo zoo1 = component.zoo;
+ component = pico.getComponent(ZooKeeper.class);
+ component.doHeadCount();
+ Zoo zoo2 = component.zoo;
+ zoo2.headCount();
+ assertNotSame(zoo1, zoo2); // made one the fly
+ assertNotSame(zoo1.giraffe, zoo2.giraffe); // made one the fly
+ assertSame(zoo1.antelope, zoo2.antelope); // in the parent-most picocontainer
+ assertSame(zoo1.sb, zoo2.sb); // in the parent-most picocontainer
}
@@ -49,9 +70,10 @@
public static class ZooKeeper {
private final Emjection emjection = new Emjection();
+ private Zoo zoo;
public void doHeadCount() {
- Zoo zoo = neu(Zoo.class, this, new Giraffe());
+ zoo = neu(Zoo.class, new Giraffe());
zoo.headCount();
}
----------
To unsubscribe from this list please visit:
http://xircles.codehaus.org/manage_email