KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > picocontainer > gems > AssimilatingComponentAdapterFactoryTest


1 /*****************************************************************************
2  * Copyright (C) NanoContainer Organization. All rights reserved. *
3  * ------------------------------------------------------------------------- *
4  * The software in this package is published under the terms of the BSD *
5  * style license a copy of which has been included with this distribution in *
6  * the LICENSE.txt file. *
7  * *
8  * Original code by Joerg Schaibe *
9  *****************************************************************************/

10
11 package org.picocontainer.gems;
12
13 import org.picocontainer.defaults.ComponentAdapterFactory;
14 import org.picocontainer.defaults.ConstructorInjectionComponentAdapterFactory;
15 import org.picocontainer.defaults.DefaultPicoContainer;
16 import org.picocontainer.defaults.DuplicateComponentKeyRegistrationException;
17 import org.picocontainer.tck.AbstractComponentAdapterFactoryTestCase;
18 import org.picocontainer.testmodel.AlternativeTouchable;
19 import org.picocontainer.testmodel.CompatibleTouchable;
20 import org.picocontainer.testmodel.SimpleTouchable;
21 import org.picocontainer.testmodel.Touchable;
22
23 import java.util.List JavaDoc;
24
25 /**
26  * @author Jörg Schaible
27  */

28 public class AssimilatingComponentAdapterFactoryTest extends AbstractComponentAdapterFactoryTestCase {
29
30     /**
31      * @see org.picocontainer.tck.AbstractComponentAdapterFactoryTestCase#createComponentAdapterFactory()
32      */

33     protected ComponentAdapterFactory createComponentAdapterFactory() {
34         return new AssimilatingComponentAdapterFactory(new ConstructorInjectionComponentAdapterFactory(), Touchable.class);
35     }
36
37     /**
38      * Test automatic assimilation of registered components.
39      */

40     public void testAutomaticAssimilation() {
41         picoContainer = new DefaultPicoContainer(createComponentAdapterFactory());
42         picoContainer.registerComponentImplementation(SimpleTouchable.class);
43         picoContainer.registerComponentImplementation(AlternativeTouchable.class);
44         picoContainer.registerComponentImplementation(CompatibleTouchable.class);
45         final List JavaDoc list = picoContainer.getComponentInstancesOfType(Touchable.class);
46         assertEquals(3, list.size());
47     }
48
49     /**
50      * Test automatic assimilation of registered components.
51      */

52     public void testOnlyOneTouchableComponentKeyPossible() {
53         picoContainer = new DefaultPicoContainer(createComponentAdapterFactory());
54         picoContainer.registerComponentImplementation(Touchable.class, SimpleTouchable.class);
55         try {
56             picoContainer.registerComponentImplementation(CompatibleTouchable.class);
57             fail("DuplicateComponentKeyRegistrationException expected");
58         } catch(final DuplicateComponentKeyRegistrationException e) {
59             // fine
60
}
61     }
62
63     /**
64      * Test automatic assimilation of registered components.
65      */

66     public void testMultipleAssimilatedComponentsWithUserDefinedKeys() {
67         picoContainer = new DefaultPicoContainer(createComponentAdapterFactory());
68         picoContainer.registerComponentImplementation(Touchable.class, SimpleTouchable.class);
69         picoContainer.registerComponentImplementation("1", CompatibleTouchable.class);
70         picoContainer.registerComponentImplementation("2", CompatibleTouchable.class);
71         picoContainer.registerComponentImplementation("3", CompatibleTouchable.class);
72         final List JavaDoc list = picoContainer.getComponentInstancesOfType(Touchable.class);
73         assertEquals(4, list.size());
74     }
75 }
76
Popular Tags