Merge pull request #2837 from anandolee/master

DefaultValueObjectWriter should populate oneof message field
pull/2887/head
Jie Luo 8 years ago committed by GitHub
commit c12cc3490b
  1. 5
      src/google/protobuf/util/internal/default_value_objectwriter.cc
  2. 16
      src/google/protobuf/util/json_util_test.cc

@ -363,8 +363,9 @@ void DefaultValueObjectWriter::Node::PopulateChildren(
} }
// If oneof_index() != 0, the child field is part of a "oneof", which means // If oneof_index() != 0, the child field is part of a "oneof", which means
// the child field is optional and we shouldn't populate its default value. // the child field is optional and we shouldn't populate its default
if (field.oneof_index() != 0) continue; // primitive value.
if (field.oneof_index() != 0 && kind == PRIMITIVE) continue;
// If the child field is of primitive type, sets its data to the default // If the child field is of primitive type, sets its data to the default
// value of its type. // value of its type.

@ -51,6 +51,7 @@ using proto3::FOO;
using proto3::BAR; using proto3::BAR;
using proto3::TestMessage; using proto3::TestMessage;
using proto3::TestMap; using proto3::TestMap;
using proto3::TestOneof;
using testing::MapIn; using testing::MapIn;
static const char kTypeUrlPrefix[] = "type.googleapis.com"; static const char kTypeUrlPrefix[] = "type.googleapis.com";
@ -232,6 +233,21 @@ TEST_F(JsonUtilTest, ParsePrimitiveMapIn) {
EXPECT_EQ(message.DebugString(), other.DebugString()); EXPECT_EQ(message.DebugString(), other.DebugString());
} }
TEST_F(JsonUtilTest, PrintPrimitiveOneof) {
TestOneof message;
JsonPrintOptions options;
options.always_print_primitive_fields = true;
message.mutable_oneof_message_value();
EXPECT_EQ(
"{\"oneofMessageValue\":{\"value\":0}}",
ToJson(message, options));
message.set_oneof_int32_value(1);
EXPECT_EQ(
"{\"oneofInt32Value\":1}",
ToJson(message, options));
}
TEST_F(JsonUtilTest, TestParseIgnoreUnknownFields) { TEST_F(JsonUtilTest, TestParseIgnoreUnknownFields) {
TestMessage m; TestMessage m;
JsonParseOptions options; JsonParseOptions options;

Loading…
Cancel
Save