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

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

Issue 2600753002: Reverts third_party/protobuf: Update to HEAD (f52e188fe4) (Closed)
Patch Set: Created 3 years, 12 months 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$ver$.ExtendableBuilder<\n" 97 " com.google.protobuf.GeneratedMessage.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());
104 } else { 103 } else {
105 printer->Print( 104 printer->Print(
106 "public static final class Builder extends\n" 105 "public static final class Builder extends\n"
107 " com.google.protobuf.GeneratedMessage$ver$.Builder<Builder> implements \n" 106 " com.google.protobuf.GeneratedMessage.Builder<Builder> implements\n"
108 " $extra_interfaces$\n" 107 " $extra_interfaces$\n"
109 " $classname$OrBuilder {\n", 108 " $classname$OrBuilder {\n",
110 "classname", name_resolver_->GetImmutableClassName(descriptor_), 109 "classname", name_resolver_->GetImmutableClassName(descriptor_),
111 "extra_interfaces", ExtraBuilderInterfaces(descriptor_), 110 "extra_interfaces", ExtraBuilderInterfaces(descriptor_));
112 "ver", GeneratedCodeVersionSuffix());
113 } 111 }
114 printer->Indent(); 112 printer->Indent();
115 113
116 GenerateDescriptorMethods(printer); 114 GenerateDescriptorMethods(printer);
117 GenerateCommonBuilderMethods(printer); 115 GenerateCommonBuilderMethods(printer);
118 116
119 if (context_->HasGeneratedMethods(descriptor_)) { 117 if (context_->HasGeneratedMethods(descriptor_)) {
120 GenerateIsInitialized(printer); 118 GenerateIsInitialized(printer);
121 GenerateBuilderParsingMethods(printer); 119 GenerateBuilderParsingMethods(printer);
122 } 120 }
123 121
124 // oneof 122 // oneof
125 std::map<string, string> vars; 123 map<string, string> vars;
126 for (int i = 0; i < descriptor_->oneof_decl_count(); i++) { 124 for (int i = 0; i < descriptor_->oneof_decl_count(); i++) {
127 vars["oneof_name"] = context_->GetOneofGeneratorInfo( 125 vars["oneof_name"] = context_->GetOneofGeneratorInfo(
128 descriptor_->oneof_decl(i))->name; 126 descriptor_->oneof_decl(i))->name;
129 vars["oneof_capitalized_name"] = context_->GetOneofGeneratorInfo( 127 vars["oneof_capitalized_name"] = context_->GetOneofGeneratorInfo(
130 descriptor_->oneof_decl(i))->capitalized_name; 128 descriptor_->oneof_decl(i))->capitalized_name;
131 vars["oneof_index"] = SimpleItoa(descriptor_->oneof_decl(i)->index()); 129 vars["oneof_index"] = SimpleItoa(descriptor_->oneof_decl(i)->index());
132 // oneofCase_ and oneof_ 130 // oneofCase_ and oneof_
133 printer->Print(vars, 131 printer->Print(vars,
134 "private int $oneof_name$Case_ = 0;\n" 132 "private int $oneof_name$Case_ = 0;\n"
135 "private java.lang.Object $oneof_name$_;\n"); 133 "private java.lang.Object $oneof_name$_;\n");
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
176 "public final Builder setUnknownFields(\n" 174 "public final Builder setUnknownFields(\n"
177 " final com.google.protobuf.UnknownFieldSet unknownFields) {\n" 175 " final com.google.protobuf.UnknownFieldSet unknownFields) {\n"
178 " return this;\n" 176 " return this;\n"
179 "}\n" 177 "}\n"
180 "\n" 178 "\n"
181 "public final Builder mergeUnknownFields(\n" 179 "public final Builder mergeUnknownFields(\n"
182 " final com.google.protobuf.UnknownFieldSet unknownFields) {\n" 180 " final com.google.protobuf.UnknownFieldSet unknownFields) {\n"
183 " return this;\n" 181 " return this;\n"
184 "}\n" 182 "}\n"
185 "\n"); 183 "\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");
203 } 184 }
204 185
205 printer->Print( 186 printer->Print(
206 "\n" 187 "\n"
207 "// @@protoc_insertion_point(builder_scope:$full_name$)\n", 188 "// @@protoc_insertion_point(builder_scope:$full_name$)\n",
208 "full_name", descriptor_->full_name()); 189 "full_name", descriptor_->full_name());
209 190
210 printer->Outdent(); 191 printer->Outdent();
211 printer->Print("}\n"); 192 printer->Print("}\n");
212 } 193 }
213 194
214 // =================================================================== 195 // ===================================================================
215 196
216 void MessageBuilderGenerator:: 197 void MessageBuilderGenerator::
217 GenerateDescriptorMethods(io::Printer* printer) { 198 GenerateDescriptorMethods(io::Printer* printer) {
218 if (!descriptor_->options().no_standard_descriptor_accessor()) { 199 if (!descriptor_->options().no_standard_descriptor_accessor()) {
219 printer->Print( 200 printer->Print(
220 "public static final com.google.protobuf.Descriptors.Descriptor\n" 201 "public static final com.google.protobuf.Descriptors.Descriptor\n"
221 " getDescriptor() {\n" 202 " getDescriptor() {\n"
222 " return $fileclass$.internal_$identifier$_descriptor;\n" 203 " return $fileclass$.internal_$identifier$_descriptor;\n"
223 "}\n" 204 "}\n"
224 "\n", 205 "\n",
225 "fileclass", name_resolver_->GetImmutableClassName(descriptor_->file()), 206 "fileclass", name_resolver_->GetImmutableClassName(descriptor_->file()),
226 "identifier", UniqueFileScopeIdentifier(descriptor_)); 207 "identifier", UniqueFileScopeIdentifier(descriptor_));
227 } 208 }
228 std::vector<const FieldDescriptor*> map_fields; 209 vector<const FieldDescriptor*> map_fields;
229 for (int i = 0; i < descriptor_->field_count(); i++) { 210 for (int i = 0; i < descriptor_->field_count(); i++) {
230 const FieldDescriptor* field = descriptor_->field(i); 211 const FieldDescriptor* field = descriptor_->field(i);
231 if (GetJavaType(field) == JAVATYPE_MESSAGE && 212 if (GetJavaType(field) == JAVATYPE_MESSAGE &&
232 IsMapEntry(field->message_type())) { 213 IsMapEntry(field->message_type())) {
233 map_fields.push_back(field); 214 map_fields.push_back(field);
234 } 215 }
235 } 216 }
236 if (!map_fields.empty()) { 217 if (!map_fields.empty()) {
237 printer->Print( 218 printer->Print(
238 "@SuppressWarnings({\"rawtypes\"})\n" 219 "@SuppressWarnings({\"rawtypes\"})\n"
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
280 "default:\n" 261 "default:\n"
281 " throw new RuntimeException(\n" 262 " throw new RuntimeException(\n"
282 " \"Invalid map field number: \" + number);\n"); 263 " \"Invalid map field number: \" + number);\n");
283 printer->Outdent(); 264 printer->Outdent();
284 printer->Outdent(); 265 printer->Outdent();
285 printer->Print( 266 printer->Print(
286 " }\n" 267 " }\n"
287 "}\n"); 268 "}\n");
288 } 269 }
289 printer->Print( 270 printer->Print(
290 "protected com.google.protobuf.GeneratedMessage$ver$.FieldAccessorTable\n" 271 "protected com.google.protobuf.GeneratedMessage.FieldAccessorTable\n"
291 " internalGetFieldAccessorTable() {\n" 272 " internalGetFieldAccessorTable() {\n"
292 " return $fileclass$.internal_$identifier$_fieldAccessorTable\n" 273 " return $fileclass$.internal_$identifier$_fieldAccessorTable\n"
293 " .ensureFieldAccessorsInitialized(\n" 274 " .ensureFieldAccessorsInitialized(\n"
294 " $classname$.class, $classname$.Builder.class);\n" 275 " $classname$.class, $classname$.Builder.class);\n"
295 "}\n" 276 "}\n"
296 "\n", 277 "\n",
297 "classname", name_resolver_->GetImmutableClassName(descriptor_), 278 "classname", name_resolver_->GetImmutableClassName(descriptor_),
298 "fileclass", name_resolver_->GetImmutableClassName(descriptor_->file()), 279 "fileclass", name_resolver_->GetImmutableClassName(descriptor_->file()),
299 "identifier", UniqueFileScopeIdentifier(descriptor_), 280 "identifier", UniqueFileScopeIdentifier(descriptor_));
300 "ver", GeneratedCodeVersionSuffix());
301 } 281 }
302 282
303 // =================================================================== 283 // ===================================================================
304 284
305 void MessageBuilderGenerator:: 285 void MessageBuilderGenerator::
306 GenerateCommonBuilderMethods(io::Printer* printer) { 286 GenerateCommonBuilderMethods(io::Printer* printer) {
307 printer->Print( 287 printer->Print(
308 "// Construct using $classname$.newBuilder()\n" 288 "// Construct using $classname$.newBuilder()\n"
309 "private Builder() {\n" 289 "private Builder() {\n"
310 " maybeForceBuilderInitialization();\n" 290 " maybeForceBuilderInitialization();\n"
311 "}\n" 291 "}\n"
312 "\n", 292 "\n",
313 "classname", name_resolver_->GetImmutableClassName(descriptor_)); 293 "classname", name_resolver_->GetImmutableClassName(descriptor_));
314 294
315 printer->Print( 295 printer->Print(
316 "private Builder(\n" 296 "private Builder(\n"
317 " com.google.protobuf.GeneratedMessage$ver$.BuilderParent parent) {\n" 297 " com.google.protobuf.GeneratedMessage.BuilderParent parent) {\n"
318 " super(parent);\n" 298 " super(parent);\n"
319 " maybeForceBuilderInitialization();\n" 299 " maybeForceBuilderInitialization();\n"
320 "}\n", 300 "}\n",
321 "classname", name_resolver_->GetImmutableClassName(descriptor_), 301 "classname", name_resolver_->GetImmutableClassName(descriptor_));
322 "ver", GeneratedCodeVersionSuffix());
323 302
324 printer->Print( 303 printer->Print(
325 "private void maybeForceBuilderInitialization() {\n" 304 "private void maybeForceBuilderInitialization() {\n"
326 " if (com.google.protobuf.GeneratedMessage$ver$\n" 305 " if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {\n");
327 " .alwaysUseFieldBuilders) {\n",
328 "ver", GeneratedCodeVersionSuffix());
329 306
330 printer->Indent(); 307 printer->Indent();
331 printer->Indent(); 308 printer->Indent();
332 for (int i = 0; i < descriptor_->field_count(); i++) { 309 for (int i = 0; i < descriptor_->field_count(); i++) {
333 if (!descriptor_->field(i)->containing_oneof()) { 310 if (!descriptor_->field(i)->containing_oneof()) {
334 field_generators_.get(descriptor_->field(i)) 311 field_generators_.get(descriptor_->field(i))
335 .GenerateFieldBuilderInitializationCode(printer); 312 .GenerateFieldBuilderInitializationCode(printer);
336 } 313 }
337 } 314 }
338 printer->Outdent(); 315 printer->Outdent();
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
454 431
455 printer->Print( 432 printer->Print(
456 " onBuilt();\n"); 433 " onBuilt();\n");
457 434
458 printer->Print( 435 printer->Print(
459 " return result;\n" 436 " return result;\n"
460 "}\n" 437 "}\n"
461 "\n", 438 "\n",
462 "classname", name_resolver_->GetImmutableClassName(descriptor_)); 439 "classname", name_resolver_->GetImmutableClassName(descriptor_));
463 440
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
525 // ----------------------------------------------------------------- 441 // -----------------------------------------------------------------
526 442
527 if (context_->HasGeneratedMethods(descriptor_)) { 443 if (context_->HasGeneratedMethods(descriptor_)) {
528 printer->Print( 444 printer->Print(
529 "public Builder mergeFrom(com.google.protobuf.Message other) {\n" 445 "public Builder mergeFrom(com.google.protobuf.Message other) {\n"
530 " if (other instanceof $classname$) {\n" 446 " if (other instanceof $classname$) {\n"
531 " return mergeFrom(($classname$)other);\n" 447 " return mergeFrom(($classname$)other);\n"
532 " } else {\n" 448 " } else {\n"
533 " super.mergeFrom(other);\n" 449 " super.mergeFrom(other);\n"
534 " return this;\n" 450 " return this;\n"
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after
692 printer->Print( 608 printer->Print(
693 " if (!get$name$().isInitialized()) {\n" 609 " if (!get$name$().isInitialized()) {\n"
694 " return false;\n" 610 " return false;\n"
695 " }\n" 611 " }\n"
696 "}\n", 612 "}\n",
697 "name", info->capitalized_name); 613 "name", info->capitalized_name);
698 break; 614 break;
699 case FieldDescriptor::LABEL_REPEATED: 615 case FieldDescriptor::LABEL_REPEATED:
700 if (IsMapEntry(field->message_type())) { 616 if (IsMapEntry(field->message_type())) {
701 printer->Print( 617 printer->Print(
702 "for ($type$ item : get$name$Map().values()) {\n" 618 "for ($type$ item : get$name$().values()) {\n"
703 " if (!item.isInitialized()) {\n" 619 " if (!item.isInitialized()) {\n"
704 " return false;\n" 620 " return false;\n"
705 " }\n" 621 " }\n"
706 "}\n", 622 "}\n",
707 "type", MapValueImmutableClassdName(field->message_type(), 623 "type", MapValueImmutableClassdName(field->message_type(),
708 name_resolver_), 624 name_resolver_),
709 "name", info->capitalized_name); 625 "name", info->capitalized_name);
710 } else { 626 } else {
711 printer->Print( 627 printer->Print(
712 "for (int i = 0; i < get$name$Count(); i++) {\n" 628 "for (int i = 0; i < get$name$Count(); i++) {\n"
(...skipping 24 matching lines...) Expand all
737 "}\n" 653 "}\n"
738 "\n"); 654 "\n");
739 } 655 }
740 656
741 // =================================================================== 657 // ===================================================================
742 658
743 } // namespace java 659 } // namespace java
744 } // namespace compiler 660 } // namespace compiler
745 } // namespace protobuf 661 } // namespace protobuf
746 } // namespace google 662 } // namespace google
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698