summaryrefslogtreecommitdiff
path: root/java/common/src
diff options
context:
space:
mode:
authorAlex Rudyy <orudyy@apache.org>2013-06-21 17:06:57 +0000
committerAlex Rudyy <orudyy@apache.org>2013-06-21 17:06:57 +0000
commit4b461c11af414b57735df739d96a7d2a78385f99 (patch)
treea168a402c5f8af6104a6e0bf9be6390262572590 /java/common/src
parent5e17dc3e784dc15a9a3ce588317d0fe6ada2e52a (diff)
downloadqpid-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')
-rw-r--r--java/common/src/main/java/org/apache/qpid/AMQException.java6
-rw-r--r--java/common/src/main/java/org/apache/qpid/framing/AMQShortString.java23
-rw-r--r--java/common/src/main/java/org/apache/qpid/properties/ConnectionStartProperties.java9
-rw-r--r--java/common/src/test/java/org/apache/qpid/framing/AMQShortStringTest.java26
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