[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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.