1
2
3
4
5
6
7
8
9
10
11 package org.mule.source;
12
13 import org.mule.api.MuleEvent;
14 import org.mule.api.MuleException;
15 import org.mule.api.lifecycle.Startable;
16 import org.mule.api.lifecycle.Stoppable;
17 import org.mule.api.processor.MessageProcessor;
18 import org.mule.api.source.MessageSource;
19 import org.mule.tck.AbstractMuleTestCase;
20 import org.mule.tck.SensingNullMessageProcessor;
21 import org.mule.util.ObjectUtils;
22
23 public class StartableCompositeMessageSourceTestCase extends AbstractMuleTestCase
24 {
25 protected SensingNullMessageProcessor listener;
26 protected SensingNullMessageProcessor listener2;
27 protected StartableCompositeMessageSource compositeSource;
28 protected MuleEvent testEvent;
29 protected NullMessageSource source;
30
31 @Override
32 protected void doSetUp() throws Exception
33 {
34 super.doSetUp();
35 listener = getSensingNullMessageProcessor();
36 listener2 = getSensingNullMessageProcessor();
37 compositeSource = getCompositeSource();
38 testEvent = getTestEvent(TEST_MESSAGE);
39 source = new NullMessageSource(testEvent);
40 }
41
42 protected StartableCompositeMessageSource getCompositeSource()
43 {
44 return new StartableCompositeMessageSource();
45 }
46
47 public void testAddSourceStopped() throws MuleException
48 {
49 compositeSource.setListener(listener);
50 compositeSource.addSource(source);
51
52 source.triggerSource();
53 assertNull(listener.event);
54
55 source.start();
56 source.triggerSource();
57 assertNull(listener.event);
58
59 compositeSource.start();
60 source.triggerSource();
61 assertEquals(testEvent, listener.event);
62 }
63
64 public void testAddSourceStarted() throws MuleException
65 {
66 compositeSource.setListener(listener);
67 compositeSource.start();
68
69 compositeSource.addSource(source);
70
71 source.triggerSource();
72 assertEquals(testEvent, listener.event);
73 }
74
75 public void testRemoveSource() throws MuleException
76 {
77 compositeSource.setListener(listener);
78 compositeSource.addSource(source);
79 compositeSource.start();
80
81 source.triggerSource();
82 assertEquals(testEvent, listener.event);
83 listener.clear();
84
85 compositeSource.removeSource(source);
86 source.triggerSource();
87 assertNull(listener.event);
88 }
89
90 public void testSetListenerStarted() throws MuleException
91 {
92 compositeSource.addSource(source);
93 compositeSource.setListener(listener);
94 compositeSource.start();
95
96 source.triggerSource();
97 assertEquals(testEvent, listener.event);
98
99 listener.clear();
100 compositeSource.setListener(listener2);
101
102 source.triggerSource();
103 assertNull(listener.event);
104 assertEquals(testEvent, listener2.event);
105 }
106
107 public void testStart() throws MuleException
108 {
109 compositeSource.setListener(listener);
110 compositeSource.addSource(source);
111
112 source.triggerSource();
113 assertNull(listener.event);
114
115 compositeSource.start();
116 source.triggerSource();
117 assertEquals(testEvent, listener.event);
118 }
119
120 public void testStartNoListener() throws MuleException
121 {
122 compositeSource.addSource(source);
123 try
124 {
125 compositeSource.start();
126 fail("Exception excepted");
127 }
128 catch (Exception e)
129 {
130 }
131
132 }
133
134 public void testStop() throws MuleException
135 {
136 compositeSource.setListener(listener);
137 compositeSource.addSource(source);
138 compositeSource.start();
139
140 compositeSource.stop();
141 source.triggerSource();
142 assertNull(listener.event);
143 }
144
145 protected class NullMessageSource implements MessageSource, Startable, Stoppable
146 {
147 MuleEvent event;
148 MessageProcessor listener;
149 boolean started = false;
150
151 public NullMessageSource(MuleEvent event)
152 {
153 this.event = event;
154 }
155
156 public void setListener(MessageProcessor listener)
157 {
158 this.listener = listener;
159 }
160
161 public void triggerSource() throws MuleException
162 {
163 if (started && listener != null)
164 {
165 listener.process(event);
166 }
167 }
168
169 public void start() throws MuleException
170 {
171 started = true;
172 }
173
174 public void stop() throws MuleException
175 {
176 started = false;
177 }
178
179 @Override
180 public String toString()
181 {
182 return ObjectUtils.toString(this);
183 }
184 }
185 }