View Javadoc

    1   /***
    2    *
    3    * Copyright 2004 Protique Ltd
    4    *
    5    * Licensed under the Apache License, Version 2.0 (the "License");
    6    * you may not use this file except in compliance with the License.
    7    * You may obtain a copy of the License at
    8    *
    9    * http://www.apache.org/licenses/LICENSE-2.0
    10   *
    11   * Unless required by applicable law or agreed to in writing, software
    12   * distributed under the License is distributed on an "AS IS" BASIS,
    13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    14   * See the License for the specific language governing permissions and
    15   * limitations under the License.
    16   *
    17   **/
    18  package org.codehaus.activemq.service;
    19
    20  import java.io.Serializable;
    21
    22  /***
    23   * Represents a message identity, either by using a unique
    24   * message number, which is ordered and must not be zero or
    25   * by specifying the String messageID.
    26   * <p/>
    27   * Typically a client accessing the MessageStore may have
    28   * one or the other. Depending on which one is specified the
    29   * other value may be filled in by operations on the MessageStore
    30   *
    31   * @version $Revision: 1.7 $
    32   */
    33  public class MessageIdentity implements Comparable, Serializable {
    34      private String messageID;
    35      private Object sequenceNumber;
    36
    37      public MessageIdentity() {
    38      }
    39
    40      public MessageIdentity(String messageID) {
    41          this.messageID = messageID;
    42      }
    43
    44      public MessageIdentity(String messageID, Object sequenceNumber) {
    45          this.messageID = messageID;
    46          this.sequenceNumber = sequenceNumber;
    47      }
    48
    49      public int hashCode() {
    50          return messageID.hashCode() ^ 0xcafebabe;
    51      }
    52
    53      public boolean equals(Object that) {
    54          return that instanceof MessageIdentity && equals((MessageIdentity) that);
    55      }
    56
    57      public boolean equals(MessageIdentity that) {
    58          return messageID == that.messageID || messageID.equals(that.messageID);
    59      }
    60
    61      public int compareTo(Object object) {
    62          if (this == object) {
    63              return 0;
    64          }
    65          else {
    66              if (object instanceof MessageIdentity) {
    67                  MessageIdentity that = (MessageIdentity) object;
    68                  return messageID.compareTo(that.messageID);
    69              }
    70              else {
    71                  return -1;
    72              }
    73          }
    74      }
    75
    76      public String toString() {
    77          return super.toString() + "[id=" + messageID + "; sequenceNo=" + sequenceNumber + "]";
    78      }
    79
    80      public String getMessageID() {
    81          return messageID;
    82      }
    83
    84      public void setMessageID(String messageID) {
    85          this.messageID = messageID;
    86      }
    87
    88      /***
    89       * @return the sequence number which may be a number or some database specific type
    90       */
    91      public Object getSequenceNumber() {
    92          return sequenceNumber;
    93      }
    94
    95      public void setSequenceNumber(Object sequenceNumber) {
    96          this.sequenceNumber = sequenceNumber;
    97      }
    98
    99  }