You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by ta...@apache.org on 2012/11/16 22:36:25 UTC

svn commit: r1410580 - in /activemq/trunk/activemq-client: ./ src/main/java/org/apache/activemq/command/ src/main/java/org/apache/activemq/util/

Author: tabish
Date: Fri Nov 16 21:36:24 2012
New Revision: 1410580

URL: http://svn.apache.org/viewvc?rev=1410580&view=rev
Log:
fix for: https://issues.apache.org/jira/browse/AMQ-4180

Modified:
    activemq/trunk/activemq-client/pom.xml
    activemq/trunk/activemq-client/src/main/java/org/apache/activemq/command/ActiveMQMapMessage.java
    activemq/trunk/activemq-client/src/main/java/org/apache/activemq/command/ActiveMQMessage.java
    activemq/trunk/activemq-client/src/main/java/org/apache/activemq/util/MarshallingSupport.java
    activemq/trunk/activemq-client/src/main/java/org/apache/activemq/util/TypeConversionSupport.java

Modified: activemq/trunk/activemq-client/pom.xml
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-client/pom.xml?rev=1410580&r1=1410579&r2=1410580&view=diff
==============================================================================
--- activemq/trunk/activemq-client/pom.xml (original)
+++ activemq/trunk/activemq-client/pom.xml Fri Nov 16 21:36:24 2012
@@ -46,6 +46,11 @@
       <groupId>org.apache.geronimo.specs</groupId>
       <artifactId>geronimo-jms_1.1_spec</artifactId>
     </dependency>
+    <dependency>
+      <groupId>org.fusesource.hawtbuf</groupId>
+      <artifactId>hawtbuf</artifactId>
+      <version>${hawtbuf-version}</version>
+    </dependency>
 
     <!-- would be nice if we could make this dependency optional -->
     <dependency>

Modified: activemq/trunk/activemq-client/src/main/java/org/apache/activemq/command/ActiveMQMapMessage.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-client/src/main/java/org/apache/activemq/command/ActiveMQMapMessage.java?rev=1410580&r1=1410579&r2=1410580&view=diff
==============================================================================
--- activemq/trunk/activemq-client/src/main/java/org/apache/activemq/command/ActiveMQMapMessage.java (original)
+++ activemq/trunk/activemq-client/src/main/java/org/apache/activemq/command/ActiveMQMapMessage.java Fri Nov 16 21:36:24 2012
@@ -41,6 +41,7 @@ import org.apache.activemq.util.ByteSequ
 import org.apache.activemq.util.JMSExceptionSupport;
 import org.apache.activemq.util.MarshallingSupport;
 import org.apache.activemq.wireformat.WireFormat;
+import org.fusesource.hawtbuf.UTF8Buffer;
 
 /**
  * A <CODE>MapMessage</CODE> object is used to send a set of name-value pairs.
@@ -103,12 +104,13 @@ public class ActiveMQMapMessage extends 
     protected transient Map<String, Object> map = new HashMap<String, Object>();
 
     private Object readResolve() throws ObjectStreamException {
-        if(this.map == null) {
+        if (this.map == null) {
             this.map = new HashMap<String, Object>();
         }
         return this;
     }
 
+    @Override
     public Message copy() {
         ActiveMQMapMessage copy = new ActiveMQMapMessage();
         copy(copy);
@@ -121,11 +123,13 @@ public class ActiveMQMapMessage extends 
     }
 
     // We only need to marshal the content if we are hitting the wire.
+    @Override
     public void beforeMarshall(WireFormat wireFormat) throws IOException {
         super.beforeMarshall(wireFormat);
         storeContent();
     }
 
+    @Override
     public void clearMarshalledState() throws JMSException {
         super.clearMarshalledState();
         map.clear();
@@ -175,10 +179,12 @@ public class ActiveMQMapMessage extends 
         }
     }
 
+    @Override
     public byte getDataStructureType() {
         return DATA_STRUCTURE_TYPE;
     }
 
+    @Override
     public String getJMSXMimeType() {
         return "jms/map-message";
     }
@@ -191,6 +197,7 @@ public class ActiveMQMapMessage extends 
      * message body in the same state as an empty body in a newly created
      * message.
      */
+    @Override
     public void clearBody() throws JMSException {
         super.clearBody();
         map.clear();
@@ -205,6 +212,7 @@ public class ActiveMQMapMessage extends 
      *                 some internal error.
      * @throws MessageFormatException if this type conversion is invalid.
      */
+    @Override
     public boolean getBoolean(String name) throws JMSException {
         initializeReading();
         Object value = map.get(name);
@@ -214,6 +222,9 @@ public class ActiveMQMapMessage extends 
         if (value instanceof Boolean) {
             return ((Boolean)value).booleanValue();
         }
+        if (value instanceof UTF8Buffer) {
+            return Boolean.valueOf(value.toString()).booleanValue();
+        }
         if (value instanceof String) {
             return Boolean.valueOf(value.toString()).booleanValue();
         } else {
@@ -230,6 +241,7 @@ public class ActiveMQMapMessage extends 
      *                 some internal error.
      * @throws MessageFormatException if this type conversion is invalid.
      */
+    @Override
     public byte getByte(String name) throws JMSException {
         initializeReading();
         Object value = map.get(name);
@@ -239,6 +251,9 @@ public class ActiveMQMapMessage extends 
         if (value instanceof Byte) {
             return ((Byte)value).byteValue();
         }
+        if (value instanceof UTF8Buffer) {
+            return Byte.valueOf(value.toString()).byteValue();
+        }
         if (value instanceof String) {
             return Byte.valueOf(value.toString()).byteValue();
         } else {
@@ -255,6 +270,7 @@ public class ActiveMQMapMessage extends 
      *                 some internal error.
      * @throws MessageFormatException if this type conversion is invalid.
      */
+    @Override
     public short getShort(String name) throws JMSException {
         initializeReading();
         Object value = map.get(name);
@@ -267,6 +283,9 @@ public class ActiveMQMapMessage extends 
         if (value instanceof Byte) {
             return ((Byte)value).shortValue();
         }
+        if (value instanceof UTF8Buffer) {
+            return Short.valueOf(value.toString()).shortValue();
+        }
         if (value instanceof String) {
             return Short.valueOf(value.toString()).shortValue();
         } else {
@@ -283,6 +302,7 @@ public class ActiveMQMapMessage extends 
      *                 some internal error.
      * @throws MessageFormatException if this type conversion is invalid.
      */
+    @Override
     public char getChar(String name) throws JMSException {
         initializeReading();
         Object value = map.get(name);
@@ -305,6 +325,7 @@ public class ActiveMQMapMessage extends 
      *                 some internal error.
      * @throws MessageFormatException if this type conversion is invalid.
      */
+    @Override
     public int getInt(String name) throws JMSException {
         initializeReading();
         Object value = map.get(name);
@@ -320,6 +341,9 @@ public class ActiveMQMapMessage extends 
         if (value instanceof Byte) {
             return ((Byte)value).intValue();
         }
+        if (value instanceof UTF8Buffer) {
+            return Integer.valueOf(value.toString()).intValue();
+        }
         if (value instanceof String) {
             return Integer.valueOf(value.toString()).intValue();
         } else {
@@ -336,6 +360,7 @@ public class ActiveMQMapMessage extends 
      *                 some internal error.
      * @throws MessageFormatException if this type conversion is invalid.
      */
+    @Override
     public long getLong(String name) throws JMSException {
         initializeReading();
         Object value = map.get(name);
@@ -354,6 +379,9 @@ public class ActiveMQMapMessage extends 
         if (value instanceof Byte) {
             return ((Byte)value).longValue();
         }
+        if (value instanceof UTF8Buffer) {
+            return Long.valueOf(value.toString()).longValue();
+        }
         if (value instanceof String) {
             return Long.valueOf(value.toString()).longValue();
         } else {
@@ -370,6 +398,7 @@ public class ActiveMQMapMessage extends 
      *                 some internal error.
      * @throws MessageFormatException if this type conversion is invalid.
      */
+    @Override
     public float getFloat(String name) throws JMSException {
         initializeReading();
         Object value = map.get(name);
@@ -379,6 +408,9 @@ public class ActiveMQMapMessage extends 
         if (value instanceof Float) {
             return ((Float)value).floatValue();
         }
+        if (value instanceof UTF8Buffer) {
+            return Float.valueOf(value.toString()).floatValue();
+        }
         if (value instanceof String) {
             return Float.valueOf(value.toString()).floatValue();
         } else {
@@ -395,6 +427,7 @@ public class ActiveMQMapMessage extends 
      *                 some internal error.
      * @throws MessageFormatException if this type conversion is invalid.
      */
+    @Override
     public double getDouble(String name) throws JMSException {
         initializeReading();
         Object value = map.get(name);
@@ -407,6 +440,9 @@ public class ActiveMQMapMessage extends 
         if (value instanceof Float) {
             return ((Float)value).floatValue();
         }
+        if (value instanceof UTF8Buffer) {
+            return Float.valueOf(value.toString()).floatValue();
+        }
         if (value instanceof String) {
             return Float.valueOf(value.toString()).floatValue();
         } else {
@@ -424,6 +460,7 @@ public class ActiveMQMapMessage extends 
      *                 some internal error.
      * @throws MessageFormatException if this type conversion is invalid.
      */
+    @Override
     public String getString(String name) throws JMSException {
         initializeReading();
         Object value = map.get(name);
@@ -447,6 +484,7 @@ public class ActiveMQMapMessage extends 
      *                 some internal error.
      * @throws MessageFormatException if this type conversion is invalid.
      */
+    @Override
     public byte[] getBytes(String name) throws JMSException {
         initializeReading();
         Object value = map.get(name);
@@ -476,9 +514,15 @@ public class ActiveMQMapMessage extends 
      * @throws JMSException if the JMS provider fails to read the message due to
      *                 some internal error.
      */
+    @Override
     public Object getObject(String name) throws JMSException {
         initializeReading();
-        return map.get(name);
+        Object result = map.get(name);
+        if (result instanceof UTF8Buffer) {
+            result = result.toString();
+        }
+
+        return result;
     }
 
     /**
@@ -488,6 +532,7 @@ public class ActiveMQMapMessage extends 
      * @return an enumeration of all the names in this <CODE>MapMessage</CODE>
      * @throws JMSException
      */
+    @Override
     public Enumeration<String> getMapNames() throws JMSException {
         initializeReading();
         return Collections.enumeration(map.keySet());
@@ -514,6 +559,7 @@ public class ActiveMQMapMessage extends 
      *                 empty string.
      * @throws MessageNotWriteableException if the message is in read-only mode.
      */
+    @Override
     public void setBoolean(String name, boolean value) throws JMSException {
         initializeWriting();
         put(name, value ? Boolean.TRUE : Boolean.FALSE);
@@ -530,6 +576,7 @@ public class ActiveMQMapMessage extends 
      *                 empty string.
      * @throws MessageNotWriteableException if the message is in read-only mode.
      */
+    @Override
     public void setByte(String name, byte value) throws JMSException {
         initializeWriting();
         put(name, Byte.valueOf(value));
@@ -546,6 +593,7 @@ public class ActiveMQMapMessage extends 
      *                 empty string.
      * @throws MessageNotWriteableException if the message is in read-only mode.
      */
+    @Override
     public void setShort(String name, short value) throws JMSException {
         initializeWriting();
         put(name, Short.valueOf(value));
@@ -562,6 +610,7 @@ public class ActiveMQMapMessage extends 
      *                 empty string.
      * @throws MessageNotWriteableException if the message is in read-only mode.
      */
+    @Override
     public void setChar(String name, char value) throws JMSException {
         initializeWriting();
         put(name, Character.valueOf(value));
@@ -578,6 +627,7 @@ public class ActiveMQMapMessage extends 
      *                 empty string.
      * @throws MessageNotWriteableException if the message is in read-only mode.
      */
+    @Override
     public void setInt(String name, int value) throws JMSException {
         initializeWriting();
         put(name, Integer.valueOf(value));
@@ -594,6 +644,7 @@ public class ActiveMQMapMessage extends 
      *                 empty string.
      * @throws MessageNotWriteableException if the message is in read-only mode.
      */
+    @Override
     public void setLong(String name, long value) throws JMSException {
         initializeWriting();
         put(name, Long.valueOf(value));
@@ -610,6 +661,7 @@ public class ActiveMQMapMessage extends 
      *                 empty string.
      * @throws MessageNotWriteableException if the message is in read-only mode.
      */
+    @Override
     public void setFloat(String name, float value) throws JMSException {
         initializeWriting();
         put(name, new Float(value));
@@ -626,6 +678,7 @@ public class ActiveMQMapMessage extends 
      *                 empty string.
      * @throws MessageNotWriteableException if the message is in read-only mode.
      */
+    @Override
     public void setDouble(String name, double value) throws JMSException {
         initializeWriting();
         put(name, new Double(value));
@@ -642,6 +695,7 @@ public class ActiveMQMapMessage extends 
      *                 empty string.
      * @throws MessageNotWriteableException if the message is in read-only mode.
      */
+    @Override
     public void setString(String name, String value) throws JMSException {
         initializeWriting();
         put(name, value);
@@ -660,6 +714,7 @@ public class ActiveMQMapMessage extends 
      *                 empty string.
      * @throws MessageNotWriteableException if the message is in read-only mode.
      */
+    @Override
     public void setBytes(String name, byte[] value) throws JMSException {
         initializeWriting();
         if (value != null) {
@@ -683,6 +738,7 @@ public class ActiveMQMapMessage extends 
      *                 empty string.
      * @throws MessageNotWriteableException if the message is in read-only mode.
      */
+    @Override
     public void setBytes(String name, byte[] value, int offset, int length) throws JMSException {
         initializeWriting();
         byte[] data = new byte[length];
@@ -706,6 +762,7 @@ public class ActiveMQMapMessage extends 
      * @throws MessageFormatException if the object is invalid.
      * @throws MessageNotWriteableException if the message is in read-only mode.
      */
+    @Override
     public void setObject(String name, Object value) throws JMSException {
         initializeWriting();
         if (value != null) {
@@ -728,6 +785,7 @@ public class ActiveMQMapMessage extends 
      * @throws JMSException if the JMS provider fails to determine if the item
      *                 exists due to some internal error.
      */
+    @Override
     public boolean itemExists(String name) throws JMSException {
         initializeReading();
         return map.containsKey(name);
@@ -748,6 +806,7 @@ public class ActiveMQMapMessage extends 
         super.compress();
     }
 
+    @Override
     public String toString() {
         return super.toString() + " ActiveMQMapMessage{ " + "theTable = " + map + " }";
     }

Modified: activemq/trunk/activemq-client/src/main/java/org/apache/activemq/command/ActiveMQMessage.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-client/src/main/java/org/apache/activemq/command/ActiveMQMessage.java?rev=1410580&r1=1410579&r2=1410580&view=diff
==============================================================================
--- activemq/trunk/activemq-client/src/main/java/org/apache/activemq/command/ActiveMQMessage.java (original)
+++ activemq/trunk/activemq-client/src/main/java/org/apache/activemq/command/ActiveMQMessage.java Fri Nov 16 21:36:24 2012
@@ -50,6 +50,7 @@ public class ActiveMQMessage extends Mes
 
     protected transient Callback acknowledgeCallback;
 
+    @Override
     public byte getDataStructureType() {
         return DATA_STRUCTURE_TYPE;
     }
@@ -91,6 +92,7 @@ public class ActiveMQMessage extends Mes
         return thisMsg != null && oMsg != null && oMsg.equals(thisMsg);
     }
 
+    @Override
     public void acknowledge() throws JMSException {
         if (acknowledgeCallback != null) {
             try {
@@ -109,6 +111,7 @@ public class ActiveMQMessage extends Mes
         readOnlyBody = false;
     }
 
+    @Override
     public String getJMSMessageID() {
         MessageId messageId = this.getMessageId();
         if (messageId == null) {
@@ -124,6 +127,7 @@ public class ActiveMQMessage extends Mes
      * @param value
      * @throws JMSException
      */
+    @Override
     public void setJMSMessageID(String value) throws JMSException {
         if (value != null) {
             try {
@@ -160,30 +164,37 @@ public class ActiveMQMessage extends Mes
         }
     }
 
+    @Override
     public long getJMSTimestamp() {
         return this.getTimestamp();
     }
 
+    @Override
     public void setJMSTimestamp(long timestamp) {
         this.setTimestamp(timestamp);
     }
 
+    @Override
     public String getJMSCorrelationID() {
         return this.getCorrelationId();
     }
 
+    @Override
     public void setJMSCorrelationID(String correlationId) {
         this.setCorrelationId(correlationId);
     }
 
+    @Override
     public byte[] getJMSCorrelationIDAsBytes() throws JMSException {
         return encodeString(this.getCorrelationId());
     }
 
+    @Override
     public void setJMSCorrelationIDAsBytes(byte[] correlationId) throws JMSException {
         this.setCorrelationId(decodeString(correlationId));
     }
 
+    @Override
     public String getJMSXMimeType() {
         return "jms/message";
     }
@@ -210,58 +221,72 @@ public class ActiveMQMessage extends Mes
         }
     }
 
+    @Override
     public Destination getJMSReplyTo() {
         return this.getReplyTo();
     }
 
+    @Override
     public void setJMSReplyTo(Destination destination) throws JMSException {
         this.setReplyTo(ActiveMQDestination.transform(destination));
     }
 
+    @Override
     public Destination getJMSDestination() {
         return this.getDestination();
     }
 
+    @Override
     public void setJMSDestination(Destination destination) throws JMSException {
         this.setDestination(ActiveMQDestination.transform(destination));
     }
 
+    @Override
     public int getJMSDeliveryMode() {
         return this.isPersistent() ? DeliveryMode.PERSISTENT : DeliveryMode.NON_PERSISTENT;
     }
 
+    @Override
     public void setJMSDeliveryMode(int mode) {
         this.setPersistent(mode == DeliveryMode.PERSISTENT);
     }
 
+    @Override
     public boolean getJMSRedelivered() {
         return this.isRedelivered();
     }
 
+    @Override
     public void setJMSRedelivered(boolean redelivered) {
         this.setRedelivered(redelivered);
     }
 
+    @Override
     public String getJMSType() {
         return this.getType();
     }
 
+    @Override
     public void setJMSType(String type) {
         this.setType(type);
     }
 
+    @Override
     public long getJMSExpiration() {
         return this.getExpiration();
     }
 
+    @Override
     public void setJMSExpiration(long expiration) {
         this.setExpiration(expiration);
     }
 
+    @Override
     public int getJMSPriority() {
         return this.getPriority();
     }
 
+    @Override
     public void setJMSPriority(int priority) {
         this.setPriority((byte) priority);
     }
@@ -272,6 +297,7 @@ public class ActiveMQMessage extends Mes
         readOnlyProperties = false;
     }
 
+    @Override
     public boolean propertyExists(String name) throws JMSException {
         try {
             return (this.getProperties().containsKey(name) || getObjectProperty(name)!= null);
@@ -280,6 +306,7 @@ public class ActiveMQMessage extends Mes
         }
     }
 
+    @Override
     @SuppressWarnings("rawtypes")
     public Enumeration getPropertyNames() throws JMSException {
         try {
@@ -312,6 +339,7 @@ public class ActiveMQMessage extends Mes
 
     static {
         JMS_PROPERTY_SETERS.put("JMSXDeliveryCount", new PropertySetter() {
+            @Override
             public void set(Message message, Object value) throws MessageFormatException {
                 Integer rc = (Integer) TypeConversionSupport.convert(value, Integer.class);
                 if (rc == null) {
@@ -321,6 +349,7 @@ public class ActiveMQMessage extends Mes
             }
         });
         JMS_PROPERTY_SETERS.put("JMSXGroupID", new PropertySetter() {
+            @Override
             public void set(Message message, Object value) throws MessageFormatException {
                 String rc = (String) TypeConversionSupport.convert(value, String.class);
                 if (rc == null) {
@@ -330,6 +359,7 @@ public class ActiveMQMessage extends Mes
             }
         });
         JMS_PROPERTY_SETERS.put("JMSXGroupSeq", new PropertySetter() {
+            @Override
             public void set(Message message, Object value) throws MessageFormatException {
                 Integer rc = (Integer) TypeConversionSupport.convert(value, Integer.class);
                 if (rc == null) {
@@ -339,6 +369,7 @@ public class ActiveMQMessage extends Mes
             }
         });
         JMS_PROPERTY_SETERS.put("JMSCorrelationID", new PropertySetter() {
+            @Override
             public void set(Message message, Object value) throws MessageFormatException {
                 String rc = (String) TypeConversionSupport.convert(value, String.class);
                 if (rc == null) {
@@ -348,6 +379,7 @@ public class ActiveMQMessage extends Mes
             }
         });
         JMS_PROPERTY_SETERS.put("JMSDeliveryMode", new PropertySetter() {
+            @Override
             public void set(Message message, Object value) throws MessageFormatException {
                 Integer rc = (Integer) TypeConversionSupport.convert(value, Integer.class);
                 if (rc == null) {
@@ -363,6 +395,7 @@ public class ActiveMQMessage extends Mes
             }
         });
         JMS_PROPERTY_SETERS.put("JMSExpiration", new PropertySetter() {
+            @Override
             public void set(Message message, Object value) throws MessageFormatException {
                 Long rc = (Long) TypeConversionSupport.convert(value, Long.class);
                 if (rc == null) {
@@ -372,6 +405,7 @@ public class ActiveMQMessage extends Mes
             }
         });
         JMS_PROPERTY_SETERS.put("JMSPriority", new PropertySetter() {
+            @Override
             public void set(Message message, Object value) throws MessageFormatException {
                 Integer rc = (Integer) TypeConversionSupport.convert(value, Integer.class);
                 if (rc == null) {
@@ -381,6 +415,7 @@ public class ActiveMQMessage extends Mes
             }
         });
         JMS_PROPERTY_SETERS.put("JMSRedelivered", new PropertySetter() {
+            @Override
             public void set(Message message, Object value) throws MessageFormatException {
                 Boolean rc = (Boolean) TypeConversionSupport.convert(value, Boolean.class);
                 if (rc == null) {
@@ -390,6 +425,7 @@ public class ActiveMQMessage extends Mes
             }
         });
         JMS_PROPERTY_SETERS.put("JMSReplyTo", new PropertySetter() {
+            @Override
             public void set(Message message, Object value) throws MessageFormatException {
                 ActiveMQDestination rc = (ActiveMQDestination) TypeConversionSupport.convert(value, ActiveMQDestination.class);
                 if (rc == null) {
@@ -399,6 +435,7 @@ public class ActiveMQMessage extends Mes
             }
         });
         JMS_PROPERTY_SETERS.put("JMSTimestamp", new PropertySetter() {
+            @Override
             public void set(Message message, Object value) throws MessageFormatException {
                 Long rc = (Long) TypeConversionSupport.convert(value, Long.class);
                 if (rc == null) {
@@ -408,6 +445,7 @@ public class ActiveMQMessage extends Mes
             }
         });
         JMS_PROPERTY_SETERS.put("JMSType", new PropertySetter() {
+            @Override
             public void set(Message message, Object value) throws MessageFormatException {
                 String rc = (String) TypeConversionSupport.convert(value, String.class);
                 if (rc == null) {
@@ -418,6 +456,7 @@ public class ActiveMQMessage extends Mes
         });
     }
 
+    @Override
     public void setObjectProperty(String name, Object value) throws JMSException {
         setObjectProperty(name, value, true);
     }
@@ -450,7 +489,7 @@ public class ActiveMQMessage extends Mes
         for (Map.Entry<String, ?> entry : properties.entrySet()) {
             // Lets use the object property method as we may contain standard
             // extension headers like JMSXGroupID
-            setObjectProperty((String) entry.getKey(), entry.getValue());
+            setObjectProperty(entry.getKey(), entry.getValue());
         }
     }
 
@@ -473,7 +512,7 @@ public class ActiveMQMessage extends Mes
         }
     }
 
-    protected void  checkValidScheduled(String name, Object value) throws MessageFormatException {
+    protected void checkValidScheduled(String name, Object value) throws MessageFormatException {
         if (AMQ_SCHEDULED_DELAY.equals(name) || AMQ_SCHEDULED_PERIOD.equals(name) || AMQ_SCHEDULED_REPEAT.equals(name)) {
             if (value instanceof Long == false && value instanceof Integer == false) {
                 throw new MessageFormatException(name + " should be long or int value");
@@ -484,7 +523,7 @@ public class ActiveMQMessage extends Mes
         }
     }
 
-    protected Object  convertScheduled(String name, Object value) throws MessageFormatException {
+    protected Object convertScheduled(String name, Object value) throws MessageFormatException {
         Object result = value;
         if (AMQ_SCHEDULED_DELAY.equals(name)){
             result = TypeConversionSupport.convert(value, Long.class);
@@ -498,6 +537,7 @@ public class ActiveMQMessage extends Mes
         return result;
     }
 
+    @Override
     public Object getObjectProperty(String name) throws JMSException {
         if (name == null) {
             throw new NullPointerException("Property name cannot be null");
@@ -508,6 +548,7 @@ public class ActiveMQMessage extends Mes
         return expression.evaluate(this);
     }
 
+    @Override
     public boolean getBooleanProperty(String name) throws JMSException {
         Object value = getObjectProperty(name);
         if (value == null) {
@@ -520,6 +561,7 @@ public class ActiveMQMessage extends Mes
         return rc.booleanValue();
     }
 
+    @Override
     public byte getByteProperty(String name) throws JMSException {
         Object value = getObjectProperty(name);
         if (value == null) {
@@ -532,6 +574,7 @@ public class ActiveMQMessage extends Mes
         return rc.byteValue();
     }
 
+    @Override
     public short getShortProperty(String name) throws JMSException {
         Object value = getObjectProperty(name);
         if (value == null) {
@@ -544,6 +587,7 @@ public class ActiveMQMessage extends Mes
         return rc.shortValue();
     }
 
+    @Override
     public int getIntProperty(String name) throws JMSException {
         Object value = getObjectProperty(name);
         if (value == null) {
@@ -556,6 +600,7 @@ public class ActiveMQMessage extends Mes
         return rc.intValue();
     }
 
+    @Override
     public long getLongProperty(String name) throws JMSException {
         Object value = getObjectProperty(name);
         if (value == null) {
@@ -568,6 +613,7 @@ public class ActiveMQMessage extends Mes
         return rc.longValue();
     }
 
+    @Override
     public float getFloatProperty(String name) throws JMSException {
         Object value = getObjectProperty(name);
         if (value == null) {
@@ -580,6 +626,7 @@ public class ActiveMQMessage extends Mes
         return rc.floatValue();
     }
 
+    @Override
     public double getDoubleProperty(String name) throws JMSException {
         Object value = getObjectProperty(name);
         if (value == null) {
@@ -592,6 +639,7 @@ public class ActiveMQMessage extends Mes
         return rc.doubleValue();
     }
 
+    @Override
     public String getStringProperty(String name) throws JMSException {
         Object value = null;
         if (name.equals("JMSXUserID")) {
@@ -612,6 +660,7 @@ public class ActiveMQMessage extends Mes
         return rc;
     }
 
+    @Override
     public void setBooleanProperty(String name, boolean value) throws JMSException {
         setBooleanProperty(name, value, true);
     }
@@ -620,30 +669,37 @@ public class ActiveMQMessage extends Mes
         setObjectProperty(name, Boolean.valueOf(value), checkReadOnly);
     }
 
+    @Override
     public void setByteProperty(String name, byte value) throws JMSException {
         setObjectProperty(name, Byte.valueOf(value));
     }
 
+    @Override
     public void setShortProperty(String name, short value) throws JMSException {
         setObjectProperty(name, Short.valueOf(value));
     }
 
+    @Override
     public void setIntProperty(String name, int value) throws JMSException {
         setObjectProperty(name, Integer.valueOf(value));
     }
 
+    @Override
     public void setLongProperty(String name, long value) throws JMSException {
         setObjectProperty(name, Long.valueOf(value));
     }
 
+    @Override
     public void setFloatProperty(String name, float value) throws JMSException {
         setObjectProperty(name, new Float(value));
     }
 
+    @Override
     public void setDoubleProperty(String name, double value) throws JMSException {
         setObjectProperty(name, new Double(value));
     }
 
+    @Override
     public void setStringProperty(String name, String value) throws JMSException {
         setObjectProperty(name, value);
     }
@@ -676,6 +732,7 @@ public class ActiveMQMessage extends Mes
         setReadOnlyProperties(true);
     }
 
+    @Override
     public Response visit(CommandVisitor visitor) throws Exception {
         return visitor.processMessage(this);
     }

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=1410580&r1=1410579&r2=1410580&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 Fri Nov 16 21:36:24 2012
@@ -29,11 +29,13 @@ import java.util.List;
 import java.util.Map;
 import java.util.Properties;
 
+import org.fusesource.hawtbuf.UTF8Buffer;
+
 /**
  * The fixed version of the UTF8 encoding function. Some older JVM's UTF8
  * encoding function breaks when handling large strings.
- * 
- * 
+ *
+ *
  */
 public final class MarshallingSupport {
 
@@ -54,7 +56,7 @@ public final class MarshallingSupport {
 
     private MarshallingSupport() {
     }
-    
+
     public static void marshalPrimitiveMap(Map map, DataOutputStream out) throws IOException {
         if (map == null) {
             out.writeInt(-1);
@@ -100,7 +102,7 @@ public final class MarshallingSupport {
     public static void marshalPrimitiveList(List list, DataOutputStream out) throws IOException {
         out.writeInt(list.size());
         for (Iterator iter = list.iterator(); iter.hasNext();) {
-            Object element = (Object)iter.next();
+            Object element = iter.next();
             marshalPrimitive(out, element);
         }
     }
@@ -180,12 +182,28 @@ public final class MarshallingSupport {
             value = new byte[in.readInt()];
             in.readFully((byte[])value);
             break;
-        case STRING_TYPE:
-            value = in.readUTF();
+        case STRING_TYPE: {
+            if (true) {
+                int length = in.readUnsignedShort();
+                byte data[] = new byte[length];
+                in.readFully(data);
+                value = new UTF8Buffer(data);
+            } else {
+                value = in.readUTF();
+            }
             break;
-        case BIG_STRING_TYPE:
-            value = readUTF8(in);
+        }
+        case BIG_STRING_TYPE: {
+            if (true) {
+                int length = in.readInt();
+                byte data[] = new byte[length];
+                in.readFully(data);
+                value = new UTF8Buffer(data);
+            } else {
+                value = readUTF8(in);
+            }
             break;
+        }
         case MAP_TYPE:
             value = unmarshalPrimitiveMap(in);
             break;

Modified: activemq/trunk/activemq-client/src/main/java/org/apache/activemq/util/TypeConversionSupport.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-client/src/main/java/org/apache/activemq/util/TypeConversionSupport.java?rev=1410580&r1=1410579&r2=1410580&view=diff
==============================================================================
--- activemq/trunk/activemq-client/src/main/java/org/apache/activemq/util/TypeConversionSupport.java (original)
+++ activemq/trunk/activemq-client/src/main/java/org/apache/activemq/util/TypeConversionSupport.java Fri Nov 16 21:36:24 2012
@@ -23,6 +23,7 @@ import java.util.HashMap;
 import java.util.Map;
 
 import org.apache.activemq.command.ActiveMQDestination;
+import org.fusesource.hawtbuf.UTF8Buffer;
 
 /**
  * Type conversion support for ActiveMQ.
@@ -37,21 +38,23 @@ public final class TypeConversionSupport
     };
 
     private static class ConversionKey {
-        final Class from;
-        final Class to;
+        final Class<?> from;
+        final Class<?> to;
         final int hashCode;
 
-        public ConversionKey(Class from, Class to) {
+        public ConversionKey(Class<?> from, Class<?> to) {
             this.from = from;
             this.to = to;
             this.hashCode = from.hashCode() ^ (to.hashCode() << 1);
         }
 
+        @Override
         public boolean equals(Object o) {
             ConversionKey x = (ConversionKey)o;
             return x.from == from && x.to == to;
         }
 
+        @Override
         public int hashCode() {
             return hashCode;
         }
@@ -64,6 +67,7 @@ public final class TypeConversionSupport
     private static final Map<ConversionKey, Converter> CONVERSION_MAP = new HashMap<ConversionKey, Converter>();
     static {
         Converter toStringConverter = new Converter() {
+            @Override
             public Object convert(Object value) {
                 return value.toString();
             }
@@ -75,44 +79,53 @@ public final class TypeConversionSupport
         CONVERSION_MAP.put(new ConversionKey(Long.class, String.class), toStringConverter);
         CONVERSION_MAP.put(new ConversionKey(Float.class, String.class), toStringConverter);
         CONVERSION_MAP.put(new ConversionKey(Double.class, String.class), toStringConverter);
+        CONVERSION_MAP.put(new ConversionKey(UTF8Buffer.class, String.class), toStringConverter);
 
         CONVERSION_MAP.put(new ConversionKey(String.class, Boolean.class), new Converter() {
+            @Override
             public Object convert(Object value) {
                 return Boolean.valueOf((String)value);
             }
         });
         CONVERSION_MAP.put(new ConversionKey(String.class, Byte.class), new Converter() {
+            @Override
             public Object convert(Object value) {
                 return Byte.valueOf((String)value);
             }
         });
         CONVERSION_MAP.put(new ConversionKey(String.class, Short.class), new Converter() {
+            @Override
             public Object convert(Object value) {
                 return Short.valueOf((String)value);
             }
         });
         CONVERSION_MAP.put(new ConversionKey(String.class, Integer.class), new Converter() {
+            @Override
             public Object convert(Object value) {
                 return Integer.valueOf((String)value);
             }
         });
         CONVERSION_MAP.put(new ConversionKey(String.class, Long.class), new Converter() {
+            @Override
             public Object convert(Object value) {
                 return Long.valueOf((String)value);
             }
         });
         CONVERSION_MAP.put(new ConversionKey(String.class, Float.class), new Converter() {
+            @Override
             public Object convert(Object value) {
                 return Float.valueOf((String)value);
             }
         });
         CONVERSION_MAP.put(new ConversionKey(String.class, Double.class), new Converter() {
+            @Override
             public Object convert(Object value) {
                 return Double.valueOf((String)value);
             }
         });
 
         Converter longConverter = new Converter() {
+            @Override
             public Object convert(Object value) {
                 return Long.valueOf(((Number)value).longValue());
             }
@@ -121,12 +134,14 @@ public final class TypeConversionSupport
         CONVERSION_MAP.put(new ConversionKey(Short.class, Long.class), longConverter);
         CONVERSION_MAP.put(new ConversionKey(Integer.class, Long.class), longConverter);
         CONVERSION_MAP.put(new ConversionKey(Date.class, Long.class), new Converter() {
+            @Override
             public Object convert(Object value) {
                 return Long.valueOf(((Date)value).getTime());
             }
         });
 
         Converter intConverter = new Converter() {
+            @Override
             public Object convert(Object value) {
                 return Integer.valueOf(((Number)value).intValue());
             }
@@ -135,22 +150,26 @@ public final class TypeConversionSupport
         CONVERSION_MAP.put(new ConversionKey(Short.class, Integer.class), intConverter);
 
         CONVERSION_MAP.put(new ConversionKey(Byte.class, Short.class), new Converter() {
+            @Override
             public Object convert(Object value) {
                 return Short.valueOf(((Number)value).shortValue());
             }
         });
 
         CONVERSION_MAP.put(new ConversionKey(Float.class, Double.class), new Converter() {
+            @Override
             public Object convert(Object value) {
                 return new Double(((Number)value).doubleValue());
             }
         });
         CONVERSION_MAP.put(new ConversionKey(String.class, ActiveMQDestination.class), new Converter() {
+            @Override
             public Object convert(Object value) {
                 return ActiveMQDestination.createDestination((String)value, ActiveMQDestination.QUEUE_TYPE);
             }
         });
         CONVERSION_MAP.put(new ConversionKey(String.class, URI.class), new Converter() {
+            @Override
             public Object convert(Object value) {
                 String text = value.toString();
                 try {
@@ -165,7 +184,7 @@ public final class TypeConversionSupport
     private TypeConversionSupport() {
     }
 
-    public static Object convert(Object value, Class to) {
+    public static Object convert(Object value, Class<?> to) {
         if (value == null) {
             // lets avoid NullPointerException when converting to boolean for null values
             if (boolean.class.isAssignableFrom(to)) {
@@ -189,7 +208,7 @@ public final class TypeConversionSupport
         }
     }
 
-    public static Converter lookupConverter(Class from, Class to) {
+    public static Converter lookupConverter(Class<?> from, Class<?> to) {
         // use wrapped type for primitives
         if (from.isPrimitive()) {
             from = convertPrimitiveTypeToWrapperType(from);
@@ -230,5 +249,4 @@ public final class TypeConversionSupport
         }
         return rc;
     }
-
 }