View Javadoc

1   /*
2    * $Id: AbstractObjectFactoryTestCase.java 19852 2010-10-06 18:51:43Z dfeist $
3    * --------------------------------------------------------------------------------------
4    * Copyright (c) MuleSoft, Inc.  All rights reserved.  http://www.mulesoft.com
5    *
6    * The software in this package is published under the terms of the CPAL v1.0
7    * license, a copy of which has been included with this distribution in the
8    * LICENSE.txt file.
9    */
10  
11  package org.mule.object;
12  
13  import org.mule.api.lifecycle.InitialisationException;
14  import org.mule.tck.AbstractMuleTestCase;
15  
16  public abstract class AbstractObjectFactoryTestCase extends AbstractMuleTestCase
17  {
18  
19      public void testInitialisationFailureWithoutObjectClass() throws Exception
20      {
21          AbstractObjectFactory factory = getUninitialisedObjectFactory();
22  
23          try
24          {
25              factory.initialise();
26              fail("expected InitialisationException");
27          }
28          catch (InitialisationException iex)
29          {
30              // OK
31          }
32      }
33      
34      public void testInstanceFailureGetInstanceWithoutObjectClass() throws Exception
35      {
36          AbstractObjectFactory factory = getUninitialisedObjectFactory();
37  
38          try
39          {
40              factory.getInstance(muleContext);
41              fail("expected InitialisationException");
42          }
43          catch (InitialisationException iex)
44          {
45              // OK
46          }
47      }
48      
49      public void testCreateWithClassButDoNotInitialise() throws Exception
50      {
51          AbstractObjectFactory factory = new DummyObjectFactory(Object.class);
52          assertObjectClassAndName(factory);
53      }
54      
55      public void testCreateWithClassNameButDoNotInitialise() throws Exception
56      {
57          AbstractObjectFactory factory = new DummyObjectFactory(Object.class.getName());
58          assertObjectClassAndName(factory);
59      }
60      
61      public void testSetObjectClassNameButDoNotInitialise() throws Exception
62      {
63          AbstractObjectFactory factory = getUninitialisedObjectFactory();
64          factory.setObjectClassName(Object.class.getName());
65  
66          assertObjectClassAndName(factory);
67      }
68  
69      public void testSetObjectClassButDoNotInitialise() throws Exception
70      {
71          AbstractObjectFactory factory = getUninitialisedObjectFactory();
72          factory.setObjectClass(Object.class);
73          
74          assertObjectClassAndName(factory);
75      }
76      
77      private void assertObjectClassAndName(AbstractObjectFactory factory)
78      {
79          assertEquals(Object.class, factory.getObjectClass());
80          assertEquals(Object.class.getName(), factory.getObjectClassName());
81      }
82      
83      public void testInitialiseWithClass() throws Exception
84      {
85          AbstractObjectFactory factory = getUninitialisedObjectFactory();
86          factory.setObjectClass(Object.class);
87          // Will init the object        
88          muleContext.getRegistry().applyProcessorsAndLifecycle(factory);
89  
90          assertNotNull(factory.getInstance(muleContext));
91      }
92  
93      public void testInitialiseWithClassName() throws Exception
94      {
95          AbstractObjectFactory factory = getUninitialisedObjectFactory();
96          factory.setObjectClassName(Object.class.getName());
97          // Will init the object
98          muleContext.getRegistry().applyProcessorsAndLifecycle(factory);
99          
100         assertNotNull(factory.getInstance(muleContext));
101     }
102 
103     public void testDispose() throws Exception
104     {
105         AbstractObjectFactory factory = getUninitialisedObjectFactory();
106         factory.setObjectClass(Object.class);
107         // Will init the object
108         muleContext.getRegistry().applyProcessorsAndLifecycle(factory);
109         
110         factory.dispose();
111 
112         try
113         {
114             factory.getInstance(muleContext);
115             fail("expected InitialisationException");
116         }
117         catch (InitialisationException iex)
118         {
119             // OK
120         }
121     }
122     
123     public abstract AbstractObjectFactory getUninitialisedObjectFactory();
124 
125     public abstract void testGetObjectClass() throws Exception;
126 
127     public abstract void testGet() throws Exception;
128     
129     private static class DummyObjectFactory extends AbstractObjectFactory
130     {
131         public DummyObjectFactory(String className)
132         {
133             super(className);
134         }
135         
136         public DummyObjectFactory(Class<?> klass)
137         {
138             super(klass);
139         }
140 
141     }
142 }