summaryrefslogtreecommitdiff
path: root/qpid/java/common/src
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
commit5c7965cbd575547517c9e132b85b0222e0be5a13 (patch)
tree4f1484f125046fdefe24aa0b00ba1a3e72405975 /qpid/java/common/src
parenta7ce9debf78a446e2a17b7f768ea7d6e824ed1cb (diff)
downloadqpid-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.java32
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);
}