001 package com.mockrunner.mock.jms;
002
003 import javax.jms.JMSException;
004 import javax.jms.MessageNotWriteableException;
005 import javax.jms.TextMessage;
006
007 /**
008 * Mock implementation of JMS <code>TextMessage</code>.
009 */
010 public class MockTextMessage extends MockMessage implements TextMessage
011 {
012 private String text;
013
014 public MockTextMessage()
015 {
016 this(null);
017 }
018
019 public MockTextMessage(String text)
020 {
021 this.text = text;
022 }
023
024 public void setText(String text) throws JMSException
025 {
026 if(!isInWriteMode())
027 {
028 throw new MessageNotWriteableException("Message is in read mode");
029 }
030 this.text = text;
031 }
032
033 public String getText() throws JMSException
034 {
035 return text;
036 }
037
038 public String toString()
039 {
040 try
041 {
042 return getText();
043 }
044 catch(JMSException exc)
045 {
046 return exc.getMessage();
047 }
048 }
049
050 public void clearBody() throws JMSException
051 {
052 super.clearBody();
053 text = null;
054 }
055
056 /**
057 * Compares the underlying String. If the Strings of
058 * both messages are <code>null</code>, this
059 * method returns <code>true</code>.
060 */
061 public boolean equals(Object otherObject)
062 {
063 if(null == otherObject) return false;
064 if(!(otherObject instanceof MockTextMessage)) return false;
065 MockTextMessage otherMessage = (MockTextMessage)otherObject;
066 if(null == text && null == otherMessage.text) return true;
067 return text.equals(otherMessage.text);
068 }
069
070 public int hashCode()
071 {
072 if(null == text) return 0;
073 return text.hashCode();
074 }
075
076 public Object clone()
077 {
078 return super.clone();
079 }
080 }