From fce8b6b9245ee597a689d6985cd2f41e3bc7b0c1 Mon Sep 17 00:00:00 2001 From: guptasu Date: Thu, 10 Nov 2016 10:23:00 -0800 Subject: [PATCH] Made helper code also consider package name 'proto2' when dealing with MessageOptions. This is done so that the same library can be used irrespective of whether MessageOptions belong to package name 'proto2' or 'google.protobuf' --- .../util/internal/protostream_objectsource.cc | 8 +++++-- .../util/internal/protostream_objectwriter.cc | 8 +++++-- src/google/protobuf/util/internal/utility.cc | 21 +++++++++++++------ 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 150f3cf171..df0dbe1b14 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 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 6c15e86275..c37e671cc2 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 9aab3481f5..0532825532 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 +