diff options
author | Robert Greig <rgreig@apache.org> | 2006-12-15 19:22:20 +0000 |
---|---|---|
committer | Robert Greig <rgreig@apache.org> | 2006-12-15 19:22:20 +0000 |
commit | ad19ba2d70eb9f51b574b0d2be374a0559cc4e17 (patch) | |
tree | 45441432e7db91dbb671495c88163e56e516f639 /java | |
parent | 5f5eea7f3b85ec60403ec8079980f167100b9251 (diff) | |
download | qpid-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.java | 32 |
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); } |