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.impl;
19
20 import org.codehaus.activemq.message.ActiveMQMessage;
21 import org.codehaus.activemq.message.DefaultWireFormat;
22 import org.codehaus.activemq.message.WireFormat;
23 import org.codehaus.activemq.util.JMSExceptionHelper;
24
25 import javax.jms.JMSException;
26 import java.io.Externalizable;
27 import java.io.IOException;
28 import java.io.ObjectInput;
29 import java.io.ObjectOutput;
30
31
32 /***
33 * An entry for a message in a container
34 *
35 * @version $Revision: 1.3 $
36 */
37 public class MessageEntry implements Externalizable {
38 private static final long serialVersionUID = -3590625465815936811L;
39 private static final WireFormat wireFormat = new DefaultWireFormat();
40
41
42 private ActiveMQMessage message;
43
44 /***
45 * Only used by serialisation
46 */
47 public MessageEntry() {
48 }
49
50 public MessageEntry(ActiveMQMessage msg) {
51 this.message = msg;
52 }
53
54
55 /***
56 * @return Returns the message.
57 */
58 public ActiveMQMessage getMessage() {
59 return message;
60 }
61
62 /***
63 * @return a hashCode for this object
64 */
65 public int hashCode() {
66 return message != null ? message.hashCode() : super.hashCode();
67 }
68
69 /***
70 * Tests equivalence with an other object
71 *
72 * @param obj the object to test against
73 * @return true/false
74 */
75
76 public boolean equals(Object obj) {
77 boolean result = false;
78 if (obj != null && obj instanceof MessageEntry) {
79 MessageEntry other = (MessageEntry) obj;
80 result = (this.message != null && other.message != null && this.message.equals(other.message) ||
81 this.message == null && other.message == null);
82 }
83 return result;
84 }
85
86 public void writeExternal(ObjectOutput out) throws IOException {
87 try {
88 wireFormat.writePacket(message, out);
89 }
90 catch (JMSException e) {
91 throw JMSExceptionHelper.newIOException(e);
92 }
93 }
94
95 public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
96 message = (ActiveMQMessage) wireFormat.readPacket(in);
97 }
98 }