messageheader.java
来自「OpenJMS是一个开源的Java Message Service API 1.」· Java 代码 · 共 371 行
JAVA
371 行
/** * Redistribution and use of this software and associated documentation * ("Software"), with or without modification, are permitted provided * that the following conditions are met: * * 1. Redistributions of source code must retain copyright * statements and notices. Redistributions must also contain a * copy of this document. * * 2. Redistributions in binary form must reproduce the * above copyright notice, this list of conditions and the * following disclaimer in the documentation and/or other * materials provided with the distribution. * * 3. The name "Exolab" must not be used to endorse or promote * products derived from this Software without prior written * permission of Exoffice Technologies. For written permission, * please contact info@exolab.org. * * 4. Products derived from this Software may not be called "Exolab" * nor may "Exolab" appear in their names without prior written * permission of Exoffice Technologies. Exolab is a registered * trademark of Exoffice Technologies. * * 5. Due credit should be given to the Exolab Project * (http://www.exolab.org/). * * THIS SOFTWARE IS PROVIDED BY EXOFFICE TECHNOLOGIES AND CONTRIBUTORS * ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT * NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL * EXOFFICE TECHNOLOGIES OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED * OF THE POSSIBILITY OF SUCH DAMAGE. * * Copyright 2000-2005 (C) Exoffice Technologies Inc. All Rights Reserved. * * $Id: MessageHeader.java,v 1.2 2005/03/18 03:50:12 tanderson Exp $ */package org.exolab.jms.message;import java.io.Externalizable;import java.io.IOException;import java.io.ObjectInput;import java.io.ObjectOutput;import javax.jms.Destination;import javax.jms.JMSException;/** * This class implements message header fields for messages. * * @author <a href="mailto:mourikis@exolab.org">Jim Mourikis</a> * @version $Revision: 1.2 $ $Date: 2005/03/18 03:50:12 $ * @see javax.jms.Message */class MessageHeader implements Externalizable, Cloneable { static final long serialVersionUID = 1; private DestinationImpl _replyTo = null; private Timestamp _timestamp = null; private CorrelationId _correlationId = null; private boolean _redelivered = false; private long _expiration = 0; private Priority _priority = null; private Type _type = null; private DestinationImpl _destination = null; private DeliveryModeImpl _mode = null; /** * A message identity the uniquely identifies the message. This is assigned * when the message is sent. */ private MessageId _id = null; /** * The identity of the message when it was received, used for message * acknowledgement. This is required as <code>_id</code> changes when a * message is republished, but the original identifier of the message must * be used to acknowledge the message. */ private transient String _ackId; /** * if this message is being delivered as a result of a wildcard, this will * contain the original wildcard name that the consumer subscribed with. */ private String _wildcard = null; /** * Field kept for serialization compatibility * @deprecated */ private String _unused = null; /** * The unique id of the consumer endpoint that sent this message. This is * used for sending back acks etc. */ private long _consumerId; public MessageHeader() { } /** * Clone an instance of this object. * * @return a copy of this object * @throws CloneNotSupportedException if object or attributes not cloneable */ public Object clone() throws CloneNotSupportedException { MessageHeader result = (MessageHeader) super.clone(); result._replyTo = _replyTo; result._timestamp = _timestamp; result._correlationId = _correlationId; result._priority = _priority; result._type = _type; result._destination = _destination; result._mode = _mode; result._id = _id; result._ackId = _ackId; result._wildcard = (_wildcard == null ? null : _wildcard); result._consumerId = _consumerId; return result; } // Write external interfaces called via serialisation. public void writeExternal(ObjectOutput out) throws IOException { out.writeLong(serialVersionUID); out.writeObject(_replyTo); out.writeObject(_timestamp); out.writeObject(_correlationId); out.writeBoolean(_redelivered); out.writeLong(_expiration); out.writeObject(_priority); out.writeObject(_type); out.writeObject(_destination); out.writeObject(_mode); out.writeObject(_id); out.writeObject(_wildcard); out.writeObject(_unused); out.writeLong(_consumerId); } public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException { long version = in.readLong(); if (version == serialVersionUID) { _replyTo = (DestinationImpl) in.readObject(); _timestamp = (Timestamp) in.readObject(); _correlationId = (CorrelationId) in.readObject(); _redelivered = in.readBoolean(); _expiration = in.readLong(); _priority = (Priority) in.readObject(); _type = (Type) in.readObject(); _destination = (DestinationImpl) in.readObject(); _mode = (DeliveryModeImpl) in.readObject(); _id = (MessageId) in.readObject(); _wildcard = (String) in.readObject(); _unused = (String) in.readObject(); _consumerId = in.readLong(); } else { throw new IOException("Incorrect version enountered: " + version + " This version = " + serialVersionUID); } } Destination getJMSReplyTo() throws JMSException { return _replyTo; } public void setJMSReplyTo(Destination replyTo) throws JMSException { if (replyTo instanceof DestinationImpl) { _replyTo = (DestinationImpl) replyTo; } else { throw new JMSException("Unknown Destination Type"); } } void setJMSDestination(Destination destination) throws JMSException { if (destination instanceof DestinationImpl) { _destination = (DestinationImpl) destination; } else { throw new JMSException("Unknown Destination Type"); } } public Destination getJMSDestination() throws JMSException { return _destination; } public void setJMSMessageID(String id) throws JMSException { if (id != null) { if (!id.startsWith(MessageId.PREFIX)) { throw new JMSException("Invalid JMSMessageID: " + id); } _id = new MessageId(id); } else { _id = null; } } public String getJMSMessageID() throws JMSException { return (_id != null) ? _id.toString() : null; } /** * Sets the identifier of the message for acknowledgement. This will * typically be the same as that returned by {@link #getJMSMessageID}, * unless the message was republished after its receipt. If the message is * republished, this method will return the original message identifier, * whereas {@link #getJMSMessageID} will return that of the last * publication. * * @param id the identifier of the message for acknowledgement */ public void setAckMessageID(String id) { _ackId = id; } /** * Returns the identifier of the message for acknowledgment. * * @return the identifier of the message for acknowledgment */ public String getAckMessageID() { return _ackId; } public void setJMSTimestamp(long timestamp) throws JMSException { _timestamp = new Timestamp(timestamp); } public long getJMSTimestamp() throws JMSException { if (_timestamp != null) { return _timestamp.toLong(); } else { throw new JMSException("No Timestamp set"); } } public void setJMSCorrelationIDAsBytes(byte[] correlationID) throws JMSException { _correlationId = new CorrelationId(correlationID); } public byte[] getJMSCorrelationIDAsBytes() throws JMSException { return (_correlationId != null ? _correlationId.getBytes() : null); } public void setJMSCorrelationID(String correlationID) throws JMSException { if (correlationID != null) { _correlationId = new CorrelationId(correlationID); } else { _correlationId = null; } } public String getJMSCorrelationID() throws JMSException { return (_correlationId != null ? _correlationId.getString() : null); } public void setJMSDeliveryMode(int mode) throws JMSException { _mode = new DeliveryModeImpl(mode); } public int getJMSDeliveryMode() throws JMSException { if (_mode != null) { return _mode.getDeliveryMode(); } else { throw new JMSException("No Delivery Mode set"); } } public boolean getJMSRedelivered() throws JMSException { return _redelivered; } public void setJMSRedelivered(boolean redelivered) throws JMSException { _redelivered = redelivered; } public void setJMSType(String type) throws JMSException { if (type != null) { _type = new Type(type); } else { _type = null; } } public String getJMSType() throws JMSException { return (_type != null) ? _type.getType() : null; } public void setJMSExpiration(long expiration) throws JMSException { _expiration = expiration; } public long getJMSExpiration() throws JMSException { return _expiration; } public void setJMSPriority(int priority) throws JMSException { _priority = new Priority(priority); } public int getJMSPriority() throws JMSException { if (_priority != null) { return _priority.getPriority(); } else { return 0; } } /** * Returns the consumer identifier * * @return the consumer identifier */ public long getConsumerId() { return _consumerId; } /** * Sets the consumer identifer * * @param consumerId the consumer identifier */ public void setConsumerId(long consumerId) { _consumerId = consumerId; } /** * Return the message id for the object * * @return MessageId */ public MessageId getMessageId() { return _id; } /** * Return the wildcard value if there is one. * * @return String The wildcard string */ public String getWildcard() { return _wildcard; } /** * Set the wildcard string. * * @param wildcard The wildcard. */ public void setWildcard(String wildcard) { _wildcard = wildcard; }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?