001 package org.picocontainer.defaults.issues; 002 003 import org.junit.Test;import static org.junit.Assert.assertFalse;import static org.junit.Assert.assertEquals; 004 import org.picocontainer.Startable; 005 import org.picocontainer.DefaultPicoContainer; 006 import org.picocontainer.ComponentAdapter; 007 import org.picocontainer.Characteristics; 008 import org.picocontainer.injectors.SetterInjection; 009 import org.picocontainer.behaviors.Cached; 010 011 import java.util.List; 012 013 public class Issue0354TestCase { 014 015 @Test 016 public void testGenericInjectionWithSetterInjection() { 017 DefaultPicoContainer pico = new DefaultPicoContainer(new SetterInjection()); 018 pico.addComponent(new Cod()); 019 pico.addComponent(new Shark()); 020 pico.addComponent(GenericBowl.class); 021 //pico.addComponent(ArrayList.class); 022 //pico.addComponent(ArrayList.class, ArrayList.class, new CollectionComponentParameter(Fish.class, false)); 023 024 GenericBowl bowl = pico.getComponent(GenericBowl.class); 025 assertEquals(2, bowl.fishes.size()); 026 } 027 028 @Test 029 public void testGenericInjectionWithConstructorInjection() { 030 DefaultPicoContainer pico = new DefaultPicoContainer(); 031 pico.addComponent(new Cod()); 032 pico.addComponent(new Shark()); 033 pico.addComponent(GenericBowl.class); 034 035 GenericBowl bowl = pico.getComponent(GenericBowl.class); 036 assertEquals(2, bowl.fishes.size()); 037 } 038 039 public static interface Fish { 040 } 041 042 public static class Cod implements Fish { 043 } 044 045 public static class Shark implements Fish { 046 } 047 048 public static class GenericBowl { 049 List<Fish> fishes; 050 051 public void setFishes(List<Fish> fishes) { 052 this.fishes = fishes; 053 } 054 055 public GenericBowl() { 056 } 057 058 public GenericBowl(List<Fish> fishes) { 059 this.fishes = fishes; 060 } 061 } 062 063 }