001 /*****************************************************************************
002 * Copyright (C) PicoContainer Organization. All rights reserved. *
003 * ------------------------------------------------------------------------- *
004 * The software in this package is published under the terms of the BSD *
005 * style license a copy of which has been included with this distribution in *
006 * the LICENSE.txt file. *
007 * *
008 * Original code by *
009 *****************************************************************************/
010 package org.picocontainer.injectors;
011
012 import junit.framework.TestCase;
013 import org.picocontainer.MutablePicoContainer;
014 import org.picocontainer.Parameter;
015 import org.picocontainer.annotations.Inject;
016 import org.picocontainer.DefaultPicoContainer;
017 import org.picocontainer.lifecycle.NullLifecycleStrategy;
018 import org.picocontainer.monitors.NullComponentMonitor;
019 import org.picocontainer.injectors.MethodAnnotationInjector;
020 import org.picocontainer.injectors.SetterInjector;
021
022 public class MethodAnnotationInjectorTestCase extends TestCase {
023
024 public static class AnnotatedBurp {
025
026 private Wind wind;
027
028 @Inject
029 public void windyWind(Wind wind) {
030 this.wind = wind;
031 }
032 }
033
034 public static class SetterBurp {
035
036 private Wind wind;
037
038 public void setWind(Wind wind) {
039 this.wind = wind;
040 }
041 }
042
043 public static class Wind {
044 }
045
046 public void testSetterMethodInjectionToContrastWithThatBelow() {
047
048 MutablePicoContainer pico = new DefaultPicoContainer();
049 pico.addAdapter(new SetterInjector(SetterBurp.class, SetterBurp.class, Parameter.DEFAULT, new NullComponentMonitor(), new NullLifecycleStrategy()));
050 pico.addComponent(Wind.class, new Wind());
051 SetterBurp burp = pico.getComponent(SetterBurp.class);
052 assertNotNull(burp);
053 assertNotNull(burp.wind);
054 }
055
056 public void testNonSetterMethodInjection() {
057 MutablePicoContainer pico = new DefaultPicoContainer();
058 pico.addAdapter(new MethodAnnotationInjector(AnnotatedBurp.class, AnnotatedBurp.class, Parameter.DEFAULT,
059 new NullComponentMonitor(), new NullLifecycleStrategy()) {
060 protected String getInjectorPrefix() {
061 return "init";
062 }
063 });
064 pico.addComponent(Wind.class, new Wind());
065 AnnotatedBurp burp = pico.getComponent(AnnotatedBurp.class);
066 assertNotNull(burp);
067 assertNotNull(burp.wind);
068 }
069
070 }