If I had to guess it's so that Maps and Lists in the body/headers of Message objects get decoded as Strings and not UTF8Buffers.
On Thu, Dec 20, 2012 at 12:33 PM, Timothy Bish <[email protected]> wrote: > > Dejan, what is the problem that you are fixing here? It looks like with > this change there no reason to even have the UTF8Buffer as every string > is now going to be unpacked from raw UTF8 > > On Thu, 2012-12-20 at 16:53 +0000, [email protected] wrote: > > Author: dejanb > > Date: Thu Dec 20 16:53:33 2012 > > New Revision: 1424587 > > > > URL: http://svn.apache.org/viewvc?rev=1424587&view=rev > > Log: > > https://issues.apache.org/jira/browse/AMQ-4180 - force unmarshaling for > maps and lists > > > Modified: > > > activemq/trunk/activemq-client/src/main/java/org/apache/activemq/util/MarshallingSupport.java > > > > Modified: > activemq/trunk/activemq-client/src/main/java/org/apache/activemq/util/MarshallingSupport.java > > URL: > http://svn.apache.org/viewvc/activemq/trunk/activemq-client/src/main/java/org/apache/activemq/util/MarshallingSupport.java?rev=1424587&r1=1424586&r2=1424587&view=diff > > > ============================================================================== > > --- > activemq/trunk/activemq-client/src/main/java/org/apache/activemq/util/MarshallingSupport.java > (original) > > +++ > activemq/trunk/activemq-client/src/main/java/org/apache/activemq/util/MarshallingSupport.java > Thu Dec 20 16:53:33 2012 > > @@ -92,7 +92,7 @@ public final class MarshallingSupport { > > Map<String, Object> rc = new HashMap<String, Object>(size); > > for (int i = 0; i < size; i++) { > > String name = in.readUTF(); > > - rc.put(name, unmarshalPrimitive(in)); > > + rc.put(name, unmarshalPrimitive(in, true)); > > } > > return rc; > > } > > @@ -110,7 +110,7 @@ public final class MarshallingSupport { > > int size = in.readInt(); > > List<Object> answer = new ArrayList<Object>(size); > > while (size-- > 0) { > > - answer.add(unmarshalPrimitive(in)); > > + answer.add(unmarshalPrimitive(in, true)); > > } > > return answer; > > } > > @@ -152,6 +152,10 @@ public final class MarshallingSupport { > > } > > > > public static Object unmarshalPrimitive(DataInputStream in) throws > IOException { > > + return unmarshalPrimitive(in, false); > > + } > > + > > + public static Object unmarshalPrimitive(DataInputStream in, boolean > force) throws IOException { > > Object value = null; > > byte type = in.readByte(); > > switch (type) { > > @@ -183,18 +187,19 @@ public final class MarshallingSupport { > > value = new byte[in.readInt()]; > > in.readFully((byte[])value); > > break; > > - case STRING_TYPE: { > > - int length = in.readUnsignedShort(); > > - byte data[] = new byte[length]; > > - in.readFully(data); > > - value = new UTF8Buffer(data); > > + case STRING_TYPE: > > + if (force) { > > + value = in.readUTF(); > > + } else { > > + value = readUTF(in, in.readUnsignedShort()); > > + } > > break; > > - } > > case BIG_STRING_TYPE: { > > - int length = in.readInt(); > > - byte data[] = new byte[length]; > > - in.readFully(data); > > - value = new UTF8Buffer(data); > > + if (force) { > > + value = readUTF8(in); > > + } else { > > + value = readUTF(in, in.readInt()); > > + } > > break; > > } > > case MAP_TYPE: > > @@ -212,6 +217,12 @@ public final class MarshallingSupport { > > return value; > > } > > > > + public static UTF8Buffer readUTF(DataInputStream in, int length) > throws IOException { > > + byte data[] = new byte[length]; > > + in.readFully(data); > > + return new UTF8Buffer(data); > > + } > > + > > public static void marshalNull(DataOutputStream out) throws > IOException { > > out.writeByte(NULL); > > } > > > > > > -- > Tim Bish > Sr Software Engineer | RedHat Inc. > [email protected] | www.fusesource.com | www.redhat.com > skype: tabish121 | twitter: @tabish121 > blog: http://timbish.blogspot.com/ > > -- ** *Hiram Chirino* *Engineering | Red Hat, Inc.* *[email protected] <[email protected]> | fusesource.com | redhat.com* *skype: hiramchirino | twitter: @hiramchirino<http://twitter.com/hiramchirino> * *blog: Hiram Chirino's Bit Mojo <http://hiramchirino.com/blog/>*
