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