diff options
author | Alex Rudyy <orudyy@apache.org> | 2013-06-21 17:06:57 +0000 |
---|---|---|
committer | Alex Rudyy <orudyy@apache.org> | 2013-06-21 17:06:57 +0000 |
commit | 4b461c11af414b57735df739d96a7d2a78385f99 (patch) | |
tree | a168a402c5f8af6104a6e0bf9be6390262572590 /java/common/src | |
parent | 5e17dc3e784dc15a9a3ce588317d0fe6ada2e52a (diff) | |
download | qpid-python-4b461c11af414b57735df739d96a7d2a78385f99.tar.gz |
QPID-4943: Introduce a feature for 0-8/0-9/0-9-1 protocols to close a connection on receiving a mandatory unroutable message in a transacted session
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@1495511 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java/common/src')
4 files changed, 57 insertions, 7 deletions
diff --git a/java/common/src/main/java/org/apache/qpid/AMQException.java b/java/common/src/main/java/org/apache/qpid/AMQException.java index 2d54e35191..40ecc3a946 100644 --- a/java/common/src/main/java/org/apache/qpid/AMQException.java +++ b/java/common/src/main/java/org/apache/qpid/AMQException.java @@ -149,10 +149,6 @@ public class AMQException extends Exception public AMQShortString getMessageAsShortString() { String message = getMessage(); - if (message != null && message.length() > AMQShortString.MAX_LENGTH) - { - message = message.substring(0, AMQShortString.MAX_LENGTH - 3) + "..."; - } - return new AMQShortString(message); + return AMQShortString.valueOf(message, true, true); } } diff --git a/java/common/src/main/java/org/apache/qpid/framing/AMQShortString.java b/java/common/src/main/java/org/apache/qpid/framing/AMQShortString.java index b577c916c6..4adc59b158 100644 --- a/java/common/src/main/java/org/apache/qpid/framing/AMQShortString.java +++ b/java/common/src/main/java/org/apache/qpid/framing/AMQShortString.java @@ -794,9 +794,30 @@ public final class AMQShortString implements CharSequence, Comparable<AMQShortSt return false; //To change body of created methods use File | Settings | File Templates. } + public static AMQShortString valueOf(Object obj, boolean truncate, boolean nullAsEmptyString) + { + if (obj == null) + { + if (nullAsEmptyString) + { + return EMPTY_STRING; + } + return null; + } + else + { + String value = String.valueOf(obj); + if (truncate && value.length() > AMQShortString.MAX_LENGTH) + { + value = value.substring(0, AMQShortString.MAX_LENGTH - 3) + "..."; + } + return valueOf(value); + } + } + public static AMQShortString valueOf(Object obj) { - return obj == null ? null : AMQShortString.valueOf(String.valueOf(obj)); + return valueOf(obj, false, false); } public static AMQShortString valueOf(String obj) diff --git a/java/common/src/main/java/org/apache/qpid/properties/ConnectionStartProperties.java b/java/common/src/main/java/org/apache/qpid/properties/ConnectionStartProperties.java index 59a1b6c5b0..6f9d872f98 100644 --- a/java/common/src/main/java/org/apache/qpid/properties/ConnectionStartProperties.java +++ b/java/common/src/main/java/org/apache/qpid/properties/ConnectionStartProperties.java @@ -26,13 +26,20 @@ import java.lang.management.RuntimeMXBean; import org.apache.qpid.transport.util.Logger; /** - * Constants for the various properties 0-10 clients can + * Constants for the various properties clients can * set values for during the ConnectionStartOk reply. */ public class ConnectionStartProperties { private static final Logger LOGGER = Logger.get(ConnectionStartProperties.class); + /** + * Used for 0-8/0-9/0-9-1 connections to choose to close + * the connection when a transactional session receives a 'mandatory' message which + * can't be routed rather than returning the message. + */ + public static final String QPID_CLOSE_WHEN_NO_ROUTE = "qpid.close_when_no_route"; + public static final String CLIENT_ID_0_10 = "clientName"; public static final String CLIENT_ID_0_8 = "instance"; diff --git a/java/common/src/test/java/org/apache/qpid/framing/AMQShortStringTest.java b/java/common/src/test/java/org/apache/qpid/framing/AMQShortStringTest.java index 0f8fbf0685..61ac04213e 100644 --- a/java/common/src/test/java/org/apache/qpid/framing/AMQShortStringTest.java +++ b/java/common/src/test/java/org/apache/qpid/framing/AMQShortStringTest.java @@ -300,6 +300,32 @@ public class AMQShortStringTest extends TestCase assertEquals("join result differs from expected", expected.toString(), result.asString()); } + public void testValueOf() + { + String string = buildString('a', 255); + AMQShortString shortString = AMQShortString.valueOf(string, true, true); + assertEquals("Unexpected string from valueOf", string, shortString.asString()); + } + + public void testValueOfTruncated() + { + String string = buildString('a', 256); + AMQShortString shortString = AMQShortString.valueOf(string, true, true); + assertEquals("Unexpected truncated string from valueOf", string.substring(0, AMQShortString.MAX_LENGTH -3) + "...", shortString.asString()); + } + + public void testValueOfNulAsEmptyString() + { + AMQShortString shortString = AMQShortString.valueOf(null, true, true); + assertEquals("Unexpected empty string from valueOf", AMQShortString.EMPTY_STRING, shortString); + } + + public void testValueOfNullAsNull() + { + AMQShortString shortString = AMQShortString.valueOf(null, true, false); + assertEquals("Unexpected null string from valueOf", null, shortString); + } + /** * A helper method to generate a string with given length containing given * character |