Author: rajith
Date: Wed Jan  2 08:57:14 2008
New Revision: 608147

URL: http://svn.apache.org/viewvc?rev=608147&view=rev
Log:
I noticed that the asString() method will rebuild the string from scratch each 
time. So I cached the String and the char[] after it builds the first time.

Modified:
    
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/framing/AMQShortString.java

Modified: 
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/framing/AMQShortString.java
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/framing/AMQShortString.java?rev=608147&r1=608146&r2=608147&view=diff
==============================================================================
--- 
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/framing/AMQShortString.java
 (original)
+++ 
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/framing/AMQShortString.java
 Wed Jan  2 08:57:14 2008
@@ -57,6 +57,8 @@
     private int _hashCode;
     private final int _length;
     private static final char[] EMPTY_CHAR_ARRAY = new char[0];
+    private char[] chars;
+    private String str;
 
     public AMQShortString(byte[] data)
     {
@@ -264,12 +266,15 @@
 
     public char[] asChars()
     {
-        final int size = length();
-        final char[] chars = new char[size];
-
-        for (int i = 0; i < size; i++)
+        if (chars == null)
         {
-            chars[i] = (char) _data.get(i);
+            final int size = length();
+            chars = new char[size];
+
+            for (int i = 0; i < size; i++)
+            {
+                chars[i] = (char) _data.get(i);
+            }
         }
 
         return chars;
@@ -277,7 +282,12 @@
 
     public String asString()
     {
-        return new String(asChars());
+        if (str == null)
+        {
+            str = new String(asChars());
+        }
+
+        return str;
     }
 
     public boolean equals(Object o)


Reply via email to