diff options
author | Feng Xiao <xiaofeng@google.com> | 2016-11-11 12:31:52 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-11-11 12:31:52 -0800 |
commit | 8a4b2c573a8f452cdb4e8e04841bfa5f21738e12 (patch) | |
tree | c9e6a7c9ca729bffa24511417421447ebc4486a7 | |
parent | df56736db9b00a6539d19724b89467b167003cb0 (diff) | |
parent | fce8b6b9245ee597a689d6985cd2f41e3bc7b0c1 (diff) |
Merge pull request #2353 from guptasu/master
MessageOptions should handle both proto2 and google.protobuf package names.
3 files changed, 27 insertions, 10 deletions
diff --git a/src/google/protobuf/util/internal/protostream_objectsource.cc b/src/google/protobuf/util/internal/protostream_objectsource.cc index 150f3cf1..df0dbe1b 100644 --- a/src/google/protobuf/util/internal/protostream_objectsource.cc +++ b/src/google/protobuf/util/internal/protostream_objectsource.cc @@ -1024,8 +1024,11 @@ bool ProtoStreamObjectSource::IsMap( // TODO(xiaofeng): Unify option names. return field.kind() == google::protobuf::Field_Kind_TYPE_MESSAGE && (GetBoolOptionOrDefault(field_type->options(), - "google.protobuf.MessageOptions.map_entry", false) || - GetBoolOptionOrDefault(field_type->options(), "map_entry", false)); + "google.protobuf.MessageOptions.map_entry", + false) || + GetBoolOptionOrDefault(field_type->options(), "map_entry", false) || + GetBoolOptionOrDefault(field_type->options(), + "proto2.MessageOptions.map_entry", false)); } std::pair<int64, int32> ProtoStreamObjectSource::ReadSecondsAndNanos( @@ -1119,3 +1122,4 @@ const string FormatNanos(uint32 nanos) { } // namespace util } // namespace protobuf } // namespace google + diff --git a/src/google/protobuf/util/internal/protostream_objectwriter.cc b/src/google/protobuf/util/internal/protostream_objectwriter.cc index 6c15e862..c37e671c 100644 --- a/src/google/protobuf/util/internal/protostream_objectwriter.cc +++ b/src/google/protobuf/util/internal/protostream_objectwriter.cc @@ -1240,8 +1240,11 @@ bool ProtoStreamObjectWriter::IsMap(const google::protobuf::Field& field) { // TODO(xiaofeng): Unify option names. return GetBoolOptionOrDefault(field_type->options(), - "google.protobuf.MessageOptions.map_entry", false) || - GetBoolOptionOrDefault(field_type->options(), "map_entry", false); + "google.protobuf.MessageOptions.map_entry", + false) || + GetBoolOptionOrDefault(field_type->options(), "map_entry", false) || + GetBoolOptionOrDefault(field_type->options(), + "proto2.MessageOptions.map_entry", false); } bool ProtoStreamObjectWriter::IsAny(const google::protobuf::Field& field) { @@ -1266,3 +1269,4 @@ bool ProtoStreamObjectWriter::IsStructListValue( } // namespace util } // namespace protobuf } // namespace google + diff --git a/src/google/protobuf/util/internal/utility.cc b/src/google/protobuf/util/internal/utility.cc index 9aab3481..05328255 100644 --- a/src/google/protobuf/util/internal/utility.cc +++ b/src/google/protobuf/util/internal/utility.cc @@ -356,15 +356,23 @@ bool IsValidBoolString(const string& bool_string) { bool IsMap(const google::protobuf::Field& field, const google::protobuf::Type& type) { - return (field.cardinality() == - google::protobuf::Field_Cardinality_CARDINALITY_REPEATED && - GetBoolOptionOrDefault(type.options(), - "google.protobuf.MessageOptions.map_entry", false)); + return ( + field.cardinality() == + google::protobuf::Field_Cardinality_CARDINALITY_REPEATED && + (GetBoolOptionOrDefault( + type.options(), "google.protobuf.MessageOptions.map_entry", false) || + GetBoolOptionOrDefault(type.options(), "proto2.MessageOptions.map_entry", + false))); } bool IsMessageSetWireFormat(const google::protobuf::Type& type) { - return GetBoolOptionOrDefault( - type.options(), "google.protobuf.MessageOptions.message_set_wire_format", false); + return ( + GetBoolOptionOrDefault( + type.options(), + "google.protobuf.MessageOptions.message_set_wire_format", false) || + GetBoolOptionOrDefault(type.options(), + "proto2.MessageOptions.message_set_wire_format", + false)); } string DoubleAsString(double value) { @@ -404,3 +412,4 @@ bool SafeStrToFloat(StringPiece str, float* value) { } // namespace util } // namespace protobuf } // namespace google + |