@ -31,6 +31,7 @@
package com.google.protobuf.nano ;
import java.io.IOException ;
import java.util.Arrays ;
/ * *
* Abstract interface implemented by Protocol Message objects .
@ -150,6 +151,31 @@ public abstract class MessageNano {
}
}
/ * *
* Compares two { @code MessageNano } s and returns true if the message ' s are the same class and
* have serialized form equality ( i . e . all of the field values are the same ) .
* /
public static final boolean messageNanoEquals ( MessageNano a , MessageNano b ) {
if ( a = = b ) {
return true ;
}
if ( a = = null | | b = = null ) {
return false ;
}
if ( a . getClass ( ) ! = b . getClass ( ) ) {
return false ;
}
final int serializedSize = a . getSerializedSize ( ) ;
if ( b . getSerializedSize ( ) ! = serializedSize ) {
return false ;
}
final byte [ ] aByteArray = new byte [ serializedSize ] ;
final byte [ ] bByteArray = new byte [ serializedSize ] ;
toByteArray ( a , aByteArray , 0 , serializedSize ) ;
toByteArray ( b , bByteArray , 0 , serializedSize ) ;
return Arrays . equals ( aByteArray , bByteArray ) ;
}
/ * *
* Returns a string that is ( mostly ) compatible with ProtoBuffer ' s TextFormat . Note that groups
* ( which are deprecated ) are not serialized with the correct field name .