summaryrefslogtreecommitdiff
path: root/java/common/src/main/java/org/apache/qpid/framing/AMQShortString.java
diff options
context:
space:
mode:
authorRobert Godfrey <rgodfrey@apache.org>2008-06-19 09:01:59 +0000
committerRobert Godfrey <rgodfrey@apache.org>2008-06-19 09:01:59 +0000
commit913d1a55b290f9a8295d5e8396c696d3cee73bc0 (patch)
treea4dde827f8b825e6535197cc12df347bd8d064db /java/common/src/main/java/org/apache/qpid/framing/AMQShortString.java
parentf3fc904893b8c345b1aa358816d118fd0aad7d8b (diff)
downloadqpid-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.java56
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());
+ }
+ }
+
}