summaryrefslogtreecommitdiff
path: root/java
diff options
context:
space:
mode:
authorRobert Greig <rgreig@apache.org>2006-12-15 19:22:20 +0000
committerRobert Greig <rgreig@apache.org>2006-12-15 19:22:20 +0000
commitad19ba2d70eb9f51b574b0d2be374a0559cc4e17 (patch)
tree45441432e7db91dbb671495c88163e56e516f639 /java
parent5f5eea7f3b85ec60403ec8079980f167100b9251 (diff)
downloadqpid-python-ad19ba2d70eb9f51b574b0d2be374a0559cc4e17.tar.gz
QPID-199 Patch supplied by Rob Godfrey
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@487627 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java')
-rw-r--r--java/common/src/main/java/org/apache/qpid/framing/PropertyFieldTable.java32
1 files changed, 23 insertions, 9 deletions
diff --git a/java/common/src/main/java/org/apache/qpid/framing/PropertyFieldTable.java b/java/common/src/main/java/org/apache/qpid/framing/PropertyFieldTable.java
index df4ab1d21f..4dafee910d 100644
--- a/java/common/src/main/java/org/apache/qpid/framing/PropertyFieldTable.java
+++ b/java/common/src/main/java/org/apache/qpid/framing/PropertyFieldTable.java
@@ -57,10 +57,6 @@ public class PropertyFieldTable implements FieldTable
private static final String BYTES_CLOSE_XML = "</" + BYTES + ">";
private static final String BYTES_OPEN_XML_START = "<" + BYTES;
- private LinkedHashMap<String, Object> _properties;
- private LinkedHashMap<String, Prefix> _propertyNamesTypeMap;
- private long _encodedSize = 0;
-
public static enum Prefix
{
//AMQP FieldTable Wire Types
@@ -93,7 +89,7 @@ public class PropertyFieldTable implements FieldTable
Prefix(char identifier)
{
_identifier = identifier;
- _reverseTypeMap.put(identifier, this);
+ //_reverseTypeMap.put(identifier, this);
}
public final char identifier()
@@ -105,6 +101,18 @@ public class PropertyFieldTable implements FieldTable
public static Map<Character, Prefix> _reverseTypeMap = new HashMap<Character, Prefix>();
+ static
+ {
+ for (Prefix p : Prefix.values())
+ {
+ _reverseTypeMap.put(p.identifier(), p);
+ }
+ }
+
+ private LinkedHashMap<String, Object> _properties;
+ private LinkedHashMap<String, Prefix> _propertyNamesTypeMap;
+ private long _encodedSize = 0;
+
public PropertyFieldTable()
{
super();
@@ -1159,8 +1167,16 @@ public class PropertyFieldTable implements FieldTable
byte iType = buffer.get();
- Prefix type = _reverseTypeMap.get((char) iType);
+ Character mapKey = new Character((char) iType);
+ Prefix type = _reverseTypeMap.get(mapKey);
+ if (type == null)
+ {
+ String msg = "Field '" + key + "' - unsupported field table type: " + type + ".";
+ //some extra trace information...
+ msg += " (" + iType + "), length=" + length + ", sizeRead=" + sizeRead + ", sizeRemaining=" + sizeRemaining;
+ throw new AMQFrameDecodingException(msg);
+ }
Object value;
switch (type)
@@ -1204,9 +1220,7 @@ public class PropertyFieldTable implements FieldTable
value = EncodingUtils.readBytes(buffer);
break;
default:
- String msg = "Field '" + key + "' - unsupported field table type: " + type + ".";
- //some extra trace information...
- msg += " (" + iType + "), length=" + length + ", sizeRead=" + sizeRead + ", sizeRemaining=" + sizeRemaining;
+ String msg = "Internal error, the following type identifier is not handled: " + type;
throw new AMQFrameDecodingException(msg);
}