001 package org.picocontainer.doc.tutorial.blocks; 002 003 import junit.framework.TestCase; 004 005 import org.picocontainer.MutablePicoContainer; 006 import org.picocontainer.defaults.CachingComponentAdapter; 007 import org.picocontainer.defaults.CachingComponentAdapterFactory; 008 import org.picocontainer.defaults.ConstructorInjectionComponentAdapter; 009 import org.picocontainer.defaults.DefaultPicoContainer; 010 import org.picocontainer.defaults.InstanceComponentAdapter; 011 import org.picocontainer.defaults.SetterInjectionComponentAdapter; 012 import org.picocontainer.defaults.SetterInjectionComponentAdapterFactory; 013 import org.picocontainer.defaults.SynchronizedComponentAdapter; 014 import org.picocontainer.defaults.SynchronizedComponentAdapterFactory; 015 import org.picocontainer.doc.introduction.Apple; 016 import org.picocontainer.doc.introduction.Juicer; 017 import org.picocontainer.doc.introduction.Peeler; 018 019 020 /** 021 * Test case for the snippets used in "Component Adapters and Factories" 022 * 023 * @author Jörg Schaible 024 */ 025 public class BuildingBlocksTestCase extends TestCase { 026 public void testRegisterConvenient() { 027 // START SNIPPET: register-convenient 028 MutablePicoContainer picoContainer = new DefaultPicoContainer(); 029 picoContainer.registerComponentImplementation(Juicer.class); 030 picoContainer.registerComponentImplementation("My Peeler", Peeler.class); 031 picoContainer.registerComponentInstance(new Apple()); 032 // END SNIPPET: register-convenient 033 // START SNIPPET: register-direct 034 picoContainer.registerComponent(new InstanceComponentAdapter("Another Apple", new Apple())); 035 // END SNIPPET: register-direct 036 } 037 038 public void testRegisterEquivalentConvenient() { 039 MutablePicoContainer picoContainer = new DefaultPicoContainer(); 040 // START SNIPPET: register-equivalent-convenient 041 picoContainer.registerComponentImplementation(Juicer.class); 042 // END SNIPPET: register-equivalent-convenient 043 } 044 045 public void testRegisterEquivalentAtLength() { 046 MutablePicoContainer picoContainer = new DefaultPicoContainer(); 047 // START SNIPPET: register-equivalent-at-length 048 picoContainer.registerComponent( 049 new CachingComponentAdapter( 050 new ConstructorInjectionComponentAdapter(Juicer.class, Juicer.class, null))); 051 // END SNIPPET: register-equivalent-at-length 052 } 053 054 public void testRegisterDifferentComponentAdapterFactory() { 055 // START SNIPPET: register-different-caf 056 MutablePicoContainer picoContainer = new DefaultPicoContainer( 057 new SynchronizedComponentAdapterFactory( 058 new CachingComponentAdapterFactory( 059 new SetterInjectionComponentAdapterFactory()))); 060 // END SNIPPET: register-different-caf 061 } 062 063 public void testRegisterEquivalentAtLength2() { 064 MutablePicoContainer picoContainer = new DefaultPicoContainer(); 065 // START SNIPPET: register-equivalent-at-length2 066 picoContainer.registerComponent( 067 new SynchronizedComponentAdapter( 068 new CachingComponentAdapter( 069 new SetterInjectionComponentAdapter( 070 JuicerBean.class, JuicerBean.class, null)))); 071 // END SNIPPET: register-equivalent-at-length2 072 } 073 }