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: MessageId.java,v 1.8 2003/08/07 13:33:01 tanderson Exp $ 44 * 45 * Date Author Changes 46 * 02/26/2000 jimm Created 47 */ 48 49 50 package org.exolab.jms.message; 51 52 import java.io.Externalizable; 53 import java.io.IOException; 54 import java.io.ObjectInput; 55 import java.io.ObjectOutput; 56 57 import javax.jms.JMSException; 58 59 import org.exolab.jms.Identifiable; 60 import org.exolab.jms.util.UUID; 61 62 63 /*** 64 * The MessageId is a serializable object that uniquely identifies a message 65 * 66 * @version $Revision: 1.8 $ $Date: 2003/08/07 13:33:01 $ 67 * @author <a href="mailto:jima@exoffice.com">Jim Alateras</a> 68 */ 69 final public class MessageId 70 implements Externalizable, Identifiable { 71 72 /*** 73 * Version Id used for streaming 74 */ 75 static final long serialVersionUID = 2; 76 77 /*** 78 * The JMS message identifier 79 */ 80 private String _id = null; 81 82 /*** 83 * The JMS message identifier prefix 84 */ 85 public final static String PREFIX = "ID:"; 86 87 /*** 88 * A null object identity 89 */ 90 private static final String NULL_ID = "ID:0"; 91 92 93 /*** 94 * Constructor provided for serialization 95 */ 96 public MessageId() { 97 } 98 99 /*** 100 * Construct a new <code>MessageId</code> 101 * 102 * @param id - the message identity 103 */ 104 public MessageId(String id) { 105 _id = id; 106 } 107 108 // implementation of Identifiable.getId 109 public String getId() { 110 return _id; 111 } 112 113 // implementation of Object.hashCode 114 public int hashCode() { 115 return _id.hashCode(); 116 } 117 118 // implementation of Externalizable.writeExternal 119 public void writeExternal(ObjectOutput out) throws IOException { 120 out.writeLong(serialVersionUID); 121 out.writeUTF(_id); 122 } 123 124 // implementation of Externalizable.readExternal 125 public void readExternal(ObjectInput in) 126 throws IOException, ClassNotFoundException { 127 128 // read the serial number of the object and ensure that 129 // we can process it. 130 long version = in.readLong(); 131 if (version == serialVersionUID) { 132 _id = in.readUTF(); 133 } else if (version == 1) { 134 // for backwards compatibility 135 long oldID = in.readLong(); // discard this 136 String id = (String) in.readObject(); 137 _id = PREFIX + id; 138 } else { 139 throw new IOException("Incorrect version enountered: " + 140 version + " This version = " + 141 serialVersionUID); 142 } 143 } 144 145 // override Object.toString 146 public String toString() { 147 return _id; 148 } 149 150 // override Object,equals 151 public boolean equals(Object object) { 152 boolean equal = (object == this); 153 if (!equal) { 154 if (object instanceof MessageId && 155 ((MessageId) object)._id.equals(_id)) { 156 equal = true; 157 } 158 } 159 160 return equal; 161 } 162 163 /*** 164 * Allocate a new globally unique message identifier 165 * 166 * @return a globally unique message identifier 167 */ 168 public static String create() { 169 return UUID.next(PREFIX); 170 } 171 172 /*** 173 * Return the 'null' JMSMessageID. 174 * This is the first Id recognised by OpenJMS, but not assigned 175 * to messages. 176 * 177 * @return String the 'null' message Id 178 */ 179 public static String getNull() { 180 return NULL_ID; 181 } 182 183 } 184

This page was automatically generated by Maven