View Javadoc

1   /*
2    * $Id$
3    * --------------------------------------------------------------------------------------
4    * Copyright (c) MuleSoft, Inc.  All rights reserved.  http://www.mulesoft.com
5    *
6    * The software in this package is published under the terms of the CPAL v1.0
7    * license, a copy of which has been included with this distribution in the
8    * LICENSE.txt file.
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 }