KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > picocontainer > gems > adapters > 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.adapters;
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 /**
27  * @author Jörg Schaible
28  */

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

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

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

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

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