From 1d30de9905c3d66174429cd0ab5109e3e8961301 Mon Sep 17 00:00:00 2001 From: Martin Ritchie Date: Mon, 7 May 2007 09:28:15 +0000 Subject: QPID-466 Updated FieldTable to ensure no Decimal value is set that is larger than can be transmitted over AMQP. That is a max scale value of Byte.MAX_VALUE and value of up to Integer.MAX_VALUE. Additional tests to ensure this is the case. git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/branches/M2@535809 13f79535-47bb-0310-9956-ffa450edef68 --- .../src/main/java/org/apache/qpid/framing/FieldTable.java | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'java/common/src') diff --git a/java/common/src/main/java/org/apache/qpid/framing/FieldTable.java b/java/common/src/main/java/org/apache/qpid/framing/FieldTable.java index 5597919024..631a3ae149 100644 --- a/java/common/src/main/java/org/apache/qpid/framing/FieldTable.java +++ b/java/common/src/main/java/org/apache/qpid/framing/FieldTable.java @@ -552,6 +552,16 @@ public class FieldTable public Object setDecimal(AMQShortString string, BigDecimal decimal) { + if (decimal.longValue() > Integer.MAX_VALUE) + { + throw new UnsupportedOperationException("AMQP doesnot support decimals larger than " + Integer.MAX_VALUE); + } + + if (decimal.scale() > Byte.MAX_VALUE) + { + throw new UnsupportedOperationException("AMQP doesnot support decimal scales larger than " + Byte.MAX_VALUE); + } + return setProperty(string, AMQType.DECIMAL.asTypedValue(decimal)); } -- cgit v1.2.1