summaryrefslogtreecommitdiff
path: root/qpid/java/common
diff options
context:
space:
mode:
authorRajith Muditha Attapattu <rajith@apache.org>2008-01-02 16:57:14 +0000
committerRajith Muditha Attapattu <rajith@apache.org>2008-01-02 16:57:14 +0000
commit0ab60835f9bfe3dbf05c5f389ede43fbb6f861f4 (patch)
treee6f597d85d195210f29edb69c43a7cb6dd587578 /qpid/java/common
parente336559c82f22ecd0a013b8ea787bb4946ab2fdc (diff)
downloadqpid-python-0ab60835f9bfe3dbf05c5f389ede43fbb6f861f4.tar.gz
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.
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@608147 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java/common')
-rw-r--r--qpid/java/common/src/main/java/org/apache/qpid/framing/AMQShortString.java22
1 files changed, 16 insertions, 6 deletions
diff --git a/qpid/java/common/src/main/java/org/apache/qpid/framing/AMQShortString.java b/qpid/java/common/src/main/java/org/apache/qpid/framing/AMQShortString.java
index 20db907739..ee63f2c83d 100644
--- a/qpid/java/common/src/main/java/org/apache/qpid/framing/AMQShortString.java
+++ b/qpid/java/common/src/main/java/org/apache/qpid/framing/AMQShortString.java
@@ -57,6 +57,8 @@ public final class AMQShortString implements CharSequence, Comparable<AMQShortSt
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 final class AMQShortString implements CharSequence, Comparable<AMQShortSt
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 final class AMQShortString implements CharSequence, Comparable<AMQShortSt
public String asString()
{
- return new String(asChars());
+ if (str == null)
+ {
+ str = new String(asChars());
+ }
+
+ return str;
}
public boolean equals(Object o)