diff options
author | Robert Godfrey <rgodfrey@apache.org> | 2008-06-19 09:01:59 +0000 |
---|---|---|
committer | Robert Godfrey <rgodfrey@apache.org> | 2008-06-19 09:01:59 +0000 |
commit | 913d1a55b290f9a8295d5e8396c696d3cee73bc0 (patch) | |
tree | a4dde827f8b825e6535197cc12df347bd8d064db /java/common/src/main/java/org/apache/qpid/framing/AMQShortString.java | |
parent | f3fc904893b8c345b1aa358816d118fd0aad7d8b (diff) | |
download | qpid-python-913d1a55b290f9a8295d5e8396c696d3cee73bc0.tar.gz |
QPID-950 : Broker refactoring, copied / merged from branch
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@669431 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java/common/src/main/java/org/apache/qpid/framing/AMQShortString.java')
-rw-r--r-- | java/common/src/main/java/org/apache/qpid/framing/AMQShortString.java | 56 |
1 files changed, 52 insertions, 4 deletions
diff --git a/java/common/src/main/java/org/apache/qpid/framing/AMQShortString.java b/java/common/src/main/java/org/apache/qpid/framing/AMQShortString.java index a747aaeda7..2a248bf703 100644 --- a/java/common/src/main/java/org/apache/qpid/framing/AMQShortString.java +++ b/java/common/src/main/java/org/apache/qpid/framing/AMQShortString.java @@ -224,7 +224,6 @@ public final class AMQShortString implements CharSequence, Comparable<AMQShortSt } } - /** * Get the length of the short string * @return length of the underlying byte array @@ -464,13 +463,49 @@ public final class AMQShortString implements CharSequence, Comparable<AMQShortSt return false; } - if ((_hashCode != 0) && (otherString._hashCode != 0) && (_hashCode != otherString._hashCode)) + final int hashCode = _hashCode; + + final int otherHashCode = otherString._hashCode; + + if ((hashCode != 0) && (otherHashCode != 0) && (hashCode != otherHashCode)) + { + return false; + } + + final int length = _length; + + if(length != otherString._length) { return false; } - return (_offset == 0 && otherString._offset == 0 && _length == _data.length && otherString._length == otherString._data.length && Arrays.equals(_data,otherString._data)) - || Arrays.equals(getBytes(),otherString.getBytes()); + + final byte[] data = _data; + + final byte[] otherData = otherString._data; + + final int offset = _offset; + + final int otherOffset = otherString._offset; + + if(offset == 0 && otherOffset == 0 && length == data.length && length == otherData.length) + { + return Arrays.equals(data, otherData); + } + else + { + int thisIdx = offset; + int otherIdx = otherOffset; + for(int i = length; i-- != 0; ) + { + if(!(data[thisIdx++] == otherData[otherIdx++])) + { + return false; + } + } + } + + return true; } @@ -718,4 +753,17 @@ public final class AMQShortString implements CharSequence, Comparable<AMQShortSt return false; //To change body of created methods use File | Settings | File Templates. } + + public static void main(String args[]) + { + AMQShortString s = new AMQShortString("a.b.c.d.e.f.g.h.i.j.k"); + AMQShortString s2 = s.substring(2, 7); + + AMQShortStringTokenizer t = s2.tokenize((byte) '.'); + while(t.hasMoreTokens()) + { + System.err.println(t.nextToken()); + } + } + } |