1 /***
2 * Redistribution and use of this software and associated documentation
3 * ("Software"), with or without modification, are permitted provided
4 * that the following conditions are met:
5 *
6 * 1. Redistributions of source code must retain copyright
7 * statements and notices. Redistributions must also contain a
8 * copy of this document.
9 *
10 * 2. Redistributions in binary form must reproduce the
11 * above copyright notice, this list of conditions and the
12 * following disclaimer in the documentation and/or other
13 * materials provided with the distribution.
14 *
15 * 3. The name "Exolab" must not be used to endorse or promote
16 * products derived from this Software without prior written
17 * permission of Exoffice Technologies. For written permission,
18 * please contact tma@netspace.net.au.
19 *
20 * 4. Products derived from this Software may not be called "Exolab"
21 * nor may "Exolab" appear in their names without prior written
22 * permission of Exoffice Technologies. Exolab is a registered
23 * trademark of Exoffice Technologies.
24 *
25 * 5. Due credit should be given to the Exolab Project
26 * (http://www.exolab.org/).
27 *
28 * THIS SOFTWARE IS PROVIDED BY EXOFFICE TECHNOLOGIES AND CONTRIBUTORS
29 * ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT
30 * NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
31 * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
32 * EXOFFICE TECHNOLOGIES OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
33 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
34 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
35 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
36 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
37 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
38 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
39 * OF THE POSSIBILITY OF SUCH DAMAGE.
40 *
41 * Copyright 2001-2004 (C) Exoffice Technologies Inc. All Rights Reserved.
42 *
43 * $Id: EmptyMessageVerifier.java,v 1.2 2004/02/03 07:31:04 tanderson Exp $
44 */
45 package org.exolab.jmscts.test.message.util;
46
47 import java.util.Enumeration;
48
49 import javax.jms.BytesMessage;
50 import javax.jms.MapMessage;
51 import javax.jms.Message;
52 import javax.jms.MessageEOFException;
53 import javax.jms.ObjectMessage;
54 import javax.jms.StreamMessage;
55 import javax.jms.TextMessage;
56
57 import org.exolab.jmscts.core.AbstractMessageVerifier;
58 import org.exolab.jmscts.core.MethodInvoker;
59
60
61 /***
62 * A helper class for verifying that a message has no body
63 *
64 * @version $Revision: 1.2 $ $Date: 2004/02/03 07:31:04 $
65 * @author <a href="mailto:tma@netspace.net.au">Tim Anderson</a>
66 * @see AbstractMessageVerifier
67 */
68 public class EmptyMessageVerifier extends AbstractMessageVerifier {
69
70 /***
71 * Byte array size
72 */
73 private static final int BYTE_ARRAY_SIZE = 10;
74
75
76 /***
77 * Construct a new instance. No exceptions are expected to be thrown
78 * when invoking methods
79 */
80 public EmptyMessageVerifier() {
81 }
82
83 /***
84 * Construct an instance with the expected exception thrown when
85 * methods are invoked
86 *
87 * @param exception the expected exception type when methods are invoked
88 */
89 public EmptyMessageVerifier(Class exception) {
90 super(exception);
91 }
92
93 /***
94 * Verify a Message instance has no data.
95 * This method is a no-op, as a Message instance has no body
96 *
97 * @param message the message to verify
98 * @throws Exception for any error
99 */
100 public void verifyMessage(Message message) throws Exception {
101 }
102
103 /***
104 * Verify a BytesMessage instance has no data
105 *
106 * @param message the message to verify
107 * @throws Exception for any error
108 */
109 public void verifyBytesMessage(BytesMessage message) throws Exception {
110 final int size = BYTE_ARRAY_SIZE;
111 expect(message, "readBoolean", null);
112 expect(message, "readByte", null);
113
114 if (MessageEOFException.class.equals(getExpectedException())) {
115 // don't expect any exceptions from readBytes if the expected
116 // exception type is MessageEOFException. In this case,
117 // readBytes should return -1
118 MethodInvoker invoker = new MethodInvoker();
119 Integer result = new Integer(-1);
120 equal(invoker.invoke(message, "readBytes", new byte[size]),
121 result);
122
123 Object[] args = {new byte[size], new Integer(size)};
124 equal(invoker.invoke(message, "readBytes", args), result);
125 } else {
126 expect(message, "readBytes", new Object[]{new byte[size]}, null);
127 Object[] args = {new byte[size], new Integer(size)};
128 expect(message, "readBytes", args, null);
129 }
130
131 expect(message, "readChar", null);
132 expect(message, "readDouble", null);
133 expect(message, "readFloat", null);
134 expect(message, "readInt", null);
135 expect(message, "readLong", null);
136 expect(message, "readShort", null);
137 expect(message, "readUTF", null);
138 }
139
140 /***
141 * Verify a MapMessage instance has no data
142 *
143 * @param message the message to verify
144 * @throws Exception for any error
145 */
146 public void verifyMapMessage(MapMessage message) throws Exception {
147 Enumeration iter = message.getMapNames();
148 if (iter.hasMoreElements()) {
149 // let the expect operation handle the exception
150 String name = (String) iter.nextElement();
151 expect(message, "getObject", new Object[]{name}, null);
152 }
153 }
154
155 /***
156 * Verify a MapMessage instance has no data
157 *
158 * @param message the message to verify
159 * @throws Exception for any error
160 */
161 public void verifyObjectMessage(ObjectMessage message) throws Exception {
162 expect(message, "getObject", null);
163 }
164
165 /***
166 * Verify a StreamMessage has no data
167 *
168 * @param message the message to verify
169 * @throws Exception for any error
170 */
171 public void verifyStreamMessage(StreamMessage message) throws Exception {
172 expect(message, "readBoolean", null);
173 expect(message, "readByte", null);
174
175 expect(message, "readBytes", new Object[]{new byte[BYTE_ARRAY_SIZE]},
176 null);
177 // StreamMessage is different to BytesMessage in its implementation
178 // of readBytes in that it may throw MessageEOFException. For
179 // an empty message, this is the expected result as type information
180 // must typically be inserted into the stream to indicate the type
181 // and field length
182
183 expect(message, "readChar", null);
184 expect(message, "readDouble", null);
185 expect(message, "readFloat", null);
186 expect(message, "readInt", null);
187 expect(message, "readLong", null);
188 expect(message, "readShort", null);
189 expect(message, "readString", null);
190 expect(message, "readObject", null);
191 }
192
193 /***
194 * Verify a TextMessage instance has no data
195 *
196 * @param message the message to verify
197 * @throws Exception for any error
198 */
199 public void verifyTextMessage(TextMessage message) throws Exception {
200 expect(message, "getText", null);
201 }
202
203 }
This page was automatically generated by Maven