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.message; 19 20 import javax.transaction.xa.Xid; 21 22 /*** 23 * @version $Revision: 1.1 $ 24 */ 25 public class XidStub implements Xid { 26 27 private byte[] id; 28 29 public XidStub(byte[] id) { 30 this.id = id; 31 } 32 33 public int getFormatId() { 34 return 77; 35 } 36 37 public byte[] getBranchQualifier() { 38 return id; 39 } 40 41 public byte[] getGlobalTransactionId() { 42 return id; 43 } 44 45 public int hashCode() { 46 int hash = 0; 47 hash = hash(id, hash); 48 return hash; 49 } 50 51 public String toString() { 52 StringBuffer buffer = new StringBuffer(super.toString()); 53 buffer.append("[id=["); 54 for (int i = 0; i < id.length; i++) { 55 if (i > 0) { 56 buffer.append(", "); 57 } 58 buffer.append(Byte.toString(id[i])); 59 } 60 buffer.append("]"); 61 return buffer.toString(); 62 } 63 64 protected int hash(byte[] bytes, int hash) { 65 for (int i = 0, size = bytes.length; i < size; i++) { 66 hash ^= bytes[i]; 67 } 68 return hash; 69 } 70 71 public boolean equals(Object that) { 72 if (this == that) { 73 return true; 74 } 75 if (hashCode() == that.hashCode() && that instanceof XidStub) { 76 return equals((XidStub) that); 77 } 78 return false; 79 } 80 81 public boolean equals(XidStub that) { 82 if (this.id.length == that.id.length) { 83 for (int i = 0; i < id.length; i++) { 84 if (this.id[i] != that.id[i]) { 85 return false; 86 } 87 } 88 return true; 89 } 90 return false; 91 } 92 }