Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(23)

Side by Side Diff: third_party/protobuf/src/google/protobuf/compiler/java/java_map_field.cc

Issue 2495533002: third_party/protobuf: Update to HEAD (83d681ee2c) (Closed)
Patch Set: Update to new HEAD (b7632464b4) + restore GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Protocol Buffers - Google's data interchange format 1 // Protocol Buffers - Google's data interchange format
2 // Copyright 2008 Google Inc. All rights reserved. 2 // Copyright 2008 Google Inc. All rights reserved.
3 // https://developers.google.com/protocol-buffers/ 3 // https://developers.google.com/protocol-buffers/
4 // 4 //
5 // Redistribution and use in source and binary forms, with or without 5 // Redistribution and use in source and binary forms, with or without
6 // modification, are permitted provided that the following conditions are 6 // modification, are permitted provided that the following conditions are
7 // met: 7 // met:
8 // 8 //
9 // * Redistributions of source code must retain the above copyright 9 // * Redistributions of source code must retain the above copyright
10 // notice, this list of conditions and the following disclaimer. 10 // notice, this list of conditions and the following disclaimer.
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
81 const FieldGeneratorInfo* info, 81 const FieldGeneratorInfo* info,
82 Context* context, 82 Context* context,
83 map<string, string>* variables) { 83 map<string, string>* variables) {
84 SetCommonFieldVariables(descriptor, info, variables); 84 SetCommonFieldVariables(descriptor, info, variables);
85 ClassNameResolver* name_resolver = context->GetNameResolver(); 85 ClassNameResolver* name_resolver = context->GetNameResolver();
86 86
87 (*variables)["type"] = 87 (*variables)["type"] =
88 name_resolver->GetImmutableClassName(descriptor->message_type()); 88 name_resolver->GetImmutableClassName(descriptor->message_type());
89 const FieldDescriptor* key = KeyField(descriptor); 89 const FieldDescriptor* key = KeyField(descriptor);
90 const FieldDescriptor* value = ValueField(descriptor); 90 const FieldDescriptor* value = ValueField(descriptor);
91 const JavaType keyJavaType = GetJavaType(key);
92 const JavaType valueJavaType = GetJavaType(value);
93
91 (*variables)["key_type"] = TypeName(key, name_resolver, false); 94 (*variables)["key_type"] = TypeName(key, name_resolver, false);
92 (*variables)["boxed_key_type"] = TypeName(key, name_resolver, true); 95 string boxed_key_type = TypeName(key, name_resolver, true);
96 (*variables)["boxed_key_type"] = boxed_key_type;
97 // Used for calling the serialization function.
98 (*variables)["short_key_type"] =
99 boxed_key_type.substr(boxed_key_type.rfind('.') + 1);
93 (*variables)["key_wire_type"] = WireType(key); 100 (*variables)["key_wire_type"] = WireType(key);
94 (*variables)["key_default_value"] = DefaultValue(key, true, name_resolver); 101 (*variables)["key_default_value"] = DefaultValue(key, true, name_resolver);
95 if (GetJavaType(value) == JAVATYPE_ENUM) { 102 (*variables)["key_null_check"] = IsReferenceType(keyJavaType) ?
103 "if (key == null) { throw new java.lang.NullPointerException(); }" : "";
104 (*variables)["value_null_check"] = IsReferenceType(valueJavaType) ?
105 "if (value == null) { throw new java.lang.NullPointerException(); }" : "";
106 if (valueJavaType == JAVATYPE_ENUM) {
96 // We store enums as Integers internally. 107 // We store enums as Integers internally.
97 (*variables)["value_type"] = "int"; 108 (*variables)["value_type"] = "int";
98 (*variables)["boxed_value_type"] = "java.lang.Integer"; 109 (*variables)["boxed_value_type"] = "java.lang.Integer";
99 (*variables)["value_wire_type"] = WireType(value); 110 (*variables)["value_wire_type"] = WireType(value);
100 (*variables)["value_default_value"] = 111 (*variables)["value_default_value"] =
101 DefaultValue(value, true, name_resolver) + ".getNumber()"; 112 DefaultValue(value, true, name_resolver) + ".getNumber()";
102 113
103 (*variables)["value_enum_type"] = TypeName(value, name_resolver, false); 114 (*variables)["value_enum_type"] = TypeName(value, name_resolver, false);
104 115
105 if (SupportUnknownEnumValue(descriptor->file())) { 116 if (SupportUnknownEnumValue(descriptor->file())) {
(...skipping 22 matching lines...) Expand all
128 139
129 // For repeated fields, one bit is used for whether the array is immutable 140 // For repeated fields, one bit is used for whether the array is immutable
130 // in the parsing constructor. 141 // in the parsing constructor.
131 (*variables)["get_mutable_bit_parser"] = 142 (*variables)["get_mutable_bit_parser"] =
132 GenerateGetBitMutableLocal(builderBitIndex); 143 GenerateGetBitMutableLocal(builderBitIndex);
133 (*variables)["set_mutable_bit_parser"] = 144 (*variables)["set_mutable_bit_parser"] =
134 GenerateSetBitMutableLocal(builderBitIndex); 145 GenerateSetBitMutableLocal(builderBitIndex);
135 146
136 (*variables)["default_entry"] = (*variables)["capitalized_name"] + 147 (*variables)["default_entry"] = (*variables)["capitalized_name"] +
137 "DefaultEntryHolder.defaultEntry"; 148 "DefaultEntryHolder.defaultEntry";
138 (*variables)["lite"] = "";
139 (*variables)["map_field_parameter"] = (*variables)["default_entry"]; 149 (*variables)["map_field_parameter"] = (*variables)["default_entry"];
140 (*variables)["descriptor"] = 150 (*variables)["descriptor"] =
141 name_resolver->GetImmutableClassName(descriptor->file()) + 151 name_resolver->GetImmutableClassName(descriptor->file()) +
142 ".internal_" + UniqueFileScopeIdentifier(descriptor->message_type()) + 152 ".internal_" + UniqueFileScopeIdentifier(descriptor->message_type()) +
143 "_descriptor, "; 153 "_descriptor, ";
154 (*variables)["ver"] = GeneratedCodeVersionSuffix();
144 } 155 }
145 156
146 } // namespace 157 } // namespace
147 158
148 ImmutableMapFieldGenerator:: 159 ImmutableMapFieldGenerator::
149 ImmutableMapFieldGenerator(const FieldDescriptor* descriptor, 160 ImmutableMapFieldGenerator(const FieldDescriptor* descriptor,
150 int messageBitIndex, 161 int messageBitIndex,
151 int builderBitIndex, 162 int builderBitIndex,
152 Context* context) 163 Context* context)
153 : descriptor_(descriptor), name_resolver_(context->GetNameResolver()) { 164 : descriptor_(descriptor), name_resolver_(context->GetNameResolver()) {
154 SetMessageVariables(descriptor, messageBitIndex, builderBitIndex, 165 SetMessageVariables(descriptor, messageBitIndex, builderBitIndex,
155 context->GetFieldGeneratorInfo(descriptor), 166 context->GetFieldGeneratorInfo(descriptor),
156 context, &variables_); 167 context, &variables_);
157 } 168 }
158 169
159 ImmutableMapFieldGenerator:: 170 ImmutableMapFieldGenerator::
160 ~ImmutableMapFieldGenerator() {} 171 ~ImmutableMapFieldGenerator() {}
161 172
162 int ImmutableMapFieldGenerator::GetNumBitsForMessage() const { 173 int ImmutableMapFieldGenerator::GetNumBitsForMessage() const {
163 return 0; 174 return 0;
164 } 175 }
165 176
166 int ImmutableMapFieldGenerator::GetNumBitsForBuilder() const { 177 int ImmutableMapFieldGenerator::GetNumBitsForBuilder() const {
167 return 1; 178 return 1;
168 } 179 }
169 180
170 void ImmutableMapFieldGenerator:: 181 void ImmutableMapFieldGenerator::
171 GenerateInterfaceMembers(io::Printer* printer) const { 182 GenerateInterfaceMembers(io::Printer* printer) const {
183 WriteFieldDocComment(printer, descriptor_);
184 printer->Print(
185 variables_,
186 "$deprecation$int get$capitalized_name$Count();\n");
187 WriteFieldDocComment(printer, descriptor_);
188 printer->Print(
189 variables_,
190 "$deprecation$boolean contains$capitalized_name$(\n"
191 " $key_type$ key);\n");
172 if (GetJavaType(ValueField(descriptor_)) == JAVATYPE_ENUM) { 192 if (GetJavaType(ValueField(descriptor_)) == JAVATYPE_ENUM) {
193 printer->Print(
194 variables_,
195 "/**\n"
196 " * Use {@link #get$capitalized_name$Map()} instead.\n"
197 " */\n"
198 "@java.lang.Deprecated\n"
199 "java.util.Map<$boxed_key_type$, $value_enum_type$>\n"
200 "get$capitalized_name$();\n");
173 WriteFieldDocComment(printer, descriptor_); 201 WriteFieldDocComment(printer, descriptor_);
174 printer->Print( 202 printer->Print(
175 variables_, 203 variables_,
176 "$deprecation$java.util.Map<$boxed_key_type$, $value_enum_type$>\n" 204 "$deprecation$java.util.Map<$boxed_key_type$, $value_enum_type$>\n"
177 "get$capitalized_name$();\n"); 205 "get$capitalized_name$Map();\n");
206 WriteFieldDocComment(printer, descriptor_);
207 printer->Print(
208 variables_,
209 "$deprecation$$value_enum_type$ get$capitalized_name$OrDefault(\n"
210 " $key_type$ key,\n"
211 " $value_enum_type$ defaultValue);\n");
212 WriteFieldDocComment(printer, descriptor_);
213 printer->Print(
214 variables_,
215 "$deprecation$$value_enum_type$ get$capitalized_name$OrThrow(\n"
216 " $key_type$ key);\n");
178 if (SupportUnknownEnumValue(descriptor_->file())) { 217 if (SupportUnknownEnumValue(descriptor_->file())) {
218 printer->Print(
219 variables_,
220 "/**\n"
221 " * Use {@link #get$capitalized_name$ValueMap()} instead.\n"
222 " */\n"
223 "@java.lang.Deprecated\n"
224 "java.util.Map<$type_parameters$>\n"
225 "get$capitalized_name$Value();\n");
179 WriteFieldDocComment(printer, descriptor_); 226 WriteFieldDocComment(printer, descriptor_);
180 printer->Print( 227 printer->Print(
181 variables_, 228 variables_,
182 "$deprecation$java.util.Map<$type_parameters$>\n" 229 "$deprecation$java.util.Map<$type_parameters$>\n"
183 "get$capitalized_name$Value();\n"); 230 "get$capitalized_name$ValueMap();\n");
231 WriteFieldDocComment(printer, descriptor_);
232 printer->Print(
233 variables_,
234 "$deprecation$\n"
235 "$value_type$ get$capitalized_name$ValueOrDefault(\n"
236 " $key_type$ key,\n"
237 " $value_type$ defaultValue);\n");
238 WriteFieldDocComment(printer, descriptor_);
239 printer->Print(
240 variables_,
241 "$deprecation$\n"
242 "$value_type$ get$capitalized_name$ValueOrThrow(\n"
243 " $key_type$ key);\n");
184 } 244 }
185 } else { 245 } else {
246 printer->Print(
247 variables_,
248 "/**\n"
249 " * Use {@link #get$capitalized_name$Map()} instead.\n"
250 " */\n"
251 "@java.lang.Deprecated\n"
252 "java.util.Map<$type_parameters$>\n"
253 "get$capitalized_name$();\n");
186 WriteFieldDocComment(printer, descriptor_); 254 WriteFieldDocComment(printer, descriptor_);
187 printer->Print( 255 printer->Print(
188 variables_, 256 variables_,
189 "$deprecation$java.util.Map<$type_parameters$>\n" 257 "$deprecation$java.util.Map<$type_parameters$>\n"
190 "get$capitalized_name$();\n"); 258 "get$capitalized_name$Map();\n");
259 WriteFieldDocComment(printer, descriptor_);
260 printer->Print(
261 variables_,
262 "$deprecation$\n"
263 "$value_type$ get$capitalized_name$OrDefault(\n"
264 " $key_type$ key,\n"
265 " $value_type$ defaultValue);\n");
266 WriteFieldDocComment(printer, descriptor_);
267 printer->Print(
268 variables_,
269 "$deprecation$\n"
270 "$value_type$ get$capitalized_name$OrThrow(\n"
271 " $key_type$ key);\n");
191 } 272 }
192 } 273 }
193 274
194 void ImmutableMapFieldGenerator:: 275 void ImmutableMapFieldGenerator::
195 GenerateMembers(io::Printer* printer) const { 276 GenerateMembers(io::Printer* printer) const {
196 printer->Print( 277 printer->Print(
197 variables_, 278 variables_,
198 "private static final class $capitalized_name$DefaultEntryHolder {\n" 279 "private static final class $capitalized_name$DefaultEntryHolder {\n"
199 " static final com.google.protobuf.MapEntry$lite$<\n" 280 " static final com.google.protobuf.MapEntry<\n"
200 " $type_parameters$> defaultEntry =\n" 281 " $type_parameters$> defaultEntry =\n"
201 " com.google.protobuf.MapEntry$lite$\n" 282 " com.google.protobuf.MapEntry\n"
202 " .<$type_parameters$>newDefaultInstance(\n" 283 " .<$type_parameters$>newDefaultInstance(\n"
203 " $descriptor$\n" 284 " $descriptor$\n"
204 " $key_wire_type$,\n" 285 " $key_wire_type$,\n"
205 " $key_default_value$,\n" 286 " $key_default_value$,\n"
206 " $value_wire_type$,\n" 287 " $value_wire_type$,\n"
207 " $value_default_value$);\n" 288 " $value_default_value$);\n"
208 "}\n"); 289 "}\n");
209 printer->Print( 290 printer->Print(
210 variables_, 291 variables_,
211 "private com.google.protobuf.MapField$lite$<\n" 292 "private com.google.protobuf.MapField<\n"
212 " $type_parameters$> $name$_;\n" 293 " $type_parameters$> $name$_;\n"
213 "private com.google.protobuf.MapField$lite$<$type_parameters$>\n" 294 "private com.google.protobuf.MapField<$type_parameters$>\n"
214 "internalGet$capitalized_name$() {\n" 295 "internalGet$capitalized_name$() {\n"
215 " if ($name$_ == null) {\n" 296 " if ($name$_ == null) {\n"
216 " return com.google.protobuf.MapField$lite$.emptyMapField(\n" 297 " return com.google.protobuf.MapField.emptyMapField(\n"
217 " $map_field_parameter$);\n" 298 " $map_field_parameter$);\n"
218 " }\n" 299 " }\n"
219 " return $name$_;\n" 300 " return $name$_;\n"
220 "}\n"); 301 "}\n");
221 if (GetJavaType(ValueField(descriptor_)) == JAVATYPE_ENUM) { 302 if (GetJavaType(ValueField(descriptor_)) == JAVATYPE_ENUM) {
222 printer->Print( 303 printer->Print(
223 variables_, 304 variables_,
224 "private static final\n" 305 "private static final\n"
225 "com.google.protobuf.Internal.MapAdapter.Converter<\n" 306 "com.google.protobuf.Internal.MapAdapter.Converter<\n"
226 " java.lang.Integer, $value_enum_type$> $name$ValueConverter =\n" 307 " java.lang.Integer, $value_enum_type$> $name$ValueConverter =\n"
227 " com.google.protobuf.Internal.MapAdapter.newEnumConverter(\n" 308 " com.google.protobuf.Internal.MapAdapter.newEnumConverter(\n"
228 " $value_enum_type$.internalGetValueMap(),\n" 309 " $value_enum_type$.internalGetValueMap(),\n"
229 " $unrecognized_value$);\n"); 310 " $unrecognized_value$);\n");
230 if (SupportUnknownEnumValue(descriptor_->file())) {
231 WriteFieldDocComment(printer, descriptor_);
232 printer->Print(
233 variables_,
234 "$deprecation$\n"
235 "public java.util.Map<$boxed_key_type$, $boxed_value_type$>\n"
236 "get$capitalized_name$Value() {\n"
237 " return internalGet$capitalized_name$().getMap();\n"
238 "}\n");
239 }
240 WriteFieldDocComment(printer, descriptor_);
241 printer->Print(
242 variables_,
243 "$deprecation$\n"
244 "public java.util.Map<$boxed_key_type$, $value_enum_type$>\n"
245 "get$capitalized_name$() {\n"
246 " return new com.google.protobuf.Internal.MapAdapter<\n"
247 " $boxed_key_type$, $value_enum_type$, java.lang.Integer>(\n"
248 " internalGet$capitalized_name$().getMap(),\n"
249 " $name$ValueConverter);\n"
250 "}\n");
251 } else {
252 WriteFieldDocComment(printer, descriptor_);
253 printer->Print(
254 variables_,
255 "$deprecation$\n"
256 "public java.util.Map<$type_parameters$> get$capitalized_name$() {\n"
257 " return internalGet$capitalized_name$().getMap();\n"
258 "}\n");
259 } 311 }
312 GenerateMapGetters(printer);
260 } 313 }
261 314
262 void ImmutableMapFieldGenerator:: 315 void ImmutableMapFieldGenerator::
263 GenerateBuilderMembers(io::Printer* printer) const { 316 GenerateBuilderMembers(io::Printer* printer) const {
264 printer->Print( 317 printer->Print(
265 variables_, 318 variables_,
266 "private com.google.protobuf.MapField$lite$<\n" 319 "private com.google.protobuf.MapField<\n"
267 " $type_parameters$> $name$_;\n" 320 " $type_parameters$> $name$_;\n"
268 "private com.google.protobuf.MapField$lite$<$type_parameters$>\n" 321 "private com.google.protobuf.MapField<$type_parameters$>\n"
269 "internalGet$capitalized_name$() {\n" 322 "internalGet$capitalized_name$() {\n"
270 " if ($name$_ == null) {\n" 323 " if ($name$_ == null) {\n"
271 " return com.google.protobuf.MapField$lite$.emptyMapField(\n" 324 " return com.google.protobuf.MapField.emptyMapField(\n"
272 " $map_field_parameter$);\n" 325 " $map_field_parameter$);\n"
273 " }\n" 326 " }\n"
274 " return $name$_;\n" 327 " return $name$_;\n"
275 "}\n" 328 "}\n"
276 "private com.google.protobuf.MapField$lite$<$type_parameters$>\n" 329 "private com.google.protobuf.MapField<$type_parameters$>\n"
277 "internalGetMutable$capitalized_name$() {\n" 330 "internalGetMutable$capitalized_name$() {\n"
278 " $on_changed$;\n" 331 " $on_changed$;\n"
279 " if ($name$_ == null) {\n" 332 " if ($name$_ == null) {\n"
280 " $name$_ = com.google.protobuf.MapField$lite$.newMapField(\n" 333 " $name$_ = com.google.protobuf.MapField.newMapField(\n"
281 " $map_field_parameter$);\n" 334 " $map_field_parameter$);\n"
282 " }\n" 335 " }\n"
283 " if (!$name$_.isMutable()) {\n" 336 " if (!$name$_.isMutable()) {\n"
284 " $name$_ = $name$_.copy();\n" 337 " $name$_ = $name$_.copy();\n"
285 " }\n" 338 " }\n"
286 " return $name$_;\n" 339 " return $name$_;\n"
287 "}\n"); 340 "}\n");
341 GenerateMapGetters(printer);
342 printer->Print(
343 variables_,
344 "$deprecation$\n"
345 "public Builder clear$capitalized_name$() {\n"
346 " getMutable$capitalized_name$().clear();\n"
347 " return this;\n"
348 "}\n");
349 WriteFieldDocComment(printer, descriptor_);
350 printer->Print(
351 variables_,
352 "$deprecation$\n"
353 "public Builder remove$capitalized_name$(\n"
354 " $key_type$ key) {\n"
355 " $key_null_check$\n"
356 " getMutable$capitalized_name$().remove(key);\n"
357 " return this;\n"
358 "}\n");
288 if (GetJavaType(ValueField(descriptor_)) == JAVATYPE_ENUM) { 359 if (GetJavaType(ValueField(descriptor_)) == JAVATYPE_ENUM) {
289 WriteFieldDocComment(printer, descriptor_);
290 printer->Print( 360 printer->Print(
291 variables_, 361 variables_,
292 "$deprecation$\n" 362 "/**\n"
293 "public java.util.Map<$boxed_key_type$, $value_enum_type$>\n" 363 " * Use alternate mutation accessors instead.\n"
294 "get$capitalized_name$() {\n" 364 " */\n"
295 " return new com.google.protobuf.Internal.MapAdapter<\n" 365 "@java.lang.Deprecated\n"
296 " $boxed_key_type$, $value_enum_type$, java.lang.Integer>(\n"
297 " internalGet$capitalized_name$().getMap(),\n"
298 " $name$ValueConverter);\n"
299 "}\n");
300 WriteFieldDocComment(printer, descriptor_);
301 printer->Print(
302 variables_,
303 "$deprecation$\n"
304 "public java.util.Map<$boxed_key_type$, $value_enum_type$>\n" 366 "public java.util.Map<$boxed_key_type$, $value_enum_type$>\n"
305 "getMutable$capitalized_name$() {\n" 367 "getMutable$capitalized_name$() {\n"
306 " return new com.google.protobuf.Internal.MapAdapter<\n" 368 " return new com.google.protobuf.Internal.MapAdapter<\n"
307 " $boxed_key_type$, $value_enum_type$, java.lang.Integer>(\n" 369 " $boxed_key_type$, $value_enum_type$, java.lang.Integer>(\n"
308 " internalGetMutable$capitalized_name$().getMutableMap(),\n" 370 " internalGetMutable$capitalized_name$().getMutableMap(),\n"
309 " $name$ValueConverter);\n" 371 " $name$ValueConverter);\n"
310 "}\n"); 372 "}\n");
311 WriteFieldDocComment(printer, descriptor_); 373 WriteFieldDocComment(printer, descriptor_);
312 printer->Print( 374 printer->Print(
313 variables_, 375 variables_,
376 "$deprecation$public Builder put$capitalized_name$(\n"
377 " $key_type$ key,\n"
378 " $value_enum_type$ value) {\n"
379 " $key_null_check$\n"
380 " $value_null_check$\n"
381 " getMutable$capitalized_name$().put(key, value);\n"
382 " return this;\n"
383 "}\n");
384 WriteFieldDocComment(printer, descriptor_);
385 printer->Print(
386 variables_,
387 // TODO(arielb): null check map keys/values here and everywhere else
388 // related to putAll
314 "$deprecation$public Builder putAll$capitalized_name$(\n" 389 "$deprecation$public Builder putAll$capitalized_name$(\n"
315 " java.util.Map<$boxed_key_type$, $value_enum_type$> values) {\n" 390 " java.util.Map<$boxed_key_type$, $value_enum_type$> values) {\n"
316 " getMutable$capitalized_name$().putAll(values);\n" 391 " getMutable$capitalized_name$().putAll(values);\n"
317 " return this;\n" 392 " return this;\n"
318 "}\n"); 393 "}\n");
319 if (SupportUnknownEnumValue(descriptor_->file())) { 394 if (SupportUnknownEnumValue(descriptor_->file())) {
320 WriteFieldDocComment(printer, descriptor_);
321 printer->Print( 395 printer->Print(
322 variables_, 396 variables_,
323 "$deprecation$\n" 397 "/**\n"
324 "public java.util.Map<$boxed_key_type$, $boxed_value_type$>\n" 398 " * Use alternate mutation accessors instead.\n"
325 "get$capitalized_name$Value() {\n" 399 " */\n"
326 " return internalGet$capitalized_name$().getMap();\n" 400 "@java.lang.Deprecated\n"
327 "}\n");
328 WriteFieldDocComment(printer, descriptor_);
329 printer->Print(
330 variables_,
331 "$deprecation$\n"
332 "public java.util.Map<$boxed_key_type$, $boxed_value_type$>\n" 401 "public java.util.Map<$boxed_key_type$, $boxed_value_type$>\n"
333 "getMutable$capitalized_name$Value() {\n" 402 "getMutable$capitalized_name$Value() {\n"
334 " return internalGetMutable$capitalized_name$().getMutableMap();\n" 403 " return internalGetMutable$capitalized_name$().getMutableMap();\n"
335 "}\n"); 404 "}\n");
336 WriteFieldDocComment(printer, descriptor_); 405 WriteFieldDocComment(printer, descriptor_);
337 printer->Print( 406 printer->Print(
407 variables_,
408 "$deprecation$public Builder put$capitalized_name$Value(\n"
409 " $key_type$ key,\n"
410 " $value_type$ value) {\n"
411 " $key_null_check$\n"
412 " if ($value_enum_type$.forNumber(value) == null) {\n"
413 " throw new java.lang.IllegalArgumentException();\n"
414 " }\n"
415 " getMutable$capitalized_name$Value().put(key, value);\n"
416 " return this;\n"
417 "}\n");
418 WriteFieldDocComment(printer, descriptor_);
419 printer->Print(
338 variables_, 420 variables_,
339 "$deprecation$public Builder putAll$capitalized_name$Value(\n" 421 "$deprecation$public Builder putAll$capitalized_name$Value(\n"
340 " java.util.Map<$boxed_key_type$, $boxed_value_type$> values) {\n" 422 " java.util.Map<$boxed_key_type$, $boxed_value_type$> values) {\n"
341 " getMutable$capitalized_name$Value().putAll(values);\n" 423 " getMutable$capitalized_name$Value().putAll(values);\n"
342 " return this;\n" 424 " return this;\n"
343 "}\n"); 425 "}\n");
344 } 426 }
345 } else { 427 } else {
346 WriteFieldDocComment(printer, descriptor_);
347 printer->Print( 428 printer->Print(
348 variables_, 429 variables_,
349 "public java.util.Map<$type_parameters$> get$capitalized_name$() {\n" 430 "/**\n"
350 " return internalGet$capitalized_name$().getMap();\n" 431 " * Use alternate mutation accessors instead.\n"
351 "}\n"); 432 " */\n"
352 WriteFieldDocComment(printer, descriptor_); 433 "@java.lang.Deprecated\n"
353 printer->Print(
354 variables_,
355 "public java.util.Map<$type_parameters$>\n" 434 "public java.util.Map<$type_parameters$>\n"
356 "getMutable$capitalized_name$() {\n" 435 "getMutable$capitalized_name$() {\n"
357 " return internalGetMutable$capitalized_name$().getMutableMap();\n" 436 " return internalGetMutable$capitalized_name$().getMutableMap();\n"
358 "}\n"); 437 "}\n");
359 WriteFieldDocComment(printer, descriptor_); 438 WriteFieldDocComment(printer, descriptor_);
360 printer->Print( 439 printer->Print(
361 variables_, 440 variables_,
362 "$deprecation$public Builder putAll$capitalized_name$(\n" 441 "$deprecation$"
442 "public Builder put$capitalized_name$(\n"
443 " $key_type$ key,\n"
444 " $value_type$ value) {\n"
445 " $key_null_check$\n"
446 " $value_null_check$\n"
447 " getMutable$capitalized_name$().put(key, value);\n"
448 " return this;\n"
449 "}\n");
450 WriteFieldDocComment(printer, descriptor_);
451 printer->Print(
452 variables_,
453 "$deprecation$\n"
454 "public Builder putAll$capitalized_name$(\n"
363 " java.util.Map<$type_parameters$> values) {\n" 455 " java.util.Map<$type_parameters$> values) {\n"
364 " getMutable$capitalized_name$().putAll(values);\n" 456 " getMutable$capitalized_name$().putAll(values);\n"
365 " return this;\n" 457 " return this;\n"
366 "}\n"); 458 "}\n");
367 } 459 }
368 } 460 }
369 461
370 void ImmutableMapFieldGenerator:: 462 void ImmutableMapFieldGenerator::
463 GenerateMapGetters(io::Printer* printer) const {
464 printer->Print(
465 variables_,
466 "$deprecation$\n"
467 "public int get$capitalized_name$Count() {\n"
468 " return internalGet$capitalized_name$().getMap().size();\n"
469 "}\n");
470 WriteFieldDocComment(printer, descriptor_);
471 printer->Print(
472 variables_,
473 "$deprecation$\n"
474 "public boolean contains$capitalized_name$(\n"
475 " $key_type$ key) {\n"
476 " $key_null_check$\n"
477 " return internalGet$capitalized_name$().getMap().containsKey(key);\n"
478 "}\n");
479 if (GetJavaType(ValueField(descriptor_)) == JAVATYPE_ENUM) {
480 printer->Print(
481 variables_,
482 "/**\n"
483 " * Use {@link #get$capitalized_name$Map()} instead.\n"
484 " */\n"
485 "@java.lang.Deprecated\n"
486 "public java.util.Map<$boxed_key_type$, $value_enum_type$>\n"
487 "get$capitalized_name$() {\n"
488 " return get$capitalized_name$Map();\n"
489 "}\n");
490 WriteFieldDocComment(printer, descriptor_);
491 printer->Print(
492 variables_,
493 "$deprecation$\n"
494 "public java.util.Map<$boxed_key_type$, $value_enum_type$>\n"
495 "get$capitalized_name$Map() {\n"
496 " return new com.google.protobuf.Internal.MapAdapter<\n"
497 " $boxed_key_type$, $value_enum_type$, java.lang.Integer>(\n"
498 " internalGet$capitalized_name$().getMap(),\n"
499 " $name$ValueConverter);\n"
500 "}\n");
501 WriteFieldDocComment(printer, descriptor_);
502 printer->Print(
503 variables_,
504 "$deprecation$\n"
505 "public $value_enum_type$ get$capitalized_name$OrDefault(\n"
506 " $key_type$ key,\n"
507 " $value_enum_type$ defaultValue) {\n"
508 " $key_null_check$\n"
509 " java.util.Map<$boxed_key_type$, $boxed_value_type$> map =\n"
510 " internalGet$capitalized_name$().getMap();\n"
511 " return map.containsKey(key)\n"
512 " ? $name$ValueConverter.doForward(map.get(key))\n"
513 " : defaultValue;\n"
514 "}\n");
515 WriteFieldDocComment(printer, descriptor_);
516 printer->Print(
517 variables_,
518 "$deprecation$\n"
519 "public $value_enum_type$ get$capitalized_name$OrThrow(\n"
520 " $key_type$ key) {\n"
521 " $key_null_check$\n"
522 " java.util.Map<$boxed_key_type$, $boxed_value_type$> map =\n"
523 " internalGet$capitalized_name$().getMap();\n"
524 " if (!map.containsKey(key)) {\n"
525 " throw new java.lang.IllegalArgumentException();\n"
526 " }\n"
527 " return $name$ValueConverter.doForward(map.get(key));\n"
528 "}\n");
529 if (SupportUnknownEnumValue(descriptor_->file())) {
530 printer->Print(
531 variables_,
532 "/**\n"
533 " * Use {@link #get$capitalized_name$ValueMap()} instead.\n"
534 " */\n"
535 "@java.lang.Deprecated\n"
536 "public java.util.Map<$boxed_key_type$, $boxed_value_type$>\n"
537 "get$capitalized_name$Value() {\n"
538 " return get$capitalized_name$ValueMap();\n"
539 "}\n");
540 WriteFieldDocComment(printer, descriptor_);
541 printer->Print(
542 variables_,
543 "$deprecation$\n"
544 "public java.util.Map<$boxed_key_type$, $boxed_value_type$>\n"
545 "get$capitalized_name$ValueMap() {\n"
546 " return internalGet$capitalized_name$().getMap();\n"
547 "}\n");
548 WriteFieldDocComment(printer, descriptor_);
549 printer->Print(
550 variables_,
551 "$deprecation$\n"
552 "public $value_type$ get$capitalized_name$ValueOrDefault(\n"
553 " $key_type$ key,\n"
554 " $value_type$ defaultValue) {\n"
555 " $key_null_check$\n"
556 " java.util.Map<$boxed_key_type$, $boxed_value_type$> map =\n"
557 " internalGet$capitalized_name$().getMap();\n"
558 " return map.containsKey(key) ? map.get(key) : defaultValue;\n"
559 "}\n");
560 WriteFieldDocComment(printer, descriptor_);
561 printer->Print(
562 variables_,
563 "$deprecation$\n"
564 "public $value_type$ get$capitalized_name$ValueOrThrow(\n"
565 " $key_type$ key) {\n"
566 " $key_null_check$\n"
567 " java.util.Map<$boxed_key_type$, $boxed_value_type$> map =\n"
568 " internalGet$capitalized_name$().getMap();\n"
569 " if (!map.containsKey(key)) {\n"
570 " throw new java.lang.IllegalArgumentException();\n"
571 " }\n"
572 " return map.get(key);\n"
573 "}\n");
574 }
575 } else {
576 printer->Print(
577 variables_,
578 "/**\n"
579 " * Use {@link #get$capitalized_name$Map()} instead.\n"
580 " */\n"
581 "@java.lang.Deprecated\n"
582 "public java.util.Map<$type_parameters$> get$capitalized_name$() {\n"
583 " return get$capitalized_name$Map();\n"
584 "}\n");
585 WriteFieldDocComment(printer, descriptor_);
586 printer->Print(
587 variables_,
588 "$deprecation$\n"
589 "public java.util.Map<$type_parameters$> get$capitalized_name$Map() {\n"
590 " return internalGet$capitalized_name$().getMap();\n"
591 "}\n");
592 WriteFieldDocComment(printer, descriptor_);
593 printer->Print(
594 variables_,
595 "$deprecation$\n"
596 "public $value_type$ get$capitalized_name$OrDefault(\n"
597 " $key_type$ key,\n"
598 " $value_type$ defaultValue) {\n"
599 " $key_null_check$\n"
600 " java.util.Map<$type_parameters$> map =\n"
601 " internalGet$capitalized_name$().getMap();\n"
602 " return map.containsKey(key) ? map.get(key) : defaultValue;\n"
603 "}\n");
604 WriteFieldDocComment(printer, descriptor_);
605 printer->Print(
606 variables_,
607 "$deprecation$\n"
608 "public $value_type$ get$capitalized_name$OrThrow(\n"
609 " $key_type$ key) {\n"
610 " $key_null_check$\n"
611 " java.util.Map<$type_parameters$> map =\n"
612 " internalGet$capitalized_name$().getMap();\n"
613 " if (!map.containsKey(key)) {\n"
614 " throw new java.lang.IllegalArgumentException();\n"
615 " }\n"
616 " return map.get(key);\n"
617 "}\n");
618 }
619 }
620
621 void ImmutableMapFieldGenerator::
371 GenerateFieldBuilderInitializationCode(io::Printer* printer) const { 622 GenerateFieldBuilderInitializationCode(io::Printer* printer) const {
372 // Nothing to initialize. 623 // Nothing to initialize.
373 } 624 }
374 625
375 void ImmutableMapFieldGenerator:: 626 void ImmutableMapFieldGenerator::
376 GenerateInitializationCode(io::Printer* printer) const { 627 GenerateInitializationCode(io::Printer* printer) const {
377 // Nothing to initialize. 628 // Nothing to initialize.
378 } 629 }
379 630
380 void ImmutableMapFieldGenerator:: 631 void ImmutableMapFieldGenerator::
(...skipping 17 matching lines...) Expand all
398 variables_, 649 variables_,
399 "result.$name$_ = internalGet$capitalized_name$();\n" 650 "result.$name$_ = internalGet$capitalized_name$();\n"
400 "result.$name$_.makeImmutable();\n"); 651 "result.$name$_.makeImmutable();\n");
401 } 652 }
402 653
403 void ImmutableMapFieldGenerator:: 654 void ImmutableMapFieldGenerator::
404 GenerateParsingCode(io::Printer* printer) const { 655 GenerateParsingCode(io::Printer* printer) const {
405 printer->Print( 656 printer->Print(
406 variables_, 657 variables_,
407 "if (!$get_mutable_bit_parser$) {\n" 658 "if (!$get_mutable_bit_parser$) {\n"
408 " $name$_ = com.google.protobuf.MapField$lite$.newMapField(\n" 659 " $name$_ = com.google.protobuf.MapField.newMapField(\n"
409 " $map_field_parameter$);\n" 660 " $map_field_parameter$);\n"
410 " $set_mutable_bit_parser$;\n" 661 " $set_mutable_bit_parser$;\n"
411 "}\n"); 662 "}\n");
412 if (!SupportUnknownEnumValue(descriptor_->file()) && 663 if (!SupportUnknownEnumValue(descriptor_->file()) &&
413 GetJavaType(ValueField(descriptor_)) == JAVATYPE_ENUM) { 664 GetJavaType(ValueField(descriptor_)) == JAVATYPE_ENUM) {
414 printer->Print( 665 printer->Print(
415 variables_, 666 variables_,
416 "com.google.protobuf.ByteString bytes = input.readBytes();\n" 667 "com.google.protobuf.ByteString bytes = input.readBytes();\n"
417 "com.google.protobuf.MapEntry$lite$<$type_parameters$>\n" 668 "com.google.protobuf.MapEntry<$type_parameters$>\n"
418 "$name$ = $default_entry$.getParserForType().parseFrom(bytes);\n"); 669 "$name$__ = $default_entry$.getParserForType().parseFrom(bytes);\n");
419 printer->Print( 670 printer->Print(
420 variables_, 671 variables_,
421 "if ($value_enum_type$.forNumber($name$.getValue()) == null) {\n" 672 "if ($value_enum_type$.forNumber($name$__.getValue()) == null) {\n"
422 " unknownFields.mergeLengthDelimitedField($number$, bytes);\n" 673 " unknownFields.mergeLengthDelimitedField($number$, bytes);\n"
423 "} else {\n" 674 "} else {\n"
424 " $name$_.getMutableMap().put($name$.getKey(), $name$.getValue());\n" 675 " $name$_.getMutableMap().put(\n"
676 " $name$__.getKey(), $name$__.getValue());\n"
425 "}\n"); 677 "}\n");
426 } else { 678 } else {
427 printer->Print( 679 printer->Print(
428 variables_, 680 variables_,
429 "com.google.protobuf.MapEntry$lite$<$type_parameters$>\n" 681 "com.google.protobuf.MapEntry<$type_parameters$>\n"
430 "$name$ = input.readMessage(\n" 682 "$name$__ = input.readMessage(\n"
431 " $default_entry$.getParserForType(), extensionRegistry);\n" 683 " $default_entry$.getParserForType(), extensionRegistry);\n"
432 "$name$_.getMutableMap().put($name$.getKey(), $name$.getValue());\n"); 684 "$name$_.getMutableMap().put(\n"
685 " $name$__.getKey(), $name$__.getValue());\n");
433 } 686 }
434 } 687 }
435 688
436 void ImmutableMapFieldGenerator:: 689 void ImmutableMapFieldGenerator::
437 GenerateParsingDoneCode(io::Printer* printer) const { 690 GenerateParsingDoneCode(io::Printer* printer) const {
438 // Nothing to do here. 691 // Nothing to do here.
439 } 692 }
440 693
441 void ImmutableMapFieldGenerator:: 694 void ImmutableMapFieldGenerator::
442 GenerateSerializationCode(io::Printer* printer) const { 695 GenerateSerializationCode(io::Printer* printer) const {
443 printer->Print( 696 printer->Print(
444 variables_, 697 variables_,
445 "for (java.util.Map.Entry<$type_parameters$> entry\n" 698 "com.google.protobuf.GeneratedMessage$ver$\n"
446 " : internalGet$capitalized_name$().getMap().entrySet()) {\n" 699 " .serialize$short_key_type$MapTo(\n"
447 " com.google.protobuf.MapEntry$lite$<$type_parameters$>\n" 700 " output,\n"
448 " $name$ = $default_entry$.newBuilderForType()\n" 701 " internalGet$capitalized_name$(),\n"
449 " .setKey(entry.getKey())\n" 702 " $default_entry$,\n"
450 " .setValue(entry.getValue())\n" 703 " $number$);\n");
451 " .build();\n"
452 " output.writeMessage($number$, $name$);\n"
453 "}\n");
454 } 704 }
455 705
456 void ImmutableMapFieldGenerator:: 706 void ImmutableMapFieldGenerator::
457 GenerateSerializedSizeCode(io::Printer* printer) const { 707 GenerateSerializedSizeCode(io::Printer* printer) const {
458 printer->Print( 708 printer->Print(
459 variables_, 709 variables_,
460 "for (java.util.Map.Entry<$type_parameters$> entry\n" 710 "for (java.util.Map.Entry<$type_parameters$> entry\n"
461 " : internalGet$capitalized_name$().getMap().entrySet()) {\n" 711 " : internalGet$capitalized_name$().getMap().entrySet()) {\n"
462 " com.google.protobuf.MapEntry$lite$<$type_parameters$>\n" 712 " com.google.protobuf.MapEntry<$type_parameters$>\n"
463 " $name$ = $default_entry$.newBuilderForType()\n" 713 " $name$__ = $default_entry$.newBuilderForType()\n"
464 " .setKey(entry.getKey())\n" 714 " .setKey(entry.getKey())\n"
465 " .setValue(entry.getValue())\n" 715 " .setValue(entry.getValue())\n"
466 " .build();\n" 716 " .build();\n"
467 " size += com.google.protobuf.CodedOutputStream\n" 717 " size += com.google.protobuf.CodedOutputStream\n"
468 " .computeMessageSize($number$, $name$);\n" 718 " .computeMessageSize($number$, $name$__);\n"
469 "}\n"); 719 "}\n");
470 } 720 }
471 721
472 void ImmutableMapFieldGenerator:: 722 void ImmutableMapFieldGenerator::
473 GenerateEqualsCode(io::Printer* printer) const { 723 GenerateEqualsCode(io::Printer* printer) const {
474 printer->Print( 724 printer->Print(
475 variables_, 725 variables_,
476 "result = result && internalGet$capitalized_name$().equals(\n" 726 "result = result && internalGet$capitalized_name$().equals(\n"
477 " other.internalGet$capitalized_name$());\n"); 727 " other.internalGet$capitalized_name$());\n");
478 } 728 }
479 729
480 void ImmutableMapFieldGenerator:: 730 void ImmutableMapFieldGenerator::
481 GenerateHashCode(io::Printer* printer) const { 731 GenerateHashCode(io::Printer* printer) const {
482 printer->Print( 732 printer->Print(
483 variables_, 733 variables_,
484 "if (!internalGet$capitalized_name$().getMap().isEmpty()) {\n" 734 "if (!internalGet$capitalized_name$().getMap().isEmpty()) {\n"
485 " hash = (37 * hash) + $constant_name$;\n" 735 " hash = (37 * hash) + $constant_name$;\n"
486 " hash = (53 * hash) + internalGet$capitalized_name$().hashCode();\n" 736 " hash = (53 * hash) + internalGet$capitalized_name$().hashCode();\n"
487 "}\n"); 737 "}\n");
488 } 738 }
489 739
490 string ImmutableMapFieldGenerator::GetBoxedType() const { 740 string ImmutableMapFieldGenerator::GetBoxedType() const {
491 return name_resolver_->GetImmutableClassName(descriptor_->message_type()); 741 return name_resolver_->GetImmutableClassName(descriptor_->message_type());
492 } 742 }
493 743
494 } // namespace java 744 } // namespace java
495 } // namespace compiler 745 } // namespace compiler
496 } // namespace protobuf 746 } // namespace protobuf
497 } // namespace google 747 } // namespace google
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698