diff options
| author | Rajith Muditha Attapattu <rajith@apache.org> | 2009-03-19 21:54:58 +0000 |
|---|---|---|
| committer | Rajith Muditha Attapattu <rajith@apache.org> | 2009-03-19 21:54:58 +0000 |
| commit | edbd5f81b7710a73a071b4a264f180dd8d595da4 (patch) | |
| tree | b401c046df4c5ba16e791b104fbc09b05d789ee9 /java/client/src | |
| parent | 3f6c66cb990314c82a4a9ce049c352c66bf77cdf (diff) | |
| download | qpid-python-edbd5f81b7710a73a071b4a264f180dd8d595da4.tar.gz | |
This is a fix for QPID-1760
The AbstractBytesMessage will now use the toString method from AbstractJMSMessage
Also I have modified the toBodyString method in AbstractBytesMessage to use a function that can handle unprintable charachters and print contents upto a maximum of 100 bytes.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@756228 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java/client/src')
4 files changed, 12 insertions, 47 deletions
diff --git a/java/client/src/main/java/org/apache/qpid/client/message/AbstractBytesMessage.java b/java/client/src/main/java/org/apache/qpid/client/message/AbstractBytesMessage.java index c0d51fa726..234212c301 100644 --- a/java/client/src/main/java/org/apache/qpid/client/message/AbstractBytesMessage.java +++ b/java/client/src/main/java/org/apache/qpid/client/message/AbstractBytesMessage.java @@ -31,6 +31,7 @@ import org.apache.mina.common.ByteBuffer; import org.apache.qpid.AMQException; import org.apache.qpid.framing.AMQShortString; import org.apache.qpid.framing.BasicContentHeaderProperties; +import org.apache.qpid.transport.util.Functions; /** * @author Apache Software Foundation @@ -84,53 +85,19 @@ public abstract class AbstractBytesMessage extends AbstractJMSMessage } public String toBodyString() throws JMSException - { + { checkReadable(); try { - return getText(); + return Functions.str(_data.buf(), 100); } - catch (IOException e) + catch (Exception e) { JMSException jmse = new JMSException(e.toString()); jmse.setLinkedException(e); throw jmse; } - } - - /** - * We reset the stream before and after reading the data. This means that toString() will always output - * the entire message and also that the caller can then immediately start reading as if toString() had - * never been called. - * - * @return - * @throws IOException - */ - private String getText() throws IOException - { - // this will use the default platform encoding - if (_data == null) - { - return null; - } - - int pos = _data.position(); - _data.rewind(); - // one byte left is for the end of frame marker - if (_data.remaining() == 0) - { - // this is really redundant since pos must be zero - _data.position(pos); - - return null; - } - else - { - String data = _data.getString(Charset.forName("UTF8").newDecoder()); - _data.position(pos); - - return data; - } + } /** diff --git a/java/client/src/main/java/org/apache/qpid/client/message/AbstractJMSMessage.java b/java/client/src/main/java/org/apache/qpid/client/message/AbstractJMSMessage.java index 0700ce5d23..60c6048e43 100644 --- a/java/client/src/main/java/org/apache/qpid/client/message/AbstractJMSMessage.java +++ b/java/client/src/main/java/org/apache/qpid/client/message/AbstractJMSMessage.java @@ -367,13 +367,14 @@ public abstract class AbstractJMSMessage implements org.apache.qpid.jms.Message try { StringBuffer buf = new StringBuffer("Body:\n"); + buf.append(toBodyString()); buf.append("\nJMS Correlation ID: ").append(getJMSCorrelationID()); buf.append("\nJMS timestamp: ").append(getJMSTimestamp()); buf.append("\nJMS expiration: ").append(getJMSExpiration()); buf.append("\nJMS priority: ").append(getJMSPriority()); buf.append("\nJMS delivery mode: ").append(getJMSDeliveryMode()); - //buf.append("\nJMS reply to: ").append(String.valueOf(getJMSReplyTo())); + buf.append("\nJMS reply to: ").append(getReplyToString()); buf.append("\nJMS Redelivered: ").append(_redelivered); buf.append("\nJMS Destination: ").append(getJMSDestination()); buf.append("\nJMS Type: ").append(getJMSType()); @@ -392,7 +393,7 @@ public abstract class AbstractJMSMessage implements org.apache.qpid.jms.Message while(propertyNames.hasMoreElements()) { String propertyName = (String) propertyNames.nextElement(); - buf.append(propertyName).append(":\t").append(getObjectProperty(propertyName)); + buf.append("\t").append(propertyName).append(" = ").append(getObjectProperty(propertyName)).append("\n"); } } @@ -401,7 +402,9 @@ public abstract class AbstractJMSMessage implements org.apache.qpid.jms.Message } catch (JMSException e) { - return e.toString(); + e.printStackTrace(); + + throw new RuntimeException(e); } } diff --git a/java/client/src/main/java/org/apache/qpid/client/message/JMSBytesMessage.java b/java/client/src/main/java/org/apache/qpid/client/message/JMSBytesMessage.java index cd9d7ccf8b..8681dae2bd 100644 --- a/java/client/src/main/java/org/apache/qpid/client/message/JMSBytesMessage.java +++ b/java/client/src/main/java/org/apache/qpid/client/message/JMSBytesMessage.java @@ -381,10 +381,4 @@ public class JMSBytesMessage extends AbstractBytesMessage implements BytesMessag throw new MessageFormatException("Only primitives plus byte arrays and String are valid types"); } } - - public String toString() - { - return String.valueOf(System.identityHashCode(this)); - } - } diff --git a/java/client/src/main/java/org/apache/qpid/client/message/JMSTextMessage.java b/java/client/src/main/java/org/apache/qpid/client/message/JMSTextMessage.java index c290149cef..f83ae6ace0 100644 --- a/java/client/src/main/java/org/apache/qpid/client/message/JMSTextMessage.java +++ b/java/client/src/main/java/org/apache/qpid/client/message/JMSTextMessage.java @@ -100,6 +100,7 @@ public class JMSTextMessage extends AbstractJMSMessage implements javax.jms.Text if (encoding == null || encoding.equalsIgnoreCase("UTF-8")) { _data = ByteBuffer.wrap(Strings.toUTF8(text)); + setEncoding("UTF-8"); } else { |
