Index: third_party/protobuf/src/google/protobuf/compiler/java/java_map_field.cc |
diff --git a/third_party/protobuf/src/google/protobuf/compiler/java/java_map_field.cc b/third_party/protobuf/src/google/protobuf/compiler/java/java_map_field.cc |
index 2a551ca47eb8300a7b8ea8db5e1212441de50369..3fe68ae3d5e0043f096aca975c68ed70f7257e68 100644 |
--- a/third_party/protobuf/src/google/protobuf/compiler/java/java_map_field.cc |
+++ b/third_party/protobuf/src/google/protobuf/compiler/java/java_map_field.cc |
@@ -80,7 +80,7 @@ void SetMessageVariables(const FieldDescriptor* descriptor, |
int builderBitIndex, |
const FieldGeneratorInfo* info, |
Context* context, |
- map<string, string>* variables) { |
+ std::map<string, string>* variables) { |
SetCommonFieldVariables(descriptor, info, variables); |
ClassNameResolver* name_resolver = context->GetNameResolver(); |
@@ -88,11 +88,22 @@ void SetMessageVariables(const FieldDescriptor* descriptor, |
name_resolver->GetImmutableClassName(descriptor->message_type()); |
const FieldDescriptor* key = KeyField(descriptor); |
const FieldDescriptor* value = ValueField(descriptor); |
+ const JavaType keyJavaType = GetJavaType(key); |
+ const JavaType valueJavaType = GetJavaType(value); |
+ |
(*variables)["key_type"] = TypeName(key, name_resolver, false); |
- (*variables)["boxed_key_type"] = TypeName(key, name_resolver, true); |
+ string boxed_key_type = TypeName(key, name_resolver, true); |
+ (*variables)["boxed_key_type"] = boxed_key_type; |
+ // Used for calling the serialization function. |
+ (*variables)["short_key_type"] = |
+ boxed_key_type.substr(boxed_key_type.rfind('.') + 1); |
(*variables)["key_wire_type"] = WireType(key); |
(*variables)["key_default_value"] = DefaultValue(key, true, name_resolver); |
- if (GetJavaType(value) == JAVATYPE_ENUM) { |
+ (*variables)["key_null_check"] = IsReferenceType(keyJavaType) ? |
+ "if (key == null) { throw new java.lang.NullPointerException(); }" : ""; |
+ (*variables)["value_null_check"] = IsReferenceType(valueJavaType) ? |
+ "if (value == null) { throw new java.lang.NullPointerException(); }" : ""; |
+ if (valueJavaType == JAVATYPE_ENUM) { |
// We store enums as Integers internally. |
(*variables)["value_type"] = "int"; |
(*variables)["boxed_value_type"] = "java.lang.Integer"; |
@@ -135,12 +146,12 @@ void SetMessageVariables(const FieldDescriptor* descriptor, |
(*variables)["default_entry"] = (*variables)["capitalized_name"] + |
"DefaultEntryHolder.defaultEntry"; |
- (*variables)["lite"] = ""; |
(*variables)["map_field_parameter"] = (*variables)["default_entry"]; |
(*variables)["descriptor"] = |
name_resolver->GetImmutableClassName(descriptor->file()) + |
".internal_" + UniqueFileScopeIdentifier(descriptor->message_type()) + |
"_descriptor, "; |
+ (*variables)["ver"] = GeneratedCodeVersionSuffix(); |
} |
} // namespace |
@@ -169,25 +180,95 @@ int ImmutableMapFieldGenerator::GetNumBitsForBuilder() const { |
void ImmutableMapFieldGenerator:: |
GenerateInterfaceMembers(io::Printer* printer) const { |
+ WriteFieldDocComment(printer, descriptor_); |
+ printer->Print( |
+ variables_, |
+ "$deprecation$int get$capitalized_name$Count();\n"); |
+ WriteFieldDocComment(printer, descriptor_); |
+ printer->Print( |
+ variables_, |
+ "$deprecation$boolean contains$capitalized_name$(\n" |
+ " $key_type$ key);\n"); |
if (GetJavaType(ValueField(descriptor_)) == JAVATYPE_ENUM) { |
+ printer->Print( |
+ variables_, |
+ "/**\n" |
+ " * Use {@link #get$capitalized_name$Map()} instead.\n" |
+ " */\n" |
+ "@java.lang.Deprecated\n" |
+ "java.util.Map<$boxed_key_type$, $value_enum_type$>\n" |
+ "get$capitalized_name$();\n"); |
WriteFieldDocComment(printer, descriptor_); |
printer->Print( |
variables_, |
"$deprecation$java.util.Map<$boxed_key_type$, $value_enum_type$>\n" |
- "get$capitalized_name$();\n"); |
+ "get$capitalized_name$Map();\n"); |
+ WriteFieldDocComment(printer, descriptor_); |
+ printer->Print( |
+ variables_, |
+ "$deprecation$$value_enum_type$ get$capitalized_name$OrDefault(\n" |
+ " $key_type$ key,\n" |
+ " $value_enum_type$ defaultValue);\n"); |
+ WriteFieldDocComment(printer, descriptor_); |
+ printer->Print( |
+ variables_, |
+ "$deprecation$$value_enum_type$ get$capitalized_name$OrThrow(\n" |
+ " $key_type$ key);\n"); |
if (SupportUnknownEnumValue(descriptor_->file())) { |
+ printer->Print( |
+ variables_, |
+ "/**\n" |
+ " * Use {@link #get$capitalized_name$ValueMap()} instead.\n" |
+ " */\n" |
+ "@java.lang.Deprecated\n" |
+ "java.util.Map<$type_parameters$>\n" |
+ "get$capitalized_name$Value();\n"); |
WriteFieldDocComment(printer, descriptor_); |
printer->Print( |
variables_, |
"$deprecation$java.util.Map<$type_parameters$>\n" |
- "get$capitalized_name$Value();\n"); |
+ "get$capitalized_name$ValueMap();\n"); |
+ WriteFieldDocComment(printer, descriptor_); |
+ printer->Print( |
+ variables_, |
+ "$deprecation$\n" |
+ "$value_type$ get$capitalized_name$ValueOrDefault(\n" |
+ " $key_type$ key,\n" |
+ " $value_type$ defaultValue);\n"); |
+ WriteFieldDocComment(printer, descriptor_); |
+ printer->Print( |
+ variables_, |
+ "$deprecation$\n" |
+ "$value_type$ get$capitalized_name$ValueOrThrow(\n" |
+ " $key_type$ key);\n"); |
} |
} else { |
+ printer->Print( |
+ variables_, |
+ "/**\n" |
+ " * Use {@link #get$capitalized_name$Map()} instead.\n" |
+ " */\n" |
+ "@java.lang.Deprecated\n" |
+ "java.util.Map<$type_parameters$>\n" |
+ "get$capitalized_name$();\n"); |
WriteFieldDocComment(printer, descriptor_); |
printer->Print( |
variables_, |
"$deprecation$java.util.Map<$type_parameters$>\n" |
- "get$capitalized_name$();\n"); |
+ "get$capitalized_name$Map();\n"); |
+ WriteFieldDocComment(printer, descriptor_); |
+ printer->Print( |
+ variables_, |
+ "$deprecation$\n" |
+ "$value_type$ get$capitalized_name$OrDefault(\n" |
+ " $key_type$ key,\n" |
+ " $value_type$ defaultValue);\n"); |
+ WriteFieldDocComment(printer, descriptor_); |
+ printer->Print( |
+ variables_, |
+ "$deprecation$\n" |
+ "$value_type$ get$capitalized_name$OrThrow(\n" |
+ " $key_type$ key);\n"); |
} |
} |
@@ -196,9 +277,9 @@ GenerateMembers(io::Printer* printer) const { |
printer->Print( |
variables_, |
"private static final class $capitalized_name$DefaultEntryHolder {\n" |
- " static final com.google.protobuf.MapEntry$lite$<\n" |
+ " static final com.google.protobuf.MapEntry<\n" |
" $type_parameters$> defaultEntry =\n" |
- " com.google.protobuf.MapEntry$lite$\n" |
+ " com.google.protobuf.MapEntry\n" |
" .<$type_parameters$>newDefaultInstance(\n" |
" $descriptor$\n" |
" $key_wire_type$,\n" |
@@ -208,12 +289,12 @@ GenerateMembers(io::Printer* printer) const { |
"}\n"); |
printer->Print( |
variables_, |
- "private com.google.protobuf.MapField$lite$<\n" |
+ "private com.google.protobuf.MapField<\n" |
" $type_parameters$> $name$_;\n" |
- "private com.google.protobuf.MapField$lite$<$type_parameters$>\n" |
+ "private com.google.protobuf.MapField<$type_parameters$>\n" |
"internalGet$capitalized_name$() {\n" |
" if ($name$_ == null) {\n" |
- " return com.google.protobuf.MapField$lite$.emptyMapField(\n" |
+ " return com.google.protobuf.MapField.emptyMapField(\n" |
" $map_field_parameter$);\n" |
" }\n" |
" return $name$_;\n" |
@@ -227,57 +308,39 @@ GenerateMembers(io::Printer* printer) const { |
" com.google.protobuf.Internal.MapAdapter.newEnumConverter(\n" |
" $value_enum_type$.internalGetValueMap(),\n" |
" $unrecognized_value$);\n"); |
- if (SupportUnknownEnumValue(descriptor_->file())) { |
- WriteFieldDocComment(printer, descriptor_); |
- printer->Print( |
- variables_, |
- "$deprecation$\n" |
- "public java.util.Map<$boxed_key_type$, $boxed_value_type$>\n" |
- "get$capitalized_name$Value() {\n" |
- " return internalGet$capitalized_name$().getMap();\n" |
- "}\n"); |
- } |
- WriteFieldDocComment(printer, descriptor_); |
printer->Print( |
variables_, |
- "$deprecation$\n" |
- "public java.util.Map<$boxed_key_type$, $value_enum_type$>\n" |
- "get$capitalized_name$() {\n" |
+ "private static final java.util.Map<$boxed_key_type$, " |
+ "$value_enum_type$>\n" |
+ "internalGetAdapted$capitalized_name$Map(\n" |
+ " java.util.Map<$boxed_key_type$, $boxed_value_type$> map) {\n" |
" return new com.google.protobuf.Internal.MapAdapter<\n" |
" $boxed_key_type$, $value_enum_type$, java.lang.Integer>(\n" |
- " internalGet$capitalized_name$().getMap(),\n" |
- " $name$ValueConverter);\n" |
- "}\n"); |
- } else { |
- WriteFieldDocComment(printer, descriptor_); |
- printer->Print( |
- variables_, |
- "$deprecation$\n" |
- "public java.util.Map<$type_parameters$> get$capitalized_name$() {\n" |
- " return internalGet$capitalized_name$().getMap();\n" |
+ " map, $name$ValueConverter);\n" |
"}\n"); |
} |
+ GenerateMapGetters(printer); |
} |
void ImmutableMapFieldGenerator:: |
GenerateBuilderMembers(io::Printer* printer) const { |
printer->Print( |
variables_, |
- "private com.google.protobuf.MapField$lite$<\n" |
+ "private com.google.protobuf.MapField<\n" |
" $type_parameters$> $name$_;\n" |
- "private com.google.protobuf.MapField$lite$<$type_parameters$>\n" |
+ "private com.google.protobuf.MapField<$type_parameters$>\n" |
"internalGet$capitalized_name$() {\n" |
" if ($name$_ == null) {\n" |
- " return com.google.protobuf.MapField$lite$.emptyMapField(\n" |
+ " return com.google.protobuf.MapField.emptyMapField(\n" |
" $map_field_parameter$);\n" |
" }\n" |
" return $name$_;\n" |
"}\n" |
- "private com.google.protobuf.MapField$lite$<$type_parameters$>\n" |
+ "private com.google.protobuf.MapField<$type_parameters$>\n" |
"internalGetMutable$capitalized_name$() {\n" |
" $on_changed$;\n" |
" if ($name$_ == null) {\n" |
- " $name$_ = com.google.protobuf.MapField$lite$.newMapField(\n" |
+ " $name$_ = com.google.protobuf.MapField.newMapField(\n" |
" $map_field_parameter$);\n" |
" }\n" |
" if (!$name$_.isMutable()) {\n" |
@@ -285,84 +348,279 @@ GenerateBuilderMembers(io::Printer* printer) const { |
" }\n" |
" return $name$_;\n" |
"}\n"); |
+ GenerateMapGetters(printer); |
+ printer->Print(variables_, |
+ "$deprecation$\n" |
+ "public Builder clear$capitalized_name$() {\n" |
+ " internalGetMutable$capitalized_name$().getMutableMap()\n" |
+ " .clear();\n" |
+ " return this;\n" |
+ "}\n"); |
+ WriteFieldDocComment(printer, descriptor_); |
+ printer->Print(variables_, |
+ "$deprecation$\n" |
+ "public Builder remove$capitalized_name$(\n" |
+ " $key_type$ key) {\n" |
+ " $key_null_check$\n" |
+ " internalGetMutable$capitalized_name$().getMutableMap()\n" |
+ " .remove(key);\n" |
+ " return this;\n" |
+ "}\n"); |
if (GetJavaType(ValueField(descriptor_)) == JAVATYPE_ENUM) { |
+ printer->Print( |
+ variables_, |
+ "/**\n" |
+ " * Use alternate mutation accessors instead.\n" |
+ " */\n" |
+ "@java.lang.Deprecated\n" |
+ "public java.util.Map<$boxed_key_type$, $value_enum_type$>\n" |
+ "getMutable$capitalized_name$() {\n" |
+ " return internalGetAdapted$capitalized_name$Map(\n" |
+ " internalGetMutable$capitalized_name$().getMutableMap());\n" |
+ "}\n"); |
+ WriteFieldDocComment(printer, descriptor_); |
+ printer->Print(variables_, |
+ "$deprecation$public Builder put$capitalized_name$(\n" |
+ " $key_type$ key,\n" |
+ " $value_enum_type$ value) {\n" |
+ " $key_null_check$\n" |
+ " $value_null_check$\n" |
+ " internalGetMutable$capitalized_name$().getMutableMap()\n" |
+ " .put(key, $name$ValueConverter.doBackward(value));\n" |
+ " return this;\n" |
+ "}\n"); |
WriteFieldDocComment(printer, descriptor_); |
printer->Print( |
variables_, |
- "$deprecation$\n" |
+ "$deprecation$public Builder putAll$capitalized_name$(\n" |
+ " java.util.Map<$boxed_key_type$, $value_enum_type$> values) {\n" |
+ " internalGetAdapted$capitalized_name$Map(\n" |
+ " internalGetMutable$capitalized_name$().getMutableMap())\n" |
+ " .putAll(values);\n" |
+ " return this;\n" |
+ "}\n"); |
+ if (SupportUnknownEnumValue(descriptor_->file())) { |
+ printer->Print( |
+ variables_, |
+ "/**\n" |
+ " * Use alternate mutation accessors instead.\n" |
+ " */\n" |
+ "@java.lang.Deprecated\n" |
+ "public java.util.Map<$boxed_key_type$, $boxed_value_type$>\n" |
+ "getMutable$capitalized_name$Value() {\n" |
+ " return internalGetMutable$capitalized_name$().getMutableMap();\n" |
+ "}\n"); |
+ WriteFieldDocComment(printer, descriptor_); |
+ printer->Print( |
+ variables_, |
+ "$deprecation$public Builder put$capitalized_name$Value(\n" |
+ " $key_type$ key,\n" |
+ " $value_type$ value) {\n" |
+ " $key_null_check$\n" |
+ " if ($value_enum_type$.forNumber(value) == null) {\n" |
+ " throw new java.lang.IllegalArgumentException();\n" |
+ " }\n" |
+ " internalGetMutable$capitalized_name$().getMutableMap()\n" |
+ " .put(key, value);\n" |
+ " return this;\n" |
+ "}\n"); |
+ WriteFieldDocComment(printer, descriptor_); |
+ printer->Print( |
+ variables_, |
+ "$deprecation$public Builder putAll$capitalized_name$Value(\n" |
+ " java.util.Map<$boxed_key_type$, $boxed_value_type$> values) {\n" |
+ " internalGetMutable$capitalized_name$().getMutableMap()\n" |
+ " .putAll(values);\n" |
+ " return this;\n" |
+ "}\n"); |
+ } |
+ } else { |
+ printer->Print( |
+ variables_, |
+ "/**\n" |
+ " * Use alternate mutation accessors instead.\n" |
+ " */\n" |
+ "@java.lang.Deprecated\n" |
+ "public java.util.Map<$type_parameters$>\n" |
+ "getMutable$capitalized_name$() {\n" |
+ " return internalGetMutable$capitalized_name$().getMutableMap();\n" |
+ "}\n"); |
+ WriteFieldDocComment(printer, descriptor_); |
+ printer->Print(variables_, |
+ "$deprecation$" |
+ "public Builder put$capitalized_name$(\n" |
+ " $key_type$ key,\n" |
+ " $value_type$ value) {\n" |
+ " $key_null_check$\n" |
+ " $value_null_check$\n" |
+ " internalGetMutable$capitalized_name$().getMutableMap()\n" |
+ " .put(key, value);\n" |
+ " return this;\n" |
+ "}\n"); |
+ WriteFieldDocComment(printer, descriptor_); |
+ printer->Print(variables_, |
+ "$deprecation$\n" |
+ "public Builder putAll$capitalized_name$(\n" |
+ " java.util.Map<$type_parameters$> values) {\n" |
+ " internalGetMutable$capitalized_name$().getMutableMap()\n" |
+ " .putAll(values);\n" |
+ " return this;\n" |
+ "}\n"); |
+ } |
+} |
+ |
+void ImmutableMapFieldGenerator:: |
+GenerateMapGetters(io::Printer* printer) const { |
+ printer->Print( |
+ variables_, |
+ "$deprecation$\n" |
+ "public int get$capitalized_name$Count() {\n" |
+ " return internalGet$capitalized_name$().getMap().size();\n" |
+ "}\n"); |
+ WriteFieldDocComment(printer, descriptor_); |
+ printer->Print( |
+ variables_, |
+ "$deprecation$\n" |
+ "public boolean contains$capitalized_name$(\n" |
+ " $key_type$ key) {\n" |
+ " $key_null_check$\n" |
+ " return internalGet$capitalized_name$().getMap().containsKey(key);\n" |
+ "}\n"); |
+ if (GetJavaType(ValueField(descriptor_)) == JAVATYPE_ENUM) { |
+ printer->Print( |
+ variables_, |
+ "/**\n" |
+ " * Use {@link #get$capitalized_name$Map()} instead.\n" |
+ " */\n" |
+ "@java.lang.Deprecated\n" |
"public java.util.Map<$boxed_key_type$, $value_enum_type$>\n" |
"get$capitalized_name$() {\n" |
- " return new com.google.protobuf.Internal.MapAdapter<\n" |
- " $boxed_key_type$, $value_enum_type$, java.lang.Integer>(\n" |
- " internalGet$capitalized_name$().getMap(),\n" |
- " $name$ValueConverter);\n" |
+ " return get$capitalized_name$Map();\n" |
"}\n"); |
WriteFieldDocComment(printer, descriptor_); |
+ printer->Print(variables_, |
+ "$deprecation$\n" |
+ "public java.util.Map<$boxed_key_type$, $value_enum_type$>\n" |
+ "get$capitalized_name$Map() {\n" |
+ " return internalGetAdapted$capitalized_name$Map(\n" |
+ " internalGet$capitalized_name$().getMap());" |
+ "}\n"); |
+ WriteFieldDocComment(printer, descriptor_); |
printer->Print( |
variables_, |
"$deprecation$\n" |
- "public java.util.Map<$boxed_key_type$, $value_enum_type$>\n" |
- "getMutable$capitalized_name$() {\n" |
- " return new com.google.protobuf.Internal.MapAdapter<\n" |
- " $boxed_key_type$, $value_enum_type$, java.lang.Integer>(\n" |
- " internalGetMutable$capitalized_name$().getMutableMap(),\n" |
- " $name$ValueConverter);\n" |
+ "public $value_enum_type$ get$capitalized_name$OrDefault(\n" |
+ " $key_type$ key,\n" |
+ " $value_enum_type$ defaultValue) {\n" |
+ " $key_null_check$\n" |
+ " java.util.Map<$boxed_key_type$, $boxed_value_type$> map =\n" |
+ " internalGet$capitalized_name$().getMap();\n" |
+ " return map.containsKey(key)\n" |
+ " ? $name$ValueConverter.doForward(map.get(key))\n" |
+ " : defaultValue;\n" |
"}\n"); |
WriteFieldDocComment(printer, descriptor_); |
printer->Print( |
variables_, |
- "$deprecation$public Builder putAll$capitalized_name$(\n" |
- " java.util.Map<$boxed_key_type$, $value_enum_type$> values) {\n" |
- " getMutable$capitalized_name$().putAll(values);\n" |
- " return this;\n" |
+ "$deprecation$\n" |
+ "public $value_enum_type$ get$capitalized_name$OrThrow(\n" |
+ " $key_type$ key) {\n" |
+ " $key_null_check$\n" |
+ " java.util.Map<$boxed_key_type$, $boxed_value_type$> map =\n" |
+ " internalGet$capitalized_name$().getMap();\n" |
+ " if (!map.containsKey(key)) {\n" |
+ " throw new java.lang.IllegalArgumentException();\n" |
+ " }\n" |
+ " return $name$ValueConverter.doForward(map.get(key));\n" |
"}\n"); |
if (SupportUnknownEnumValue(descriptor_->file())) { |
+ printer->Print( |
+ variables_, |
+ "/**\n" |
+ " * Use {@link #get$capitalized_name$ValueMap()} instead.\n" |
+ " */\n" |
+ "@java.lang.Deprecated\n" |
+ "public java.util.Map<$boxed_key_type$, $boxed_value_type$>\n" |
+ "get$capitalized_name$Value() {\n" |
+ " return get$capitalized_name$ValueMap();\n" |
+ "}\n"); |
WriteFieldDocComment(printer, descriptor_); |
printer->Print( |
variables_, |
"$deprecation$\n" |
"public java.util.Map<$boxed_key_type$, $boxed_value_type$>\n" |
- "get$capitalized_name$Value() {\n" |
+ "get$capitalized_name$ValueMap() {\n" |
" return internalGet$capitalized_name$().getMap();\n" |
"}\n"); |
WriteFieldDocComment(printer, descriptor_); |
printer->Print( |
variables_, |
"$deprecation$\n" |
- "public java.util.Map<$boxed_key_type$, $boxed_value_type$>\n" |
- "getMutable$capitalized_name$Value() {\n" |
- " return internalGetMutable$capitalized_name$().getMutableMap();\n" |
+ "public $value_type$ get$capitalized_name$ValueOrDefault(\n" |
+ " $key_type$ key,\n" |
+ " $value_type$ defaultValue) {\n" |
+ " $key_null_check$\n" |
+ " java.util.Map<$boxed_key_type$, $boxed_value_type$> map =\n" |
+ " internalGet$capitalized_name$().getMap();\n" |
+ " return map.containsKey(key) ? map.get(key) : defaultValue;\n" |
"}\n"); |
WriteFieldDocComment(printer, descriptor_); |
printer->Print( |
variables_, |
- "$deprecation$public Builder putAll$capitalized_name$Value(\n" |
- " java.util.Map<$boxed_key_type$, $boxed_value_type$> values) {\n" |
- " getMutable$capitalized_name$Value().putAll(values);\n" |
- " return this;\n" |
+ "$deprecation$\n" |
+ "public $value_type$ get$capitalized_name$ValueOrThrow(\n" |
+ " $key_type$ key) {\n" |
+ " $key_null_check$\n" |
+ " java.util.Map<$boxed_key_type$, $boxed_value_type$> map =\n" |
+ " internalGet$capitalized_name$().getMap();\n" |
+ " if (!map.containsKey(key)) {\n" |
+ " throw new java.lang.IllegalArgumentException();\n" |
+ " }\n" |
+ " return map.get(key);\n" |
"}\n"); |
} |
} else { |
- WriteFieldDocComment(printer, descriptor_); |
printer->Print( |
variables_, |
+ "/**\n" |
+ " * Use {@link #get$capitalized_name$Map()} instead.\n" |
+ " */\n" |
+ "@java.lang.Deprecated\n" |
"public java.util.Map<$type_parameters$> get$capitalized_name$() {\n" |
+ " return get$capitalized_name$Map();\n" |
+ "}\n"); |
+ WriteFieldDocComment(printer, descriptor_); |
+ printer->Print( |
+ variables_, |
+ "$deprecation$\n" |
+ "public java.util.Map<$type_parameters$> get$capitalized_name$Map() {\n" |
" return internalGet$capitalized_name$().getMap();\n" |
"}\n"); |
WriteFieldDocComment(printer, descriptor_); |
printer->Print( |
variables_, |
- "public java.util.Map<$type_parameters$>\n" |
- "getMutable$capitalized_name$() {\n" |
- " return internalGetMutable$capitalized_name$().getMutableMap();\n" |
+ "$deprecation$\n" |
+ "public $value_type$ get$capitalized_name$OrDefault(\n" |
+ " $key_type$ key,\n" |
+ " $value_type$ defaultValue) {\n" |
+ " $key_null_check$\n" |
+ " java.util.Map<$type_parameters$> map =\n" |
+ " internalGet$capitalized_name$().getMap();\n" |
+ " return map.containsKey(key) ? map.get(key) : defaultValue;\n" |
"}\n"); |
WriteFieldDocComment(printer, descriptor_); |
printer->Print( |
variables_, |
- "$deprecation$public Builder putAll$capitalized_name$(\n" |
- " java.util.Map<$type_parameters$> values) {\n" |
- " getMutable$capitalized_name$().putAll(values);\n" |
- " return this;\n" |
+ "$deprecation$\n" |
+ "public $value_type$ get$capitalized_name$OrThrow(\n" |
+ " $key_type$ key) {\n" |
+ " $key_null_check$\n" |
+ " java.util.Map<$type_parameters$> map =\n" |
+ " internalGet$capitalized_name$().getMap();\n" |
+ " if (!map.containsKey(key)) {\n" |
+ " throw new java.lang.IllegalArgumentException();\n" |
+ " }\n" |
+ " return map.get(key);\n" |
"}\n"); |
} |
} |
@@ -405,7 +663,7 @@ GenerateParsingCode(io::Printer* printer) const { |
printer->Print( |
variables_, |
"if (!$get_mutable_bit_parser$) {\n" |
- " $name$_ = com.google.protobuf.MapField$lite$.newMapField(\n" |
+ " $name$_ = com.google.protobuf.MapField.newMapField(\n" |
" $map_field_parameter$);\n" |
" $set_mutable_bit_parser$;\n" |
"}\n"); |
@@ -414,22 +672,24 @@ GenerateParsingCode(io::Printer* printer) const { |
printer->Print( |
variables_, |
"com.google.protobuf.ByteString bytes = input.readBytes();\n" |
- "com.google.protobuf.MapEntry$lite$<$type_parameters$>\n" |
- "$name$ = $default_entry$.getParserForType().parseFrom(bytes);\n"); |
+ "com.google.protobuf.MapEntry<$type_parameters$>\n" |
+ "$name$__ = $default_entry$.getParserForType().parseFrom(bytes);\n"); |
printer->Print( |
variables_, |
- "if ($value_enum_type$.forNumber($name$.getValue()) == null) {\n" |
+ "if ($value_enum_type$.forNumber($name$__.getValue()) == null) {\n" |
" unknownFields.mergeLengthDelimitedField($number$, bytes);\n" |
"} else {\n" |
- " $name$_.getMutableMap().put($name$.getKey(), $name$.getValue());\n" |
+ " $name$_.getMutableMap().put(\n" |
+ " $name$__.getKey(), $name$__.getValue());\n" |
"}\n"); |
} else { |
printer->Print( |
variables_, |
- "com.google.protobuf.MapEntry$lite$<$type_parameters$>\n" |
- "$name$ = input.readMessage(\n" |
+ "com.google.protobuf.MapEntry<$type_parameters$>\n" |
+ "$name$__ = input.readMessage(\n" |
" $default_entry$.getParserForType(), extensionRegistry);\n" |
- "$name$_.getMutableMap().put($name$.getKey(), $name$.getValue());\n"); |
+ "$name$_.getMutableMap().put(\n" |
+ " $name$__.getKey(), $name$__.getValue());\n"); |
} |
} |
@@ -442,15 +702,12 @@ void ImmutableMapFieldGenerator:: |
GenerateSerializationCode(io::Printer* printer) const { |
printer->Print( |
variables_, |
- "for (java.util.Map.Entry<$type_parameters$> entry\n" |
- " : internalGet$capitalized_name$().getMap().entrySet()) {\n" |
- " com.google.protobuf.MapEntry$lite$<$type_parameters$>\n" |
- " $name$ = $default_entry$.newBuilderForType()\n" |
- " .setKey(entry.getKey())\n" |
- " .setValue(entry.getValue())\n" |
- " .build();\n" |
- " output.writeMessage($number$, $name$);\n" |
- "}\n"); |
+ "com.google.protobuf.GeneratedMessage$ver$\n" |
+ " .serialize$short_key_type$MapTo(\n" |
+ " output,\n" |
+ " internalGet$capitalized_name$(),\n" |
+ " $default_entry$,\n" |
+ " $number$);\n"); |
} |
void ImmutableMapFieldGenerator:: |
@@ -459,13 +716,13 @@ GenerateSerializedSizeCode(io::Printer* printer) const { |
variables_, |
"for (java.util.Map.Entry<$type_parameters$> entry\n" |
" : internalGet$capitalized_name$().getMap().entrySet()) {\n" |
- " com.google.protobuf.MapEntry$lite$<$type_parameters$>\n" |
- " $name$ = $default_entry$.newBuilderForType()\n" |
+ " com.google.protobuf.MapEntry<$type_parameters$>\n" |
+ " $name$__ = $default_entry$.newBuilderForType()\n" |
" .setKey(entry.getKey())\n" |
" .setValue(entry.getValue())\n" |
" .build();\n" |
" size += com.google.protobuf.CodedOutputStream\n" |
- " .computeMessageSize($number$, $name$);\n" |
+ " .computeMessageSize($number$, $name$__);\n" |
"}\n"); |
} |