Correctly use the readFully method. Add a utility method to sort absolute order
authorfhanik <fhanik@13f79535-47bb-0310-9956-ffa450edef68>
Thu, 17 Feb 2011 16:23:44 +0000 (16:23 +0000)
committerfhanik <fhanik@13f79535-47bb-0310-9956-ffa450edef68>
Thu, 17 Feb 2011 16:23:44 +0000 (16:23 +0000)
git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@1071677 13f79535-47bb-0310-9956-ffa450edef68

java/org/apache/catalina/tribes/group/AbsoluteOrder.java
java/org/apache/catalina/tribes/group/RpcMessage.java
java/org/apache/catalina/tribes/membership/MemberImpl.java
java/org/apache/catalina/tribes/tipis/AbstractReplicatedMap.java

index e0adb5a..e806a33 100644 (file)
@@ -19,6 +19,7 @@ package org.apache.catalina.tribes.group;
 import java.io.Serializable;
 import java.util.Arrays;
 import java.util.Comparator;
+import java.util.List;
 
 import org.apache.catalina.tribes.Member;
 
@@ -53,10 +54,14 @@ public class AbsoluteOrder {
 
 
     public static void absoluteOrder(Member[] members) {
-        if ( members == null || members.length == 0 ) return;
+        if ( members == null || members.length <= 1 ) return;
         Arrays.sort(members,comp);
     }
     
+    public static void absoluteOrder(List<Member> members) {
+        if ( members == null || members.size() <= 1 ) return;
+        java.util.Collections.sort(members, comp);
+    }
     
     public static class AbsoluteComparator implements Comparator<Member>,
             Serializable {
index 3e48d86..6c6d6f8 100644 (file)
@@ -56,10 +56,10 @@ public class RpcMessage implements Externalizable {
         reply = in.readBoolean();
         int length = in.readInt();
         uuid = new byte[length];
-        in.read(uuid, 0, length);
+        in.readFully(uuid);
         length = in.readInt();
         rpcId = new byte[length];
-        in.read(rpcId, 0, length);
+        in.readFully(rpcId);
         message = (Serializable)in.readObject();
     }
 
@@ -100,10 +100,10 @@ public class RpcMessage implements Externalizable {
             reply = true;
             int length = in.readInt();
             uuid = new byte[length];
-            in.read(uuid, 0, length);
+            in.readFully(uuid);
             length = in.readInt();
             rpcId = new byte[length];
-            in.read(rpcId, 0, length);
+            in.readFully(rpcId);
         }
 
         @Override
index 2212832..1829144 100644 (file)
@@ -622,7 +622,7 @@ public class MemberImpl implements Member, java.io.Externalizable {
     public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
         int length = in.readInt();
         byte[] message = new byte[length];
-        in.read(message);
+        in.readFully(message);
         getMember(message,this);
 
     }
index 28160c5..d1ef0b3 100644 (file)
@@ -1427,7 +1427,7 @@ public abstract class AbstractReplicatedMap extends ConcurrentHashMap implements
             Member[] members = new Member[nodecount];
             for ( int i=0; i<members.length; i++ ) {
                 byte[] d = new byte[in.readInt()];
-                in.read(d);
+                in.readFully(d);
                 if (d.length > 0) members[i] = MemberImpl.getMember(d);
             }
             return members;