Merge "Fix access around unknownFieldData."

pull/91/head
Max Cai 11 years ago committed by Gerrit Code Review
commit 7a83d3482a
  1. 25
      java/src/main/java/com/google/protobuf/nano/ExtendableMessageNano.java
  2. 8
      java/src/test/java/com/google/protobuf/NanoTest.java
  3. 9
      src/google/protobuf/compiler/javanano/javanano_message.cc
  4. 2
      src/google/protobuf/unittest_extension_nano.proto
  5. 2
      src/google/protobuf/unittest_import_nano.proto

@ -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());
}
}

@ -35,9 +35,6 @@ import com.google.protobuf.nano.EnumClassNanoMultiple;
import com.google.protobuf.nano.EnumClassNanos;
import com.google.protobuf.nano.EnumValidity;
import com.google.protobuf.nano.EnumValidityAccessors;
import com.google.protobuf.nano.Extensions;
import com.google.protobuf.nano.Extensions.AnotherMessage;
import com.google.protobuf.nano.Extensions.MessageWithGroup;
import com.google.protobuf.nano.FileScopeEnumMultiple;
import com.google.protobuf.nano.FileScopeEnumRefNano;
import com.google.protobuf.nano.InternalNano;
@ -57,11 +54,14 @@ import com.google.protobuf.nano.PackedExtensions;
import com.google.protobuf.nano.RepeatedExtensions;
import com.google.protobuf.nano.SingularExtensions;
import com.google.protobuf.nano.TestRepeatedMergeNano;
import com.google.protobuf.nano.UnittestImportNano;
import com.google.protobuf.nano.UnittestMultipleNano;
import com.google.protobuf.nano.UnittestRecursiveNano.RecursiveMessageNano;
import com.google.protobuf.nano.UnittestSimpleNano.SimpleMessageNano;
import com.google.protobuf.nano.UnittestSingleNano.SingleMessageNano;
import com.google.protobuf.nano.testext.Extensions;
import com.google.protobuf.nano.testext.Extensions.AnotherMessage;
import com.google.protobuf.nano.testext.Extensions.MessageWithGroup;
import com.google.protobuf.nano.testimport.UnittestImportNano;
import junit.framework.TestCase;

@ -501,11 +501,7 @@ void MessageGenerator::GenerateEquals(io::Printer* printer) {
if (params_.store_unknown_fields()) {
printer->Print(
"if (unknownFieldData == null || unknownFieldData.isEmpty()) {\n"
" return other.unknownFieldData == null || other.unknownFieldData.isEmpty();"
"} else {\n"
" return unknownFieldData.equals(other.unknownFieldData);\n"
"}\n");
"return unknownFieldDataEquals(other);\n");
} else {
printer->Print(
"return true;\n");
@ -534,8 +530,7 @@ void MessageGenerator::GenerateHashCode(io::Printer* printer) {
if (params_.store_unknown_fields()) {
printer->Print(
"result = 31 * result + (unknownFieldData == null || unknownFieldData.isEmpty()\n"
" ? 0 : unknownFieldData.hashCode());\n");
"result = 31 * result + unknownFieldDataHashCode();\n");
}
printer->Print("return result;\n");

@ -1,7 +1,7 @@
syntax = "proto2";
option java_outer_classname = "Extensions";
option java_package = "com.google.protobuf.nano";
option java_package = "com.google.protobuf.nano.testext";
message ExtendableMessage {
optional int32 field = 1;

@ -35,7 +35,7 @@
package protobuf_unittest_import;
// java_package and java_outer_classname are specified on the command line.
//option java_package = "com.google.protobuf.nano";
//option java_package = "com.google.protobuf.nano.testimport";
//option java_outer_classname = "UnittestImportNano";
message ImportMessageNano {

Loading…
Cancel
Save