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 | 5c7965cbd575547517c9e132b85b0222e0be5a13 (patch) | |
| tree | 4f1484f125046fdefe24aa0b00ba1a3e72405975 /qpid/java/common/src | |
| parent | a7ce9debf78a446e2a17b7f768ea7d6e824ed1cb (diff) | |
| download | qpid-python-5c7965cbd575547517c9e132b85b0222e0be5a13.tar.gz | |
QPID-199 Patch supplied by Rob Godfrey
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@487627 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java/common/src')
| -rw-r--r-- | qpid/java/common/src/main/java/org/apache/qpid/framing/PropertyFieldTable.java | 32 |
1 files changed, 23 insertions, 9 deletions
diff --git a/qpid/java/common/src/main/java/org/apache/qpid/framing/PropertyFieldTable.java b/qpid/java/common/src/main/java/org/apache/qpid/framing/PropertyFieldTable.java index df4ab1d21f..4dafee910d 100644 --- a/qpid/java/common/src/main/java/org/apache/qpid/framing/PropertyFieldTable.java +++ b/qpid/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); } |
