diff options
author | Max Cai <maxtroy@google.com> | 2014-07-15 15:15:28 +0100 |
---|---|---|
committer | Max Cai <maxtroy@google.com> | 2014-07-15 15:38:04 +0100 |
commit | 11f883e185a2ea6fd6d0b19520e9f0f004e90e5c (patch) | |
tree | 75205c505646c352b6cd21a73869d8f1d0dc3572 /java/src/main | |
parent | daf638399bd42122306786e8062f392ddace4363 (diff) | |
download | external_protobuf-11f883e185a2ea6fd6d0b19520e9f0f004e90e5c.zip external_protobuf-11f883e185a2ea6fd6d0b19520e9f0f004e90e5c.tar.gz external_protobuf-11f883e185a2ea6fd6d0b19520e9f0f004e90e5c.tar.bz2 |
Fix access around unknownFieldData.
Instead of publishing its class I chose to encapsulate the troublesome
references in equals()/hashCode() in the generated code into superclass
methods in ExtendableMessageNano.
Changed a couple of java packages in the test suite to catch this issue
easier in the future.
Change-Id: I43f88411f63bb6f3ffc8d63361f2f77bebf6220a
Diffstat (limited to 'java/src/main')
-rw-r--r-- | java/src/main/java/com/google/protobuf/nano/ExtendableMessageNano.java | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/java/src/main/java/com/google/protobuf/nano/ExtendableMessageNano.java b/java/src/main/java/com/google/protobuf/nano/ExtendableMessageNano.java index a0c2731..5984d35 100644 --- a/java/src/main/java/com/google/protobuf/nano/ExtendableMessageNano.java +++ b/java/src/main/java/com/google/protobuf/nano/ExtendableMessageNano.java @@ -147,4 +147,29 @@ public abstract class ExtendableMessageNano<M extends ExtendableMessageNano<M>> field.addUnknownField(unknownField); return true; } + + /** + * Returns whether the stored unknown field data in this message is equivalent to that in the + * other message. + * + * @param other the other message. + * @return whether the two sets of unknown field data are equal. + */ + protected final boolean unknownFieldDataEquals(M other) { + if (unknownFieldData == null || unknownFieldData.isEmpty()) { + return other.unknownFieldData == null || other.unknownFieldData.isEmpty(); + } else { + return unknownFieldData.equals(other.unknownFieldData); + } + } + + /** + * Computes the hashcode representing the unknown field data stored in this message. + * + * @return the hashcode for the unknown field data. + */ + protected final int unknownFieldDataHashCode() { + return (unknownFieldData == null || unknownFieldData.isEmpty() + ? 0 : unknownFieldData.hashCode()); + } } |