001 /** 002 * 003 * Copyright 2004 Protique Ltd 004 * 005 * Licensed under the Apache License, Version 2.0 (the "License"); 006 * you may not use this file except in compliance with the License. 007 * You may obtain a copy of the License at 008 * 009 * http://www.apache.org/licenses/LICENSE-2.0 010 * 011 * Unless required by applicable law or agreed to in writing, software 012 * distributed under the License is distributed on an "AS IS" BASIS, 013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 014 * See the License for the specific language governing permissions and 015 * limitations under the License. 016 * 017 **/ 018 package org.activemq.service.impl; 019 020 import java.io.Externalizable; 021 import java.io.IOException; 022 import java.io.ObjectInput; 023 import java.io.ObjectOutput; 024 import javax.jms.JMSException; 025 import org.activemq.io.WireFormat; 026 import org.activemq.io.impl.DefaultWireFormat; 027 import org.activemq.message.ActiveMQMessage; 028 import org.activemq.util.JMSExceptionHelper; 029 030 031 /** 032 * An entry for a message in a container 033 * 034 * @version $Revision: 1.1.1.1 $ 035 */ 036 public class MessageEntry implements Externalizable { 037 private static final long serialVersionUID = -3590625465815936811L; 038 private static final WireFormat wireFormat = new DefaultWireFormat(); 039 040 041 private ActiveMQMessage message; 042 043 /** 044 * Only used by serialisation 045 */ 046 public MessageEntry() { 047 } 048 049 public MessageEntry(ActiveMQMessage msg) { 050 this.message = msg; 051 } 052 053 054 /** 055 * @return Returns the message. 056 */ 057 public ActiveMQMessage getMessage() { 058 return message; 059 } 060 061 /** 062 * @return a hashCode for this object 063 */ 064 public int hashCode() { 065 return message != null ? message.hashCode() : super.hashCode(); 066 } 067 068 /** 069 * Tests equivalence with an other object 070 * 071 * @param obj the object to test against 072 * @return true/false 073 */ 074 075 public boolean equals(Object obj) { 076 boolean result = false; 077 if (obj != null && obj instanceof MessageEntry) { 078 MessageEntry other = (MessageEntry) obj; 079 result = (this.message != null && other.message != null && this.message.equals(other.message) || 080 this.message == null && other.message == null); 081 } 082 return result; 083 } 084 085 public void writeExternal(ObjectOutput out) throws IOException { 086 try { 087 wireFormat.writePacket(message, out); 088 } 089 catch (JMSException e) { 090 throw JMSExceptionHelper.newIOException(e); 091 } 092 } 093 094 public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException { 095 message = (ActiveMQMessage) wireFormat.readPacket(in); 096 } 097 }