1
2
3
4
5
6
7
8
9
10
11 package org.mule.test.config;
12
13 import org.mule.MuleManager;
14 import org.mule.config.ConfigurationBuilder;
15 import org.mule.config.builders.QuickConfigurationBuilder;
16 import org.mule.impl.DefaultComponentExceptionStrategy;
17 import org.mule.impl.endpoint.MuleEndpoint;
18 import org.mule.impl.model.seda.SedaModel;
19 import org.mule.interceptors.InterceptorStack;
20 import org.mule.interceptors.LoggingInterceptor;
21 import org.mule.interceptors.TimerInterceptor;
22 import org.mule.management.agents.JmxAgent;
23 import org.mule.providers.SimpleRetryConnectionStrategy;
24 import org.mule.routing.ForwardingCatchAllStrategy;
25 import org.mule.routing.filters.PayloadTypeFilter;
26 import org.mule.routing.filters.xml.JXPathFilter;
27 import org.mule.routing.inbound.InboundRouterCollection;
28 import org.mule.routing.nested.NestedRouter;
29 import org.mule.routing.nested.NestedRouterCollection;
30 import org.mule.routing.response.ResponseRouterCollection;
31 import org.mule.tck.AbstractScriptConfigBuilderTestCase;
32 import org.mule.tck.testmodels.fruit.FruitCleaner;
33 import org.mule.tck.testmodels.fruit.Orange;
34 import org.mule.tck.testmodels.mule.TestCompressionTransformer;
35 import org.mule.tck.testmodels.mule.TestConnector;
36 import org.mule.tck.testmodels.mule.TestDefaultLifecycleAdapterFactory;
37 import org.mule.tck.testmodels.mule.TestEntryPointResolver;
38 import org.mule.tck.testmodels.mule.TestExceptionStrategy;
39 import org.mule.tck.testmodels.mule.TestResponseAggregator;
40 import org.mule.tck.testmodels.mule.TestTransactionManagerFactory;
41 import org.mule.transformers.NoActionTransformer;
42 import org.mule.umo.UMODescriptor;
43 import org.mule.umo.UMOInterceptorStack;
44 import org.mule.umo.endpoint.UMOEndpoint;
45 import org.mule.umo.manager.UMOAgent;
46 import org.mule.umo.manager.UMOManager;
47 import org.mule.umo.model.UMOModel;
48 import org.mule.umo.routing.UMOInboundRouterCollection;
49 import org.mule.umo.routing.UMONestedRouterCollection;
50 import org.mule.umo.routing.UMOResponseRouterCollection;
51 import org.mule.util.StringUtils;
52
53 import java.util.ArrayList;
54 import java.util.HashMap;
55 import java.util.List;
56 import java.util.Map;
57
58 public class QuickConfigurationBuilderTestCase extends AbstractScriptConfigBuilderTestCase
59 {
60
61 public String getConfigResources()
62 {
63 return null;
64 }
65
66 public ConfigurationBuilder getBuilder()
67 {
68
69 QuickConfigurationBuilder builder = new QuickConfigurationBuilder();
70 UMOManager m = builder.getManager();
71
72 MuleManager.getConfiguration().setServerUrl(StringUtils.EMPTY);
73 try
74 {
75
76 m.setProperty("doCompression", "true");
77
78
79 m.setTransactionManager(new TestTransactionManagerFactory().create());
80
81 UMOAgent agent = new JmxAgent();
82 agent.setName("jmxAgent");
83 m.registerAgent(agent);
84
85
86 TestConnector c = new TestConnector();
87 c.setName("dummyConnector");
88 c.setExceptionListener(new TestExceptionStrategy());
89 SimpleRetryConnectionStrategy cs = new SimpleRetryConnectionStrategy();
90 cs.setRetryCount(4);
91 cs.setFrequency(3000);
92 c.setConnectionStrategy(cs);
93 m.registerConnector(c);
94
95
96 m.registerEndpointIdentifier("AppleQueue", "test://apple.queue");
97 m.registerEndpointIdentifier("Banana_Queue", "test://banana.queue");
98 m.registerEndpointIdentifier("Test Queue", "test://test.queue");
99
100
101 TestCompressionTransformer t = new TestCompressionTransformer();
102 t.setReturnClass(String.class);
103 t.setBeanProperty2(12);
104 t.setContainerProperty("");
105 t.setBeanProperty1("this was set from the manager properties!");
106 m.registerTransformer(t);
107
108 NoActionTransformer t2 = new NoActionTransformer();
109 t2.setReturnClass(byte[].class);
110 m.registerTransformer(t2);
111
112
113 JXPathFilter filter = new JXPathFilter("name");
114 filter.setExpectedValue("bar");
115 Map ns = new HashMap();
116 ns.put("foo", "http://foo.com");
117 filter.setNamespaces(ns);
118 builder.registerEndpoint("test://fruitBowlPublishQ", "fruitBowlEndpoint", false, null, filter);
119 builder.registerEndpoint("Test Queue", "waterMelonEndpoint", false);
120 builder.registerEndpoint("test://AppleQueue", "appleInEndpoint", true);
121 builder.registerEndpoint("test://AppleResponseQueue", "appleResponseEndpoint", false);
122 Map props = new HashMap();
123 props.put("testGlobal", "value1");
124 builder.registerEndpoint("test://orangeQ", "orangeEndpoint", false, props);
125
126
127 InterceptorStack stack = new InterceptorStack();
128 List interceptors = new ArrayList();
129 interceptors.add(new LoggingInterceptor());
130 interceptors.add(new TimerInterceptor());
131 stack.setInterceptors(interceptors);
132 m.registerInterceptorStack("default", stack);
133
134
135 UMOModel model = new SedaModel();
136 model.setName("main");
137 TestExceptionStrategy es = new TestExceptionStrategy();
138 es.addEndpoint(new MuleEndpoint("test://component.exceptions", false));
139 model.setExceptionListener(es);
140 model.setLifecycleAdapterFactory(new TestDefaultLifecycleAdapterFactory());
141 model.setEntryPointResolver(new TestEntryPointResolver());
142 m.registerModel(model);
143
144
145 UMOEndpoint ep1 = m.lookupEndpoint("appleInEndpoint");
146 ep1.setTransformer(m.lookupTransformer("TestCompressionTransformer"));
147 UMODescriptor d = builder.createDescriptor("orange", "orangeComponent", null, ep1, props);
148 d.setContainer("descriptor");
149 DefaultComponentExceptionStrategy dces = new DefaultComponentExceptionStrategy();
150 dces.addEndpoint(new MuleEndpoint("test://orange.exceptions", false));
151 d.setExceptionListener(dces);
152
153 UMOInboundRouterCollection inRouter = new InboundRouterCollection();
154 inRouter.setCatchAllStrategy(new ForwardingCatchAllStrategy());
155 inRouter.getCatchAllStrategy().setEndpoint(new MuleEndpoint("test://catch.all", false));
156 UMOEndpoint ep2 = builder.createEndpoint("test://orange/", "Orange", true,
157 "TestCompressionTransformer");
158 ep2.setResponseTransformer(m.lookupTransformer("TestCompressionTransformer"));
159 inRouter.addEndpoint(ep2);
160 UMOEndpoint ep3 = m.lookupEndpoint("orangeEndpoint");
161 ep3.setFilter(new PayloadTypeFilter(String.class));
162 ep3.setTransformer(m.lookupTransformer("TestCompressionTransformer"));
163 Map props2 = new HashMap();
164 props2.put("testLocal", "value1");
165 ep3.setProperties(props2);
166 inRouter.addEndpoint(ep3);
167 d.setInboundRouter(inRouter);
168
169
170 UMONestedRouterCollection nestedRouter = new NestedRouterCollection();
171 NestedRouter nr1 = new NestedRouter();
172 nr1.setEndpoint(new MuleEndpoint("test://do.wash", false));
173 nr1.setInterface(FruitCleaner.class);
174 nr1.setMethod("wash");
175 nestedRouter.addRouter(nr1);
176 NestedRouter nr2 = new NestedRouter();
177 nr2.setEndpoint(new MuleEndpoint("test://do.polish", false));
178 nr2.setInterface(FruitCleaner.class);
179 nr2.setMethod("polish");
180 nestedRouter.addRouter(nr2);
181
182 d.setNestedRouter(nestedRouter);
183
184
185 UMOResponseRouterCollection responseRouter = new ResponseRouterCollection();
186 responseRouter.addEndpoint(new MuleEndpoint("test://response1", true));
187 responseRouter.addEndpoint(m.lookupEndpoint("appleResponseEndpoint"));
188 responseRouter.addRouter(new TestResponseAggregator());
189 responseRouter.setTimeout(10001);
190 d.setResponseRouter(responseRouter);
191
192
193 UMOInterceptorStack stack2 = m.lookupInterceptorStack("default");
194 d.setInterceptors(new ArrayList(stack2.getInterceptors()));
195 d.getInterceptors().add(new TimerInterceptor());
196
197
198 Map cprops = new HashMap();
199 cprops.put("orange", new Orange());
200 cprops.put("brand", "Juicy Baby!");
201 cprops.put("segments", "9");
202 cprops.put("radius", "4.21");
203 Map nested = new HashMap();
204 nested.put("prop1", "prop1");
205 nested.put("prop2", "prop2");
206 cprops.put("mapProperties", nested);
207 List nested2 = new ArrayList();
208 nested2.add("prop1");
209 nested2.add("prop2");
210 nested2.add("prop3");
211 cprops.put("listProperties", nested2);
212 List nested3 = new ArrayList();
213 nested3.add("prop4");
214 nested3.add("prop5");
215 nested3.add("prop6");
216 cprops.put("arrayProperties", nested3);
217 d.setProperties(cprops);
218
219
220 m.lookupModel("main").registerComponent(d);
221 if (StringUtils.isBlank(m.getId()))
222 {
223
224 m.setId(String.valueOf(System.currentTimeMillis()));
225 }
226 m.start();
227 }
228 catch (Exception e)
229 {
230 e.printStackTrace();
231 fail(e.getMessage());
232 }
233 return builder;
234 }
235 }