[picocontainer-scm] [5603] java/2.x/trunk/pico/container/src/test/org/picocontainer/injectors: named method injection added

paul-yCVjj/[email protected]
Newsgroups gmane.comp.java.picocontainer.cvs
Message-ID <[email protected]>
Revision 5603
Author paul
Date 2010-02-12 14:24:59 -0600 (Fri, 12 Feb 2010)

Log Message

named method injection added

Added Paths

- java/2.x/trunk/pico/container/src/java/org/picocontainer/injectors/NamedMethodInjection.java

- java/2.x/trunk/pico/container/src/test/org/picocontainer/injectors/NamedInjectionTestCase.java

Diff

Added: java/2.x/trunk/pico/container/src/java/org/picocontainer/injectors/NamedMethodInjection.java (0 => 5603)

--- java/2.x/trunk/pico/container/src/java/org/picocontainer/injectors/NamedMethodInjection.java (rev 0)
+++ java/2.x/trunk/pico/container/src/java/org/picocontainer/injectors/NamedMethodInjection.java 2010-02-12 20:24:59 UTC (rev 5603)
@@ -0,0 +1,26 @@
+package org.picocontainer.injectors;
+
+import org.picocontainer.ComponentAdapter;
+import org.picocontainer.ComponentMonitor;
+import org.picocontainer.LifecycleStrategy;
+import org.picocontainer.Parameter;
+import org.picocontainer.PicoCompositionException;
+
+import java.util.Properties;
+
+public class NamedMethodInjection extends AbstractInjectionFactory {
+
+ private final String prefix;
+
+ public NamedMethodInjection(String setterMethodPrefix) {
+ this.prefix = setterMethodPrefix;
+ }
+
+ public NamedMethodInjection() {
+ this("set");
+ }
+
+ public <T> ComponentAdapter<T> createComponentAdapter(ComponentMonitor monitor, LifecycleStrategy lifecycleStrategy, Properties componentProperties, Object componentKey, Class<T> componentImplementation, Parameter... parameters) throws PicoCompositionException {
+ return wrapLifeCycle(monitor.newInjector(new NamedMethodInjector(componentKey, componentImplementation, parameters, monitor, prefix)), lifecycleStrategy);
+ }
+}

Added: java/2.x/trunk/pico/container/src/test/org/picocontainer/injectors/NamedInjectionTestCase.java (0 => 5603)

--- java/2.x/trunk/pico/container/src/test/org/picocontainer/injectors/NamedInjectionTestCase.java (rev 0)
+++ java/2.x/trunk/pico/container/src/test/org/picocontainer/injectors/NamedInjectionTestCase.java 2010-02-12 20:24:59 UTC (rev 5603)
@@ -0,0 +1,50 @@
+/*****************************************************************************
+ * Copyright (C) PicoContainer Organization. All rights reserved. *
+ * ------------------------------------------------------------------------- *
+ * The software in this package is published under the terms of the BSD *
+ * style license a copy of which has been included with this distribution in *
+ * the LICENSE.txt file. *
+ * *
+ *****************************************************************************/
+package org.picocontainer.injectors;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.picocontainer.ComponentFactory;
+import org.picocontainer.DefaultPicoContainer;
+import org.picocontainer.containers.EmptyPicoContainer;
+import org.picocontainer.lifecycle.NullLifecycleStrategy;
+import org.picocontainer.tck.AbstractComponentFactoryTest;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+/**
+ * @author Paul Hammant
+ */
+public class NamedInjectionTestCase extends AbstractComponentFactoryTest {
+
+ @Before
+ public void setUp() throws Exception {
+ picoContainer = new DefaultPicoContainer(createComponentFactory(), new NullLifecycleStrategy(), new EmptyPicoContainer());
+ }
+
+ protected ComponentFactory createComponentFactory() {
+ return new NamedMethodInjection();
+ }
+
+ public static class Bean {
+ private String something;
+
+ public void setSomething(String blah) {
+ this.something = blah;
+ }
+ }
+
+ @Test public void testContainerMakesNamedMethodInjector() {
+ picoContainer.addComponent(Bean.class);
+ picoContainer.addConfig("something", "hello there");
+ assertTrue(picoContainer.getComponentAdapter(Bean.class) instanceof NamedMethodInjector);
+ assertEquals("hello there", picoContainer.getComponent(Bean.class).something);
+ }
+}
\ No newline at end of file

----------

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.