View Javadoc
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 info@exolab.org. 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 2000-2003 (C) Exoffice Technologies Inc. All Rights Reserved. 42 * 43 * $Id: MessageHeader.java,v 1.18 2004/01/01 13:45:03 tanderson Exp $ 44 * 45 * Date Author Changes 46 * 02/26/2000 jimm Created 47 */ 48 49 package org.exolab.jms.message; 50 51 import java.io.Externalizable; 52 import java.io.IOException; 53 import java.io.ObjectInput; 54 import java.io.ObjectOutput; 55 56 import javax.jms.DeliveryMode; 57 import javax.jms.Destination; 58 import javax.jms.JMSException; 59 60 61 /*** 62 * This class implements message header fields for messages. 63 * 64 * @version $Revision: 1.18 $ $Date: 2004/01/01 13:45:03 $ 65 * @author <a href="mailto:mourikis@exolab.org">Jim Mourikis</a> 66 * @see javax.jms.Message 67 */ 68 class MessageHeader implements Externalizable, Cloneable { 69 70 static final long serialVersionUID = 1; 71 72 private DestinationImpl _replyTo = null; 73 private Timestamp _timestamp = null; 74 private CorrelationId _correlationId = null; 75 private boolean _redelivered = false; 76 private long _expiration = 0; 77 private Priority _priority = null; 78 private Type _type = null; 79 private DestinationImpl _destination = null; 80 private DeliveryModeImpl _mode = null; 81 82 83 /*** 84 * A message identity the uniquely identifies the message. 85 * This is assigned when the message is sent. 86 */ 87 private MessageId _id = null; 88 89 /*** 90 * The identity of the message when it was received, used for message 91 * acknowledgement. This is required as <code>_id</code> changes when 92 * a message is republished, but the original identifier of the message 93 * must be used to acknowledge the message. 94 */ 95 private transient String _ackId; 96 97 /*** 98 * if this message is being delivered as a result of a wildcard, this 99 * will contain the original wildcard name that the consumer subscribed 100 * with. 101 */ 102 private String _wildcard = null; 103 104 /*** 105 * The unique id of the consumer endpoint that sent this message. This is 106 * used for sending back acks etc. 107 */ 108 private String _consumerId = null; 109 110 /*** 111 * The session allocated identifer of the consumer 112 */ 113 private long _clientid; 114 115 116 public MessageHeader() { 117 } 118 119 /*** 120 * Clone an instance of this object. 121 * 122 * @return a copy of this object 123 * @exception CloneNotSupportedException if object or attributes 124 * not cloneable 125 */ 126 public Object clone() throws CloneNotSupportedException { 127 MessageHeader result = (MessageHeader) super.clone(); 128 result._replyTo = _replyTo; 129 result._timestamp = _timestamp; 130 result._correlationId = _correlationId; 131 result._priority = _priority; 132 result._type = _type; 133 result._destination = _destination; 134 result._mode = _mode; 135 result._id = _id; 136 result._ackId = _ackId; 137 result._wildcard = (_wildcard == null ? null : _wildcard); 138 result._consumerId = _consumerId; 139 result._clientid = _clientid; 140 return result; 141 } 142 143 144 // Write external interfaces called via serialisation. 145 public void writeExternal(ObjectOutput out) throws IOException { 146 out.writeLong(serialVersionUID); 147 out.writeObject(_replyTo); 148 out.writeObject(_timestamp); 149 out.writeObject(_correlationId); 150 out.writeBoolean(_redelivered); 151 out.writeLong(_expiration); 152 out.writeObject(_priority); 153 out.writeObject(_type); 154 out.writeObject(_destination); 155 out.writeObject(_mode); 156 out.writeObject(_id); 157 out.writeObject(_wildcard); 158 out.writeObject(_consumerId); 159 out.writeLong(_clientid); 160 } 161 162 public void readExternal(ObjectInput in) 163 throws IOException, ClassNotFoundException { 164 long version = in.readLong(); 165 if (version == serialVersionUID) { 166 _replyTo = (DestinationImpl) in.readObject(); 167 _timestamp = (Timestamp) in.readObject(); 168 _correlationId = (CorrelationId) in.readObject(); 169 _redelivered = in.readBoolean(); 170 _expiration = in.readLong(); 171 _priority = (Priority) in.readObject(); 172 _type = (Type) in.readObject(); 173 _destination = (DestinationImpl) in.readObject(); 174 _mode = (DeliveryModeImpl) in.readObject(); 175 _id = (MessageId) in.readObject(); 176 _wildcard = (String) in.readObject(); 177 _consumerId = (String) in.readObject(); 178 _clientid = in.readLong(); 179 } else { 180 throw new IOException("Incorrect version enountered: " + 181 version + " This version = " + 182 serialVersionUID); 183 } 184 } 185 186 Destination getJMSReplyTo() throws JMSException { 187 return _replyTo; 188 } 189 190 public void setJMSReplyTo(Destination replyTo) throws JMSException { 191 if (replyTo instanceof DestinationImpl) { 192 _replyTo = (DestinationImpl) replyTo; 193 } else { 194 throw new JMSException("Unknown Destination Type"); 195 } 196 } 197 198 void setJMSDestination(Destination destination) throws JMSException { 199 if (destination instanceof DestinationImpl) { 200 _destination = (DestinationImpl) destination; 201 } else { 202 throw new JMSException("Unknown Destination Type"); 203 } 204 } 205 206 public Destination getJMSDestination() throws JMSException { 207 return _destination; 208 } 209 210 public void setJMSMessageID(String id) throws JMSException { 211 if (id != null) { 212 if (!id.startsWith(MessageId.PREFIX)) { 213 throw new JMSException("Invalid JMSMessageID: " + id); 214 } 215 _id = new MessageId(id); 216 } else { 217 _id = null; 218 } 219 } 220 221 public String getJMSMessageID() throws JMSException { 222 if (_id != null) { 223 return _id.toString(); 224 } else { 225 Thread.currentThread().dumpStack(); 226 throw new JMSException("No Internal Id set"); 227 } 228 } 229 230 /*** 231 * Sets the identifier of the message for acknowledgement. 232 * This will typically be the same as that returned by 233 * {@link #getJMSMessageID}, unless the message was republished after 234 * its receipt. If the message is republished, this method will return 235 * the original message identifier, whereas {@link #getJMSMessageID} will 236 * return that of the last publication. 237 * 238 * @param ackId the identifier of the message for acknowledgement 239 */ 240 public void setAckMessageID(String id) { 241 _ackId = id; 242 } 243 244 /*** 245 * Returns the identifier of the message for acknowledgment. 246 * 247 * @return the identifier of the message for acknowledgment 248 */ 249 public String getAckMessageID() { 250 return _ackId; 251 } 252 253 public void setJMSTimestamp(long timestamp) throws JMSException { 254 _timestamp = new Timestamp(timestamp); 255 } 256 257 public long getJMSTimestamp() throws JMSException { 258 if (_timestamp != null) { 259 return _timestamp.toLong(); 260 } else { 261 throw new JMSException("No Timestamp set"); 262 } 263 } 264 265 public void setJMSCorrelationIDAsBytes(byte[] correlationID) 266 throws JMSException { 267 _correlationId = new CorrelationId(correlationID); 268 } 269 270 public byte[] getJMSCorrelationIDAsBytes() throws JMSException { 271 return (_correlationId != null ? _correlationId.getBytes() : null); 272 } 273 274 public void setJMSCorrelationID(String correlationID) throws JMSException { 275 if (correlationID != null) { 276 _correlationId = new CorrelationId(correlationID); 277 } else { 278 _correlationId = null; 279 } 280 } 281 282 public String getJMSCorrelationID() throws JMSException { 283 return (_correlationId != null ? _correlationId.getString() : null); 284 } 285 286 public void setJMSDeliveryMode(int mode) throws JMSException { 287 _mode = new DeliveryModeImpl(mode); 288 } 289 290 public int getJMSDeliveryMode() throws JMSException { 291 if (_mode != null) { 292 return _mode.getDeliveryMode(); 293 } else { 294 throw new JMSException("No Delivery Mode set"); 295 } 296 } 297 298 public boolean getJMSRedelivered() throws JMSException { 299 return _redelivered; 300 } 301 302 public void setJMSRedelivered(boolean redelivered) throws JMSException { 303 _redelivered = redelivered; 304 } 305 306 public void setJMSType(String type) throws JMSException { 307 if (type != null) { 308 _type = new Type(type); 309 } else { 310 _type = null; 311 } 312 } 313 314 public String getJMSType() throws JMSException { 315 return (_type != null) ? _type.getType() : null; 316 } 317 318 public void setJMSExpiration(long expiration) throws JMSException { 319 _expiration = expiration; 320 } 321 322 public long getJMSExpiration() throws JMSException { 323 return _expiration; 324 } 325 326 public void setJMSPriority(int priority) throws JMSException { 327 _priority = new Priority(priority); 328 } 329 330 public int getJMSPriority() throws JMSException { 331 if (_priority != null) { 332 return _priority.getPriority(); 333 } else { 334 return 0; 335 } 336 } 337 338 /*** 339 * Get the value of consumerId. 340 * @return value of consumerId. 341 */ 342 public String getConsumerId() { 343 return _consumerId; 344 } 345 346 /*** 347 * Set the value of consumerId. 348 * @param v Value to assign to consumerId. 349 */ 350 public void setConsumerId(String v) { 351 _consumerId = v; 352 } 353 354 /*** 355 * Get the value of the client session consumer identifier 356 * 357 * @return the value of the client session consumer identifier 358 */ 359 public long getClientId() { 360 return _clientid; 361 } 362 363 /*** 364 * Set the value of the client session consumer identifer 365 * 366 * @param clientId the client session consumer identifier 367 */ 368 public void setClientId(long clientId) { 369 _clientid = clientId; 370 } 371 372 373 /*** 374 * Return the message id for the object 375 * 376 * @return MessageId 377 */ 378 public MessageId getMessageId() { 379 return _id; 380 } 381 382 /*** 383 * Return the wildcard value if there is one. 384 * 385 * @return String The wildcard string 386 */ 387 public String getWildcard() { 388 return _wildcard; 389 } 390 391 /*** 392 * Set the wildcard string. 393 * 394 * @param wildcard The wildcard. 395 */ 396 public void setWildcard(String wildcard) { 397 _wildcard = wildcard; 398 } 399 400 /*** 401 * Checks whether the message is persistent. 402 * 403 * @return boolean - true if it is 404 */ 405 public boolean isPersistent() { 406 if (_mode != null) { 407 return _mode.isPersistent(); 408 } else { 409 return false; 410 } 411 } 412 413 //Expedited or normal 414 public boolean isPriorityExpedited() throws JMSException { 415 if (_priority != null) { 416 return _priority.isExpedited(); 417 } else { 418 return false; 419 } 420 } 421 422 } // End MessageHeader

This page was automatically generated by Maven