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

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

Issue 2495533002: third_party/protobuf: Update to HEAD (83d681ee2c) (Closed)
Patch Set: Make chrome settings proto generated file a component 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 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
87 } 87 }
88 88
89 MessageBuilderGenerator::~MessageBuilderGenerator() {} 89 MessageBuilderGenerator::~MessageBuilderGenerator() {}
90 90
91 void MessageBuilderGenerator:: 91 void MessageBuilderGenerator::
92 Generate(io::Printer* printer) { 92 Generate(io::Printer* printer) {
93 WriteMessageDocComment(printer, descriptor_); 93 WriteMessageDocComment(printer, descriptor_);
94 if (descriptor_->extension_range_count() > 0) { 94 if (descriptor_->extension_range_count() > 0) {
95 printer->Print( 95 printer->Print(
96 "public static final class Builder extends\n" 96 "public static final class Builder extends\n"
97 " com.google.protobuf.GeneratedMessage.ExtendableBuilder<\n" 97 " com.google.protobuf.GeneratedMessage$ver$.ExtendableBuilder<\n"
98 " $classname$, Builder> implements\n" 98 " $classname$, Builder> implements\n"
99 " $extra_interfaces$\n" 99 " $extra_interfaces$\n"
100 " $classname$OrBuilder {\n", 100 " $classname$OrBuilder {\n",
101 "classname", name_resolver_->GetImmutableClassName(descriptor_), 101 "classname", name_resolver_->GetImmutableClassName(descriptor_),
102 "extra_interfaces", ExtraBuilderInterfaces(descriptor_)); 102 "extra_interfaces", ExtraBuilderInterfaces(descriptor_),
103 "ver", GeneratedCodeVersionSuffix());
103 } else { 104 } else {
104 printer->Print( 105 printer->Print(
105 "public static final class Builder extends\n" 106 "public static final class Builder extends\n"
106 " com.google.protobuf.GeneratedMessage.Builder<Builder> implements\n" 107 " com.google.protobuf.GeneratedMessage$ver$.Builder<Builder> implements \n"
107 " $extra_interfaces$\n" 108 " $extra_interfaces$\n"
108 " $classname$OrBuilder {\n", 109 " $classname$OrBuilder {\n",
109 "classname", name_resolver_->GetImmutableClassName(descriptor_), 110 "classname", name_resolver_->GetImmutableClassName(descriptor_),
110 "extra_interfaces", ExtraBuilderInterfaces(descriptor_)); 111 "extra_interfaces", ExtraBuilderInterfaces(descriptor_),
112 "ver", GeneratedCodeVersionSuffix());
111 } 113 }
112 printer->Indent(); 114 printer->Indent();
113 115
114 GenerateDescriptorMethods(printer); 116 GenerateDescriptorMethods(printer);
115 GenerateCommonBuilderMethods(printer); 117 GenerateCommonBuilderMethods(printer);
116 118
117 if (context_->HasGeneratedMethods(descriptor_)) { 119 if (context_->HasGeneratedMethods(descriptor_)) {
118 GenerateIsInitialized(printer); 120 GenerateIsInitialized(printer);
119 GenerateBuilderParsingMethods(printer); 121 GenerateBuilderParsingMethods(printer);
120 } 122 }
121 123
122 // oneof 124 // oneof
123 map<string, string> vars; 125 std::map<string, string> vars;
124 for (int i = 0; i < descriptor_->oneof_decl_count(); i++) { 126 for (int i = 0; i < descriptor_->oneof_decl_count(); i++) {
125 vars["oneof_name"] = context_->GetOneofGeneratorInfo( 127 vars["oneof_name"] = context_->GetOneofGeneratorInfo(
126 descriptor_->oneof_decl(i))->name; 128 descriptor_->oneof_decl(i))->name;
127 vars["oneof_capitalized_name"] = context_->GetOneofGeneratorInfo( 129 vars["oneof_capitalized_name"] = context_->GetOneofGeneratorInfo(
128 descriptor_->oneof_decl(i))->capitalized_name; 130 descriptor_->oneof_decl(i))->capitalized_name;
129 vars["oneof_index"] = SimpleItoa(descriptor_->oneof_decl(i)->index()); 131 vars["oneof_index"] = SimpleItoa(descriptor_->oneof_decl(i)->index());
130 // oneofCase_ and oneof_ 132 // oneofCase_ and oneof_
131 printer->Print(vars, 133 printer->Print(vars,
132 "private int $oneof_name$Case_ = 0;\n" 134 "private int $oneof_name$Case_ = 0;\n"
133 "private java.lang.Object $oneof_name$_;\n"); 135 "private java.lang.Object $oneof_name$_;\n");
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
174 "public final Builder setUnknownFields(\n" 176 "public final Builder setUnknownFields(\n"
175 " final com.google.protobuf.UnknownFieldSet unknownFields) {\n" 177 " final com.google.protobuf.UnknownFieldSet unknownFields) {\n"
176 " return this;\n" 178 " return this;\n"
177 "}\n" 179 "}\n"
178 "\n" 180 "\n"
179 "public final Builder mergeUnknownFields(\n" 181 "public final Builder mergeUnknownFields(\n"
180 " final com.google.protobuf.UnknownFieldSet unknownFields) {\n" 182 " final com.google.protobuf.UnknownFieldSet unknownFields) {\n"
181 " return this;\n" 183 " return this;\n"
182 "}\n" 184 "}\n"
183 "\n"); 185 "\n");
186 } else {
187 // Override methods declared in GeneratedMessage to return the concrete
188 // generated type so callsites won't depend on GeneratedMessage. This
189 // is needed to keep binary compatibility when we change generated code
190 // to subclass a different GeneratedMessage class (e.g., in v3.0.0 release
191 // we changed all generated code to subclass GeneratedMessageV3).
192 printer->Print(
193 "public final Builder setUnknownFields(\n"
194 " final com.google.protobuf.UnknownFieldSet unknownFields) {\n"
195 " return super.setUnknownFields(unknownFields);\n"
196 "}\n"
197 "\n"
198 "public final Builder mergeUnknownFields(\n"
199 " final com.google.protobuf.UnknownFieldSet unknownFields) {\n"
200 " return super.mergeUnknownFields(unknownFields);\n"
201 "}\n"
202 "\n");
184 } 203 }
185 204
186 printer->Print( 205 printer->Print(
187 "\n" 206 "\n"
188 "// @@protoc_insertion_point(builder_scope:$full_name$)\n", 207 "// @@protoc_insertion_point(builder_scope:$full_name$)\n",
189 "full_name", descriptor_->full_name()); 208 "full_name", descriptor_->full_name());
190 209
191 printer->Outdent(); 210 printer->Outdent();
192 printer->Print("}\n"); 211 printer->Print("}\n");
193 } 212 }
194 213
195 // =================================================================== 214 // ===================================================================
196 215
197 void MessageBuilderGenerator:: 216 void MessageBuilderGenerator::
198 GenerateDescriptorMethods(io::Printer* printer) { 217 GenerateDescriptorMethods(io::Printer* printer) {
199 if (!descriptor_->options().no_standard_descriptor_accessor()) { 218 if (!descriptor_->options().no_standard_descriptor_accessor()) {
200 printer->Print( 219 printer->Print(
201 "public static final com.google.protobuf.Descriptors.Descriptor\n" 220 "public static final com.google.protobuf.Descriptors.Descriptor\n"
202 " getDescriptor() {\n" 221 " getDescriptor() {\n"
203 " return $fileclass$.internal_$identifier$_descriptor;\n" 222 " return $fileclass$.internal_$identifier$_descriptor;\n"
204 "}\n" 223 "}\n"
205 "\n", 224 "\n",
206 "fileclass", name_resolver_->GetImmutableClassName(descriptor_->file()), 225 "fileclass", name_resolver_->GetImmutableClassName(descriptor_->file()),
207 "identifier", UniqueFileScopeIdentifier(descriptor_)); 226 "identifier", UniqueFileScopeIdentifier(descriptor_));
208 } 227 }
209 vector<const FieldDescriptor*> map_fields; 228 std::vector<const FieldDescriptor*> map_fields;
210 for (int i = 0; i < descriptor_->field_count(); i++) { 229 for (int i = 0; i < descriptor_->field_count(); i++) {
211 const FieldDescriptor* field = descriptor_->field(i); 230 const FieldDescriptor* field = descriptor_->field(i);
212 if (GetJavaType(field) == JAVATYPE_MESSAGE && 231 if (GetJavaType(field) == JAVATYPE_MESSAGE &&
213 IsMapEntry(field->message_type())) { 232 IsMapEntry(field->message_type())) {
214 map_fields.push_back(field); 233 map_fields.push_back(field);
215 } 234 }
216 } 235 }
217 if (!map_fields.empty()) { 236 if (!map_fields.empty()) {
218 printer->Print( 237 printer->Print(
219 "@SuppressWarnings({\"rawtypes\"})\n" 238 "@SuppressWarnings({\"rawtypes\"})\n"
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
261 "default:\n" 280 "default:\n"
262 " throw new RuntimeException(\n" 281 " throw new RuntimeException(\n"
263 " \"Invalid map field number: \" + number);\n"); 282 " \"Invalid map field number: \" + number);\n");
264 printer->Outdent(); 283 printer->Outdent();
265 printer->Outdent(); 284 printer->Outdent();
266 printer->Print( 285 printer->Print(
267 " }\n" 286 " }\n"
268 "}\n"); 287 "}\n");
269 } 288 }
270 printer->Print( 289 printer->Print(
271 "protected com.google.protobuf.GeneratedMessage.FieldAccessorTable\n" 290 "protected com.google.protobuf.GeneratedMessage$ver$.FieldAccessorTable\n"
272 " internalGetFieldAccessorTable() {\n" 291 " internalGetFieldAccessorTable() {\n"
273 " return $fileclass$.internal_$identifier$_fieldAccessorTable\n" 292 " return $fileclass$.internal_$identifier$_fieldAccessorTable\n"
274 " .ensureFieldAccessorsInitialized(\n" 293 " .ensureFieldAccessorsInitialized(\n"
275 " $classname$.class, $classname$.Builder.class);\n" 294 " $classname$.class, $classname$.Builder.class);\n"
276 "}\n" 295 "}\n"
277 "\n", 296 "\n",
278 "classname", name_resolver_->GetImmutableClassName(descriptor_), 297 "classname", name_resolver_->GetImmutableClassName(descriptor_),
279 "fileclass", name_resolver_->GetImmutableClassName(descriptor_->file()), 298 "fileclass", name_resolver_->GetImmutableClassName(descriptor_->file()),
280 "identifier", UniqueFileScopeIdentifier(descriptor_)); 299 "identifier", UniqueFileScopeIdentifier(descriptor_),
300 "ver", GeneratedCodeVersionSuffix());
281 } 301 }
282 302
283 // =================================================================== 303 // ===================================================================
284 304
285 void MessageBuilderGenerator:: 305 void MessageBuilderGenerator::
286 GenerateCommonBuilderMethods(io::Printer* printer) { 306 GenerateCommonBuilderMethods(io::Printer* printer) {
287 printer->Print( 307 printer->Print(
288 "// Construct using $classname$.newBuilder()\n" 308 "// Construct using $classname$.newBuilder()\n"
289 "private Builder() {\n" 309 "private Builder() {\n"
290 " maybeForceBuilderInitialization();\n" 310 " maybeForceBuilderInitialization();\n"
291 "}\n" 311 "}\n"
292 "\n", 312 "\n",
293 "classname", name_resolver_->GetImmutableClassName(descriptor_)); 313 "classname", name_resolver_->GetImmutableClassName(descriptor_));
294 314
295 printer->Print( 315 printer->Print(
296 "private Builder(\n" 316 "private Builder(\n"
297 " com.google.protobuf.GeneratedMessage.BuilderParent parent) {\n" 317 " com.google.protobuf.GeneratedMessage$ver$.BuilderParent parent) {\n"
298 " super(parent);\n" 318 " super(parent);\n"
299 " maybeForceBuilderInitialization();\n" 319 " maybeForceBuilderInitialization();\n"
300 "}\n", 320 "}\n",
301 "classname", name_resolver_->GetImmutableClassName(descriptor_)); 321 "classname", name_resolver_->GetImmutableClassName(descriptor_),
322 "ver", GeneratedCodeVersionSuffix());
302 323
303 printer->Print( 324 printer->Print(
304 "private void maybeForceBuilderInitialization() {\n" 325 "private void maybeForceBuilderInitialization() {\n"
305 " if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {\n"); 326 " if (com.google.protobuf.GeneratedMessage$ver$\n"
327 " .alwaysUseFieldBuilders) {\n",
328 "ver", GeneratedCodeVersionSuffix());
306 329
307 printer->Indent(); 330 printer->Indent();
308 printer->Indent(); 331 printer->Indent();
309 for (int i = 0; i < descriptor_->field_count(); i++) { 332 for (int i = 0; i < descriptor_->field_count(); i++) {
310 if (!descriptor_->field(i)->containing_oneof()) { 333 if (!descriptor_->field(i)->containing_oneof()) {
311 field_generators_.get(descriptor_->field(i)) 334 field_generators_.get(descriptor_->field(i))
312 .GenerateFieldBuilderInitializationCode(printer); 335 .GenerateFieldBuilderInitializationCode(printer);
313 } 336 }
314 } 337 }
315 printer->Outdent(); 338 printer->Outdent();
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
431 454
432 printer->Print( 455 printer->Print(
433 " onBuilt();\n"); 456 " onBuilt();\n");
434 457
435 printer->Print( 458 printer->Print(
436 " return result;\n" 459 " return result;\n"
437 "}\n" 460 "}\n"
438 "\n", 461 "\n",
439 "classname", name_resolver_->GetImmutableClassName(descriptor_)); 462 "classname", name_resolver_->GetImmutableClassName(descriptor_));
440 463
464 // Override methods declared in GeneratedMessage to return the concrete
465 // generated type so callsites won't depend on GeneratedMessage. This
466 // is needed to keep binary compatibility when we change generated code
467 // to subclass a different GeneratedMessage class (e.g., in v3.0.0 release
468 // we changed all generated code to subclass GeneratedMessageV3).
469 printer->Print(
470 "public Builder clone() {\n"
471 " return (Builder) super.clone();\n"
472 "}\n"
473 "public Builder setField(\n"
474 " com.google.protobuf.Descriptors.FieldDescriptor field,\n"
475 " Object value) {\n"
476 " return (Builder) super.setField(field, value);\n"
477 "}\n"
478 "public Builder clearField(\n"
479 " com.google.protobuf.Descriptors.FieldDescriptor field) {\n"
480 " return (Builder) super.clearField(field);\n"
481 "}\n"
482 "public Builder clearOneof(\n"
483 " com.google.protobuf.Descriptors.OneofDescriptor oneof) {\n"
484 " return (Builder) super.clearOneof(oneof);\n"
485 "}\n"
486 "public Builder setRepeatedField(\n"
487 " com.google.protobuf.Descriptors.FieldDescriptor field,\n"
488 " int index, Object value) {\n"
489 " return (Builder) super.setRepeatedField(field, index, value);\n"
490 "}\n"
491 "public Builder addRepeatedField(\n"
492 " com.google.protobuf.Descriptors.FieldDescriptor field,\n"
493 " Object value) {\n"
494 " return (Builder) super.addRepeatedField(field, value);\n"
495 "}\n");
496
497 if (descriptor_->extension_range_count() > 0) {
498 printer->Print(
499 "public <Type> Builder setExtension(\n"
500 " com.google.protobuf.GeneratedMessage.GeneratedExtension<\n"
501 " $classname$, Type> extension,\n"
502 " Type value) {\n"
503 " return (Builder) super.setExtension(extension, value);\n"
504 "}\n"
505 "public <Type> Builder setExtension(\n"
506 " com.google.protobuf.GeneratedMessage.GeneratedExtension<\n"
507 " $classname$, java.util.List<Type>> extension,\n"
508 " int index, Type value) {\n"
509 " return (Builder) super.setExtension(extension, index, value);\n"
510 "}\n"
511 "public <Type> Builder addExtension(\n"
512 " com.google.protobuf.GeneratedMessage.GeneratedExtension<\n"
513 " $classname$, java.util.List<Type>> extension,\n"
514 " Type value) {\n"
515 " return (Builder) super.addExtension(extension, value);\n"
516 "}\n"
517 "public <Type> Builder clearExtension(\n"
518 " com.google.protobuf.GeneratedMessage.GeneratedExtension<\n"
519 " $classname$, ?> extension) {\n"
520 " return (Builder) super.clearExtension(extension);\n"
521 "}\n",
522 "classname", name_resolver_->GetImmutableClassName(descriptor_));
523 }
524
441 // ----------------------------------------------------------------- 525 // -----------------------------------------------------------------
442 526
443 if (context_->HasGeneratedMethods(descriptor_)) { 527 if (context_->HasGeneratedMethods(descriptor_)) {
444 printer->Print( 528 printer->Print(
445 "public Builder mergeFrom(com.google.protobuf.Message other) {\n" 529 "public Builder mergeFrom(com.google.protobuf.Message other) {\n"
446 " if (other instanceof $classname$) {\n" 530 " if (other instanceof $classname$) {\n"
447 " return mergeFrom(($classname$)other);\n" 531 " return mergeFrom(($classname$)other);\n"
448 " } else {\n" 532 " } else {\n"
449 " super.mergeFrom(other);\n" 533 " super.mergeFrom(other);\n"
450 " return this;\n" 534 " return this;\n"
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after
608 printer->Print( 692 printer->Print(
609 " if (!get$name$().isInitialized()) {\n" 693 " if (!get$name$().isInitialized()) {\n"
610 " return false;\n" 694 " return false;\n"
611 " }\n" 695 " }\n"
612 "}\n", 696 "}\n",
613 "name", info->capitalized_name); 697 "name", info->capitalized_name);
614 break; 698 break;
615 case FieldDescriptor::LABEL_REPEATED: 699 case FieldDescriptor::LABEL_REPEATED:
616 if (IsMapEntry(field->message_type())) { 700 if (IsMapEntry(field->message_type())) {
617 printer->Print( 701 printer->Print(
618 "for ($type$ item : get$name$().values()) {\n" 702 "for ($type$ item : get$name$Map().values()) {\n"
619 " if (!item.isInitialized()) {\n" 703 " if (!item.isInitialized()) {\n"
620 " return false;\n" 704 " return false;\n"
621 " }\n" 705 " }\n"
622 "}\n", 706 "}\n",
623 "type", MapValueImmutableClassdName(field->message_type(), 707 "type", MapValueImmutableClassdName(field->message_type(),
624 name_resolver_), 708 name_resolver_),
625 "name", info->capitalized_name); 709 "name", info->capitalized_name);
626 } else { 710 } else {
627 printer->Print( 711 printer->Print(
628 "for (int i = 0; i < get$name$Count(); i++) {\n" 712 "for (int i = 0; i < get$name$Count(); i++) {\n"
(...skipping 24 matching lines...) Expand all
653 "}\n" 737 "}\n"
654 "\n"); 738 "\n");
655 } 739 }
656 740
657 // =================================================================== 741 // ===================================================================
658 742
659 } // namespace java 743 } // namespace java
660 } // namespace compiler 744 } // namespace compiler
661 } // namespace protobuf 745 } // namespace protobuf
662 } // namespace google 746 } // namespace google
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698