001 package com.mockrunner.jms;
002
003 import java.util.ArrayList;
004 import java.util.Collections;
005 import java.util.List;
006
007 import com.mockrunner.mock.jms.MockBytesMessage;
008 import com.mockrunner.mock.jms.MockMapMessage;
009 import com.mockrunner.mock.jms.MockMessage;
010 import com.mockrunner.mock.jms.MockObjectMessage;
011 import com.mockrunner.mock.jms.MockStreamMessage;
012 import com.mockrunner.mock.jms.MockTextMessage;
013
014 /**
015 * Can be used to create and access all type of messages.
016 * The create methods are usually called by
017 * {@link com.mockrunner.mock.jms.MockSession}.
018 */
019 public class MessageManager
020 {
021 private List messages;
022 private List byteMessages;
023 private List mapMessages;
024 private List textMessages;
025 private List streamMessages;
026 private List objectMessages;
027
028 public MessageManager()
029 {
030 messages = new ArrayList();
031 byteMessages = new ArrayList();
032 mapMessages = new ArrayList();
033 textMessages = new ArrayList();
034 streamMessages = new ArrayList();
035 objectMessages = new ArrayList();
036 }
037
038 /**
039 * Creates a new <code>Message</code>. Usually this method is called
040 * by {@link com.mockrunner.mock.jms.MockSession#createMessage}.
041 * @return the created <code>Message</code>
042 */
043 public MockMessage createMessage()
044 {
045 MockMessage message = new MockMessage();
046 messages.add(message);
047 return message;
048 }
049
050 /**
051 * Returns a <code>Message</code> by its index or
052 * <code>null</code>, if no such <code>Message</code> is
053 * present.
054 * @param index the index of the <code>Message</code>
055 * @return the <code>Message</code>
056 */
057 public MockMessage getMessage(int index)
058 {
059 if(messages.size() <= index || index < 0) return null;
060 return (MockMessage)messages.get(index);
061 }
062
063 /**
064 * Returns the list of <code>Message</code> objects.
065 * @return the <code>Message</code> list
066 */
067 public List getMessageList()
068 {
069 return Collections.unmodifiableList(messages);
070 }
071
072 /**
073 * Creates a new <code>BytesMessage</code>. Usually this method is called
074 * by {@link com.mockrunner.mock.jms.MockSession#createBytesMessage}.
075 * @return the created <code>BytesMessage</code>
076 */
077 public MockBytesMessage createBytesMessage()
078 {
079 MockBytesMessage message = new MockBytesMessage();
080 byteMessages.add(message);
081 return message;
082 }
083
084 /**
085 * Returns a <code>BytesMessage</code> by its index or
086 * <code>null</code>, if no such <code>BytesMessage</code> is
087 * present.
088 * @param index the index of the <code>BytesMessage</code>
089 * @return the <code>BytesMessage</code>
090 */
091 public MockBytesMessage getBytesMessage(int index)
092 {
093 if(byteMessages.size() <= index || index < 0) return null;
094 return (MockBytesMessage)byteMessages.get(index);
095 }
096
097 /**
098 * Returns the list of <code>BytesMessage</code> objects.
099 * @return the <code>BytesMessage</code> list
100 */
101 public List getBytesMessageList()
102 {
103 return Collections.unmodifiableList(byteMessages);
104 }
105
106 /**
107 * Creates a new <code>MapMessage</code>. Usually this method is called
108 * by {@link com.mockrunner.mock.jms.MockSession#createMapMessage}.
109 * @return the created <code>MapMessage</code>
110 */
111 public MockMapMessage createMapMessage()
112 {
113 MockMapMessage message = new MockMapMessage();
114 mapMessages.add(message);
115 return message;
116 }
117
118 /**
119 * Returns a <code>MapMessage</code> by its index or
120 * <code>null</code>, if no such <code>MapMessage</code> is
121 * present.
122 * @param index the index of the <code>MapMessage</code>
123 * @return the <code>MapMessage</code>
124 */
125 public MockMapMessage getMapMessage(int index)
126 {
127 if(mapMessages.size() <= index || index < 0) return null;
128 return (MockMapMessage)mapMessages.get(index);
129 }
130
131 /**
132 * Returns the list of <code>MapMessage</code> objects.
133 * @return the <code>MapMessage</code> list
134 */
135 public List getMapMessageList()
136 {
137 return Collections.unmodifiableList(mapMessages);
138 }
139
140 /**
141 * Creates a new <code>TextMessage</code>. Usually this method is called
142 * by {@link com.mockrunner.mock.jms.MockSession#createTextMessage}.
143 * @return the created <code>TextMessage</code>
144 */
145 public MockTextMessage createTextMessage(String text)
146 {
147 MockTextMessage message = new MockTextMessage(text);
148 textMessages.add(message);
149 return message;
150 }
151
152 /**
153 * Returns a <code>TextMessage</code> by its index or
154 * <code>null</code>, if no such <code>TextMessage</code> is
155 * present.
156 * @param index the index of the <code>TextMessage</code>
157 * @return the <code>TextMessage</code>
158 */
159 public MockTextMessage getTextMessage(int index)
160 {
161 if(textMessages.size() <= index || index < 0) return null;
162 return (MockTextMessage)textMessages.get(index);
163 }
164
165 /**
166 * Returns the list of <code>TextMessage</code> objects.
167 * @return the <code>TextMessage</code> list
168 */
169 public List getTextMessageList()
170 {
171 return Collections.unmodifiableList(textMessages);
172 }
173
174 /**
175 * Creates a new <code>StreamMessage</code>. Usually this method is called
176 * by {@link com.mockrunner.mock.jms.MockSession#createStreamMessage}.
177 * @return the created <code>StreamMessage</code>
178 */
179 public MockStreamMessage createStreamMessage()
180 {
181 MockStreamMessage message = new MockStreamMessage();
182 streamMessages.add(message);
183 return message;
184 }
185
186 /**
187 * Returns a <code>StreamMessage</code> by its index or
188 * <code>null</code>, if no such <code>StreamMessage</code> is
189 * present.
190 * @param index the index of the <code>StreamMessage</code>
191 * @return the <code>StreamMessage</code>
192 */
193 public MockStreamMessage getStreamMessage(int index)
194 {
195 if(streamMessages.size() <= index || index < 0) return null;
196 return (MockStreamMessage)streamMessages.get(index);
197 }
198
199 /**
200 * Returns the list of <code>StreamMessage</code> objects.
201 * @return the <code>StreamMessage</code> list
202 */
203 public List getStreamMessageList()
204 {
205 return Collections.unmodifiableList(streamMessages);
206 }
207
208 /**
209 * Creates a new <code>ObjectMessage</code>. Usually this method is called
210 * by {@link com.mockrunner.mock.jms.MockSession#createObjectMessage}.
211 * @return the created <code>ObjectMessage</code>
212 */
213 public MockObjectMessage createObjectMessage(java.io.Serializable object)
214 {
215 MockObjectMessage message = new MockObjectMessage(object);
216 objectMessages.add(message);
217 return message;
218 }
219
220 /**
221 * Returns a <code>ObjectMessage</code> by its index or
222 * <code>null</code>, if no such <code>ObjectMessage</code> is
223 * present.
224 * @param index the index of the <code>ObjectMessage</code>
225 * @return the <code>ObjectMessage</code>
226 */
227 public MockObjectMessage getObjectMessage(int index)
228 {
229 if(objectMessages.size() <= index || index < 0) return null;
230 return (MockObjectMessage)objectMessages.get(index);
231 }
232
233 /**
234 * Returns the list of <code>ObjectMessage</code> objects.
235 * @return the <code>ObjectMessage</code> list
236 */
237 public List getObjectMessageList()
238 {
239 return Collections.unmodifiableList(objectMessages);
240 }
241 }