1
2
3
4
5
6
7
8
9
10
11 package org.mule.transformers.simple;
12
13 import org.mule.api.lifecycle.Disposable;
14 import org.mule.api.lifecycle.InitialisationException;
15 import org.mule.api.processor.MessageProcessor;
16 import org.mule.api.transformer.TransformerException;
17 import org.mule.construct.Flow;
18 import org.mule.tck.junit4.FunctionalTestCase;
19 import org.mule.transformer.AbstractTransformer;
20
21 import java.util.ArrayList;
22 import java.util.Collections;
23 import java.util.List;
24
25 import org.junit.Test;
26
27 import static org.junit.Assert.assertEquals;
28 import static org.junit.Assert.assertNotNull;
29
30
31
32
33
34 public class RegistryTransformerLifecycleTestCase extends FunctionalTestCase
35 {
36 @Override
37 protected String getConfigResources()
38 {
39 return "simple-transformer-config.xml";
40 }
41
42 @Test
43 public void testLifecycleInSpring() throws Exception
44 {
45 TransformerLifecycleTracker transformer = (TransformerLifecycleTracker) muleContext.getRegistry()
46 .lookupTransformer("lifecycle");
47 assertNotNull(transformer);
48 muleContext.dispose();
49 assertNoLifecycle(transformer);
50 }
51
52 @Test
53 public void testLifecycleInFlowInSpring() throws Exception
54 {
55 Flow flow = (Flow) muleContext.getRegistry().lookupFlowConstruct("flow");
56 TransformerLifecycleTracker transformer = (TransformerLifecycleTracker) flow.getMessageProcessors()
57 .get(0);
58 assertNotNull(transformer);
59
60 muleContext.dispose();
61 assertLifecycle(transformer);
62 }
63
64 @Test
65 public void testLifecycleInTransientRegistry() throws Exception
66 {
67 TransformerLifecycleTracker transformer = new TransformerLifecycleTracker();
68 transformer.setProperty("foo");
69 muleContext.getRegistry().registerTransformer(transformer);
70 muleContext.dispose();
71
72
73
74 }
75
76 @Test
77 public void testLifecycleInFlowTransientRegistry() throws Exception
78 {
79 Flow flow = new Flow("flow", muleContext);
80 TransformerLifecycleTracker transformer = new TransformerLifecycleTracker();
81 transformer.setProperty("foo");
82 flow.setMessageProcessors(Collections.<MessageProcessor>singletonList(transformer));
83 muleContext.getRegistry().registerFlowConstruct(flow);
84 muleContext.dispose();
85 assertLifecycle(transformer);
86 }
87
88 private void assertLifecycle(TransformerLifecycleTracker transformer)
89 {
90 assertEquals("[setProperty, initialise, dispose]", transformer.getTracker().toString());
91 }
92
93 private void assertNoLifecycle(TransformerLifecycleTracker transformer)
94 {
95 assertEquals("[setProperty]", transformer.getTracker().toString());
96 }
97
98 public static class TransformerLifecycleTracker extends AbstractTransformer implements Disposable
99 {
100 private final List<String> tracker = new ArrayList<String>();
101
102 private String property;
103
104 @Override
105 protected Object doTransform(Object src, String encoding) throws TransformerException
106 {
107 tracker.add("doTransform");
108 return null;
109 }
110
111 public String getProperty()
112 {
113 return property;
114 }
115
116 public void setProperty(String property)
117 {
118 tracker.add("setProperty");
119 }
120
121 public List<String> getTracker()
122 {
123 return tracker;
124 }
125
126 @Override
127 public void initialise() throws InitialisationException
128 {
129 tracker.add("initialise");
130 }
131
132 @Override
133 public void dispose()
134 {
135 tracker.add("dispose");
136 }
137 }
138 }