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