You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by ch...@apache.org on 2009/03/26 19:10:23 UTC

svn commit: r758781 - in /activemq/activemq-protobuf/trunk/activemq-protobuf/src/main/java/org/apache/activemq/protobuf: Buffer.java UTF8Buffer.java

Author: chirino
Date: Thu Mar 26 18:10:01 2009
New Revision: 758781

URL: http://svn.apache.org/viewvc?rev=758781&view=rev
Log:
Made the Buffer objects comparable

Modified:
    activemq/activemq-protobuf/trunk/activemq-protobuf/src/main/java/org/apache/activemq/protobuf/Buffer.java
    activemq/activemq-protobuf/trunk/activemq-protobuf/src/main/java/org/apache/activemq/protobuf/UTF8Buffer.java

Modified: activemq/activemq-protobuf/trunk/activemq-protobuf/src/main/java/org/apache/activemq/protobuf/Buffer.java
URL: http://svn.apache.org/viewvc/activemq/activemq-protobuf/trunk/activemq-protobuf/src/main/java/org/apache/activemq/protobuf/Buffer.java?rev=758781&r1=758780&r2=758781&view=diff
==============================================================================
--- activemq/activemq-protobuf/trunk/activemq-protobuf/src/main/java/org/apache/activemq/protobuf/Buffer.java (original)
+++ activemq/activemq-protobuf/trunk/activemq-protobuf/src/main/java/org/apache/activemq/protobuf/Buffer.java Thu Mar 26 18:10:01 2009
@@ -19,7 +19,7 @@
 
 import java.util.List;
 
-public class Buffer {
+public class Buffer implements Comparable<Buffer> {
 
     final public byte[] data;
     final public int offset;
@@ -177,5 +177,32 @@
     public String toStringUtf8() {
         return UTF8Buffer.decode(this);
     }
+
+    public int compareTo(Buffer o) {
+        int minLength = Math.min(length, o.length);
+        if (offset == o.offset) {
+            int pos = offset;
+            int limit = minLength + offset;
+            while (pos < limit) {
+                byte b1 = data[pos];
+                byte b2 = o.data[pos];
+                if (b1 != b2) {
+                    return b1 - b2;
+                }
+                pos++;
+            }
+        } else {
+            int offset1 = offset;
+            int offset2 = o.offset;
+            while ( minLength-- != 0) {
+                byte b1 = data[offset1++];
+                byte b2 = o.data[offset2++];
+                if (b1 != b2) {
+                    return b1 - b2;
+                }
+            }
+        }
+        return length - o.length;
+    }
         
 }

Modified: activemq/activemq-protobuf/trunk/activemq-protobuf/src/main/java/org/apache/activemq/protobuf/UTF8Buffer.java
URL: http://svn.apache.org/viewvc/activemq/activemq-protobuf/trunk/activemq-protobuf/src/main/java/org/apache/activemq/protobuf/UTF8Buffer.java?rev=758781&r1=758780&r2=758781&view=diff
==============================================================================
--- activemq/activemq-protobuf/trunk/activemq-protobuf/src/main/java/org/apache/activemq/protobuf/UTF8Buffer.java (original)
+++ activemq/activemq-protobuf/trunk/activemq-protobuf/src/main/java/org/apache/activemq/protobuf/UTF8Buffer.java Thu Mar 26 18:10:01 2009
@@ -5,6 +5,7 @@
 final public class UTF8Buffer extends Buffer {
 
     int hashCode;
+    String value; 
     
     public UTF8Buffer(Buffer other) {
         super(other);
@@ -31,7 +32,16 @@
 
     public String toString()
     {
-        return decode(this);
+        if( value==null ) {
+            value = decode(this); 
+        }
+        return value;
+    }
+    
+    @Override
+    public int compareTo(Buffer other) {
+        // Do a char comparison.. not a byte for byte comparison.
+        return toString().compareTo(other.toString());
     }
 
     @Override