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.ConfigurationException;
15 import org.mule.api.config.MuleConfiguration;
16 import org.mule.api.config.MuleProperties;
17 import org.mule.api.context.WorkManager;
18 import org.mule.api.lifecycle.InitialisationException;
19 import org.mule.api.lifecycle.LifecycleManager;
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.model.seda.SedaModel;
28 import org.mule.tck.AbstractMuleTestCase;
29 import org.mule.tck.testmodels.fruit.Banana;
30
31 import java.util.ArrayList;
32 import java.util.List;
33 import java.util.Properties;
34
35 import javax.resource.spi.work.WorkListener;
36
37 public class DefaultMuleContextFactoryTestCase extends AbstractMuleTestCase
38 {
39
40 private DefaultMuleContextFactory muleContextFactory = new DefaultMuleContextFactory();
41 private static String TEST_STRING_KEY = "test";
42 private static String TEST_STRING_VALUE = "test_value";
43 private static String TEST_STRING_KEY2 = "test2";
44 private static String TEST_STRING_VALUE2 = "test_value2";
45 private static String TEST_OBJECT_NAME = "testObject";
46 private static String TEST_MODEL_NAME = "testModel";
47
48 public void testCreateMuleContext() throws InitialisationException, ConfigurationException
49 {
50 MuleContext muleContext = muleContextFactory.createMuleContext();
51
52
53 testMuleContext(muleContext);
54
55 testDefaults(muleContext);
56
57 }
58
59 public void testCreateMuleContextConfigurationBuilder() throws InitialisationException, ConfigurationException
60 {
61 MuleContext muleContext = muleContextFactory.createMuleContext(new TestConfigurationBuilder());
62
63
64 testMuleContext(muleContext);
65
66 testConfigurationBuilder1Objects(muleContext);
67
68 testNoDefaults(muleContext);
69
70 }
71
72 public void testCreateMuleContextListMuleContextBuilder() throws InitialisationException, ConfigurationException
73 {
74 List configBuilders = new ArrayList();
75 configBuilders.add(new TestConfigurationBuilder());
76 configBuilders.add(new TestConfigurationBuilder2());
77
78 TestMuleContextBuilder muleContextBuilder = new TestMuleContextBuilder();
79 MuleContext muleContext = muleContextFactory.createMuleContext(configBuilders, muleContextBuilder);
80
81
82 testCustomMuleContext(muleContext);
83
84
85 testConfigurationBuilder1Objects(muleContext);
86 testConfigurationBuilder2Objects(muleContext);
87
88 testNoDefaults(muleContext);
89
90 }
91
92 public void testCreateMuleContextMuleContextBuilder() throws InitialisationException, ConfigurationException
93 {
94 TestMuleContextBuilder muleContextBuilder = new TestMuleContextBuilder();
95 MuleContext muleContext = muleContextFactory.createMuleContext(new SimpleConfigurationBuilder(null), muleContextBuilder);
96
97
98 testCustomMuleContext(muleContext);
99
100 testNoDefaults(muleContext);
101 }
102
103 public void testCreateMuleContextConfigurationBuilderMuleContextBuilder()
104 throws InitialisationException, ConfigurationException
105 {
106
107 TestMuleContextBuilder muleContextBuilder = new TestMuleContextBuilder();
108 MuleContext muleContext = muleContextFactory.createMuleContext(new TestConfigurationBuilder2(),
109 muleContextBuilder);
110
111
112 testCustomMuleContext(muleContext);
113
114 testConfigurationBuilder2Objects(muleContext);
115
116 testNoDefaults(muleContext);
117 }
118
119 public void testCreateMuleContextString() throws InitialisationException, ConfigurationException
120 {
121 MuleContext muleContext = null;
122 try
123 {
124 muleContext = muleContextFactory.createMuleContext("log4j.properties");
125
126 }
127 catch (ConfigurationException e)
128 {
129 assertEquals(
130 "No suitable configuration builder for resource \"[ConfigResource{resourceName='log4j.properties'}]\" found. "
131 + "Check you have configuration module on your classpath and are using correct file extension. "
132 + "(org.mule.api.config.ConfigurationException)", e.getMessage());
133 }
134 assertNull(muleContext);
135
136 }
137
138 public void testCreateMuleContextStringProperties() throws InitialisationException, ConfigurationException
139 {
140 Properties properties = new Properties();
141 properties.put("testKey1", "testValue1");
142 properties.put("testKey2", "testValue2");
143
144 MuleContext muleContext = null;
145 try
146 {
147 muleContext = muleContextFactory.createMuleContext("log4j.properties", properties);
148
149 }
150 catch (ConfigurationException e)
151 {
152 assertEquals(
153 "No suitable configuration builder for resource \"[ConfigResource{resourceName='log4j.properties'}]\" found. "
154 + "Check you have configuration module on your classpath and are using correct file extension. "
155 + "(org.mule.api.config.ConfigurationException)", e.getMessage());
156 }
157
158 assertNull(muleContext);
159 }
160
161 public void testCreateMuleContextConfigurationBuilderProperties()
162 throws InitialisationException, ConfigurationException
163 {
164 Properties properties = new Properties();
165 properties.put("testKey3", "testValue3");
166 properties.put("testKey4", "testValue4");
167
168 MuleContext muleContext = muleContextFactory.createMuleContext(new TestConfigurationBuilder(), properties);
169
170
171 testMuleContext(muleContext);
172
173 testConfigurationBuilder1Objects(muleContext);
174 assertEquals("testValue3", muleContext.getRegistry().lookupObject("testKey3"));
175 assertEquals("testValue4", muleContext.getRegistry().lookupObject("testKey4"));
176
177 testNoDefaults(muleContext);
178 }
179
180 private void testDefaults(MuleContext muleContext)
181 {
182
183 assertNotNull(muleContext.getRegistry().lookupObject(MuleProperties.OBJECT_QUEUE_MANAGER));
184 assertNotNull(muleContext.getRegistry().lookupObject(MuleProperties.OBJECT_SECURITY_MANAGER));
185 assertNotNull(muleContext.getRegistry().lookupObject(MuleProperties.OBJECT_SYSTEM_MODEL));
186 assertNotNull(muleContext.getRegistry().lookupObject(MuleProperties.OBJECT_MULE_ENDPOINT_FACTORY));
187 assertNotNull(muleContext.getRegistry().lookupObject(MuleProperties.OBJECT_MULE_SIMPLE_REGISTRY_BOOTSTRAP));
188 }
189
190 private void testNoDefaults(MuleContext muleContext)
191 {
192
193 assertNull(muleContext.getRegistry().lookupObject(MuleProperties.OBJECT_QUEUE_MANAGER));
194 assertNull(muleContext.getRegistry().lookupObject(MuleProperties.OBJECT_SECURITY_MANAGER));
195 assertNull(muleContext.getRegistry().lookupObject(MuleProperties.OBJECT_SYSTEM_MODEL));
196 assertNull(muleContext.getRegistry().lookupObject(MuleProperties.OBJECT_MULE_ENDPOINT_FACTORY));
197 assertNull(muleContext.getRegistry().lookupObject(MuleProperties.OBJECT_MULE_SIMPLE_REGISTRY_BOOTSTRAP));
198 }
199
200 private void testMuleContext(MuleContext muleContext)
201 {
202 assertNotNull(muleContext);
203 assertEquals(DefaultMuleContext.class, muleContext.getClass());
204 assertTrue(muleContext.isInitialised());
205 assertNotNull(muleContext.getConfiguration());
206 assertEquals(DefaultMuleConfiguration.class, muleContext.getConfiguration().getClass());
207 assertNotNull(muleContext.getLifecycleManager().getClass());
208 assertNotNull(muleContext.getLifecycleManager().getLifecycles().toArray()[0]);
209 assertNotNull(muleContext.getLifecycleManager().getLifecycles().toArray()[1]);
210 assertNotNull(muleContext.getLifecycleManager().getLifecycles().toArray()[2]);
211 assertNotNull(muleContext.getLifecycleManager().getLifecycles().toArray()[3]);
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 assertNotNull(muleContext.getLifecycleManager().getClass());
223 assertNotNull(muleContext.getLifecycleManager().getLifecycles().toArray()[0]);
224 assertNotNull(muleContext.getLifecycleManager().getLifecycles().toArray()[1]);
225 assertNotNull(muleContext.getLifecycleManager().getLifecycles().toArray()[2]);
226 assertNotNull(muleContext.getLifecycleManager().getLifecycles().toArray()[3]);
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 MuleContext muleContext = new TestMuleContext(getMuleConfiguration(),
284 getWorkManager(),
285 getWorkListener(),
286 getLifecycleManager(),
287 getNotificationManager());
288 return muleContext;
289 }
290 }
291
292 static class TestMuleContext extends DefaultMuleContext
293 {
294 public TestMuleContext(MuleConfiguration config,
295 WorkManager workManager,
296 WorkListener workListener,
297 LifecycleManager lifecycleManager,
298 ServerNotificationManager notificationManager)
299 {
300 super(config, workManager, workListener, lifecycleManager, notificationManager);
301 }
302 }
303
304 static class TestMuleConfiguration extends DefaultMuleConfiguration
305 {
306
307 }
308
309 }