1
2
3
4
5
6
7
8
9
10
11 package org.mule;
12
13 import org.mule.api.MuleContext;
14 import org.mule.api.config.ConfigurationBuilder;
15 import org.mule.api.config.ConfigurationException;
16 import org.mule.api.config.MuleConfiguration;
17 import org.mule.api.config.MuleProperties;
18 import org.mule.api.context.WorkManager;
19 import org.mule.api.lifecycle.InitialisationException;
20 import org.mule.api.model.Model;
21 import org.mule.config.DefaultMuleConfiguration;
22 import org.mule.config.builders.AbstractConfigurationBuilder;
23 import org.mule.config.builders.SimpleConfigurationBuilder;
24 import org.mule.context.DefaultMuleContextBuilder;
25 import org.mule.context.DefaultMuleContextFactory;
26 import org.mule.context.notification.ServerNotificationManager;
27 import org.mule.lifecycle.MuleContextLifecycleManager;
28 import org.mule.model.seda.SedaModel;
29 import org.mule.tck.AbstractMuleTestCase;
30 import org.mule.tck.testmodels.fruit.Banana;
31
32 import java.util.ArrayList;
33 import java.util.List;
34 import java.util.Properties;
35
36 import javax.resource.spi.work.WorkListener;
37
38 public class DefaultMuleContextFactoryTestCase extends AbstractMuleTestCase
39 {
40
41 private DefaultMuleContextFactory muleContextFactory = new DefaultMuleContextFactory();
42 private static String TEST_STRING_KEY = "test";
43 private static String TEST_STRING_VALUE = "test_value";
44 private static String TEST_STRING_KEY2 = "test2";
45 private static String TEST_STRING_VALUE2 = "test_value2";
46 private static String TEST_OBJECT_NAME = "testObject";
47 private static String TEST_MODEL_NAME = "testModel";
48
49 public void testCreateMuleContext() throws InitialisationException, ConfigurationException
50 {
51 MuleContext muleContext = muleContextFactory.createMuleContext();
52
53
54 testMuleContext(muleContext);
55
56 testDefaults(muleContext);
57
58 }
59
60 public void testCreateMuleContextConfigurationBuilder() throws InitialisationException, ConfigurationException
61 {
62 MuleContext muleContext = muleContextFactory.createMuleContext(new TestConfigurationBuilder());
63
64
65 testMuleContext(muleContext);
66
67 testConfigurationBuilder1Objects(muleContext);
68
69 testNoDefaults(muleContext);
70
71 }
72
73 public void testCreateMuleContextListMuleContextBuilder() throws InitialisationException, ConfigurationException
74 {
75 List<ConfigurationBuilder> configBuilders = new ArrayList<ConfigurationBuilder>();
76 configBuilders.add(new TestConfigurationBuilder());
77 configBuilders.add(new TestConfigurationBuilder2());
78
79 TestMuleContextBuilder muleContextBuilder = new TestMuleContextBuilder();
80 MuleContext muleContext = muleContextFactory.createMuleContext(configBuilders, muleContextBuilder);
81
82
83 testCustomMuleContext(muleContext);
84
85
86 testConfigurationBuilder1Objects(muleContext);
87 testConfigurationBuilder2Objects(muleContext);
88
89 testNoDefaults(muleContext);
90
91 }
92
93 public void testCreateMuleContextMuleContextBuilder() throws InitialisationException, ConfigurationException
94 {
95 TestMuleContextBuilder muleContextBuilder = new TestMuleContextBuilder();
96 MuleContext muleContext = muleContextFactory.createMuleContext(new SimpleConfigurationBuilder(null), muleContextBuilder);
97
98
99 testCustomMuleContext(muleContext);
100
101 testNoDefaults(muleContext);
102 }
103
104 public void testCreateMuleContextConfigurationBuilderMuleContextBuilder()
105 throws InitialisationException, ConfigurationException
106 {
107
108 TestMuleContextBuilder muleContextBuilder = new TestMuleContextBuilder();
109 MuleContext muleContext = muleContextFactory.createMuleContext(new TestConfigurationBuilder2(),
110 muleContextBuilder);
111
112
113 testCustomMuleContext(muleContext);
114
115 testConfigurationBuilder2Objects(muleContext);
116
117 testNoDefaults(muleContext);
118 }
119
120 public void testCreateMuleContextString() throws InitialisationException, ConfigurationException
121 {
122 MuleContext muleContext = null;
123 try
124 {
125 muleContext = muleContextFactory.createMuleContext("log4j.properties");
126
127 }
128 catch (ConfigurationException e)
129 {
130 assertEquals(
131 "No suitable configuration builder for resource \"[ConfigResource{resourceName='log4j.properties'}]\" found. "
132 + "Check you have configuration module on your classpath and are using correct file extension. "
133 + "(org.mule.api.config.ConfigurationException)", e.getMessage());
134 }
135 assertNull(muleContext);
136
137 }
138
139 public void testCreateMuleContextStringProperties() throws InitialisationException, ConfigurationException
140 {
141 Properties properties = new Properties();
142 properties.put("testKey1", "testValue1");
143 properties.put("testKey2", "testValue2");
144
145 MuleContext muleContext = null;
146 try
147 {
148 muleContext = muleContextFactory.createMuleContext("log4j.properties", properties);
149
150 }
151 catch (ConfigurationException e)
152 {
153 assertEquals(
154 "No suitable configuration builder for resource \"[ConfigResource{resourceName='log4j.properties'}]\" found. "
155 + "Check you have configuration module on your classpath and are using correct file extension. "
156 + "(org.mule.api.config.ConfigurationException)", e.getMessage());
157 }
158
159 assertNull(muleContext);
160 }
161
162 public void testCreateMuleContextConfigurationBuilderProperties()
163 throws InitialisationException, ConfigurationException
164 {
165 Properties properties = new Properties();
166 properties.put("testKey3", "testValue3");
167 properties.put("testKey4", "testValue4");
168
169 MuleContext muleContext = muleContextFactory.createMuleContext(new TestConfigurationBuilder(), properties);
170
171
172 testMuleContext(muleContext);
173
174 testConfigurationBuilder1Objects(muleContext);
175 assertEquals("testValue3", muleContext.getRegistry().lookupObject("testKey3"));
176 assertEquals("testValue4", muleContext.getRegistry().lookupObject("testKey4"));
177
178 testNoDefaults(muleContext);
179 }
180
181 private void testDefaults(MuleContext muleContext)
182 {
183
184 assertNotNull(muleContext.getRegistry().lookupObject(MuleProperties.OBJECT_QUEUE_MANAGER));
185 assertNotNull(muleContext.getRegistry().lookupObject(MuleProperties.OBJECT_SECURITY_MANAGER));
186 assertNotNull(muleContext.getRegistry().lookupObject(MuleProperties.OBJECT_SYSTEM_MODEL));
187 assertNotNull(muleContext.getRegistry().lookupObject(MuleProperties.OBJECT_MULE_ENDPOINT_FACTORY));
188 assertNotNull(muleContext.getRegistry().lookupObject(MuleProperties.OBJECT_MULE_SIMPLE_REGISTRY_BOOTSTRAP));
189 }
190
191 private void testNoDefaults(MuleContext muleContext)
192 {
193
194 assertNull(muleContext.getRegistry().lookupObject(MuleProperties.OBJECT_QUEUE_MANAGER));
195 assertNull(muleContext.getRegistry().lookupObject(MuleProperties.OBJECT_SECURITY_MANAGER));
196 assertNull(muleContext.getRegistry().lookupObject(MuleProperties.OBJECT_SYSTEM_MODEL));
197 assertNull(muleContext.getRegistry().lookupObject(MuleProperties.OBJECT_MULE_ENDPOINT_FACTORY));
198 assertNull(muleContext.getRegistry().lookupObject(MuleProperties.OBJECT_MULE_SIMPLE_REGISTRY_BOOTSTRAP));
199 }
200
201 private void testMuleContext(MuleContext muleContext)
202 {
203 assertNotNull(muleContext);
204 assertEquals(DefaultMuleContext.class, muleContext.getClass());
205 assertTrue(muleContext.isInitialised());
206 assertNotNull(muleContext.getConfiguration());
207 assertEquals(DefaultMuleConfiguration.class, muleContext.getConfiguration().getClass());
208 assertNotNull(muleContext.getLifecycleManager().getClass());
209
210
211
212 assertNotNull(muleContext.getNotificationManager());
213 assertNotNull(muleContext.getWorkManager());
214 }
215
216 private void testCustomMuleContext(MuleContext muleContext)
217 {
218 assertNotNull(muleContext);
219 assertEquals(TestMuleContext.class, muleContext.getClass());
220 assertTrue(muleContext.isInitialised());
221 assertNotNull(muleContext.getConfiguration());
222
223 assertNotNull(muleContext.getLifecycleManager().getClass());
224
225
226
227 assertNotNull(muleContext.getNotificationManager());
228 assertNotNull(muleContext.getWorkManager());
229 }
230
231 private void testConfigurationBuilder1Objects(MuleContext muleContext)
232 {
233
234
235 assertEquals(TEST_STRING_VALUE, muleContext.getRegistry().lookupObject(TEST_STRING_KEY));
236
237 Object obj = muleContext.getRegistry().lookupObject(TEST_OBJECT_NAME);
238 assertNotNull(obj);
239 assertEquals(Banana.class, obj.getClass());
240 }
241
242 private void testConfigurationBuilder2Objects(MuleContext muleContext)
243 {
244
245
246 assertEquals(TEST_STRING_VALUE2, muleContext.getRegistry().lookupObject(TEST_STRING_KEY2));
247 assertNotNull(muleContext.getRegistry().lookupModel(TEST_MODEL_NAME));
248 assertEquals(TEST_MODEL_NAME, muleContext.getRegistry().lookupModel(TEST_MODEL_NAME).getName());
249 }
250
251
252
253
254 protected MuleContext createMuleContext() throws Exception
255 {
256 return null;
257 }
258
259 static class TestConfigurationBuilder extends AbstractConfigurationBuilder
260 {
261 protected void doConfigure(MuleContext muleContext) throws Exception
262 {
263 muleContext.getRegistry().registerObject(TEST_STRING_KEY, TEST_STRING_VALUE);
264 muleContext.getRegistry().registerObject(TEST_OBJECT_NAME, new Banana());
265 }
266 }
267
268 static class TestConfigurationBuilder2 extends AbstractConfigurationBuilder
269 {
270 protected void doConfigure(MuleContext muleContext) throws Exception
271 {
272 muleContext.getRegistry().registerObject(TEST_STRING_KEY2, TEST_STRING_VALUE2);
273 Model testModel = new SedaModel();
274 testModel.setName(TEST_MODEL_NAME);
275 muleContext.getRegistry().registerModel(testModel);
276 }
277 }
278
279 static class TestMuleContextBuilder extends DefaultMuleContextBuilder
280 {
281 public MuleContext buildMuleContext()
282 {
283 MuleContextLifecycleManager lifecycleManager = getLifecycleManager();
284
285 MuleContext muleContext = new TestMuleContext(getMuleConfiguration(),
286 getWorkManager(),
287 getWorkListener(),
288 lifecycleManager,
289 getNotificationManager());
290 lifecycleManager.setMuleContext(muleContext);
291 return muleContext;
292 }
293 }
294
295 static class TestMuleContext extends DefaultMuleContext
296 {
297 public TestMuleContext(MuleConfiguration config,
298 WorkManager workManager,
299 WorkListener workListener,
300 MuleContextLifecycleManager lifecycleManager,
301 ServerNotificationManager notificationManager)
302 {
303 super(config, workManager, workListener, lifecycleManager, notificationManager);
304 }
305 }
306
307 static class TestMuleConfiguration extends DefaultMuleConfiguration
308 {
309
310 }
311
312 }