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

Side by Side Diff: third_party/protobuf/src/google/protobuf/compiler/java/java_file.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 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
83 // appended in to the extensions parameter. 83 // appended in to the extensions parameter.
84 // Returns false when there are unknown fields, in which case the data in the 84 // Returns false when there are unknown fields, in which case the data in the
85 // extensions output parameter is not reliable and should be discarded. 85 // extensions output parameter is not reliable and should be discarded.
86 bool CollectExtensions(const Message& message, 86 bool CollectExtensions(const Message& message,
87 FieldDescriptorSet* extensions) { 87 FieldDescriptorSet* extensions) {
88 const Reflection* reflection = message.GetReflection(); 88 const Reflection* reflection = message.GetReflection();
89 89
90 // There are unknown fields that could be extensions, thus this call fails. 90 // There are unknown fields that could be extensions, thus this call fails.
91 if (reflection->GetUnknownFields(message).field_count() > 0) return false; 91 if (reflection->GetUnknownFields(message).field_count() > 0) return false;
92 92
93 std::vector<const FieldDescriptor*> fields; 93 vector<const FieldDescriptor*> fields;
94 reflection->ListFields(message, &fields); 94 reflection->ListFields(message, &fields);
95 95
96 for (int i = 0; i < fields.size(); i++) { 96 for (int i = 0; i < fields.size(); i++) {
97 if (fields[i]->is_extension()) extensions->insert(fields[i]); 97 if (fields[i]->is_extension()) extensions->insert(fields[i]);
98 98
99 if (GetJavaType(fields[i]) == JAVATYPE_MESSAGE) { 99 if (GetJavaType(fields[i]) == JAVATYPE_MESSAGE) {
100 if (fields[i]->is_repeated()) { 100 if (fields[i]->is_repeated()) {
101 int size = reflection->FieldSize(message, fields[i]); 101 int size = reflection->FieldSize(message, fields[i]);
102 for (int j = 0; j < size; j++) { 102 for (int j = 0; j < size; j++) {
103 const Message& sub_message = 103 const Message& sub_message =
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
182 if ((*bytecode_estimate) > bytesPerMethod) { 182 if ((*bytecode_estimate) > bytesPerMethod) {
183 ++(*method_num); 183 ++(*method_num);
184 printer->Print(chain_statement, "method_num", SimpleItoa(*method_num)); 184 printer->Print(chain_statement, "method_num", SimpleItoa(*method_num));
185 printer->Outdent(); 185 printer->Outdent();
186 printer->Print("}\n"); 186 printer->Print("}\n");
187 printer->Print(method_decl, "method_num", SimpleItoa(*method_num)); 187 printer->Print(method_decl, "method_num", SimpleItoa(*method_num));
188 printer->Indent(); 188 printer->Indent();
189 *bytecode_estimate = 0; 189 *bytecode_estimate = 0;
190 } 190 }
191 } 191 }
192
193
192 } // namespace 194 } // namespace
193 195
194 FileGenerator::FileGenerator(const FileDescriptor* file, const Options& options, 196 FileGenerator::FileGenerator(const FileDescriptor* file, bool immutable_api,
195 bool immutable_api) 197 bool enforce_lite)
196 : file_(file), 198 : file_(file),
197 java_package_(FileJavaPackage(file, immutable_api)), 199 java_package_(FileJavaPackage(file, immutable_api)),
198 message_generators_( 200 message_generators_(
199 new google::protobuf::scoped_ptr<MessageGenerator>[file->message_type_ count()]), 201 new google::protobuf::scoped_ptr<MessageGenerator>[file->message_type_ count()]),
200 extension_generators_( 202 extension_generators_(
201 new google::protobuf::scoped_ptr<ExtensionGenerator>[file->extension_c ount()]), 203 new google::protobuf::scoped_ptr<ExtensionGenerator>[file->extension_c ount()]),
202 context_(new Context(file, options)), 204 context_(new Context(file)),
203 name_resolver_(context_->GetNameResolver()), 205 name_resolver_(context_->GetNameResolver()),
204 options_(options),
205 immutable_api_(immutable_api) { 206 immutable_api_(immutable_api) {
206 classname_ = name_resolver_->GetFileClassName(file, immutable_api); 207 classname_ = name_resolver_->GetFileClassName(file, immutable_api);
208 context_->SetEnforceLite(enforce_lite);
207 generator_factory_.reset( 209 generator_factory_.reset(
208 new ImmutableGeneratorFactory(context_.get())); 210 new ImmutableGeneratorFactory(context_.get()));
209 for (int i = 0; i < file_->message_type_count(); ++i) { 211 for (int i = 0; i < file_->message_type_count(); ++i) {
210 message_generators_[i].reset( 212 message_generators_[i].reset(
211 generator_factory_->NewMessageGenerator(file_->message_type(i))); 213 generator_factory_->NewMessageGenerator(file_->message_type(i)));
212 } 214 }
213 for (int i = 0; i < file_->extension_count(); ++i) { 215 for (int i = 0; i < file_->extension_count(); ++i) {
214 extension_generators_[i].reset( 216 extension_generators_[i].reset(
215 generator_factory_->NewExtensionGenerator(file_->extension(i))); 217 generator_factory_->NewExtensionGenerator(file_->extension(i)));
216 } 218 }
(...skipping 27 matching lines...) Expand all
244 "// Generated by the protocol buffer compiler. DO NOT EDIT!\n" 246 "// Generated by the protocol buffer compiler. DO NOT EDIT!\n"
245 "// source: $filename$\n" 247 "// source: $filename$\n"
246 "\n", 248 "\n",
247 "filename", file_->name()); 249 "filename", file_->name());
248 if (!java_package_.empty()) { 250 if (!java_package_.empty()) {
249 printer->Print( 251 printer->Print(
250 "package $package$;\n" 252 "package $package$;\n"
251 "\n", 253 "\n",
252 "package", java_package_); 254 "package", java_package_);
253 } 255 }
254 PrintGeneratedAnnotation(
255 printer, '$', options_.annotate_code ? classname_ + ".java.pb.meta" : "");
256 printer->Print( 256 printer->Print(
257 "public final class $classname$ {\n" 257 "public final class $classname$ {\n"
258 " private $ctor$() {}\n", 258 " private $classname$() {}\n",
259 "classname", classname_, "ctor", classname_); 259 "classname", classname_);
260 printer->Annotate("classname", file_->name());
261 printer->Indent(); 260 printer->Indent();
262 261
263 // ----------------------------------------------------------------- 262 // -----------------------------------------------------------------
264 263
265 printer->Print( 264 printer->Print(
266 "public static void registerAllExtensions(\n" 265 "public static void registerAllExtensions(\n"
267 " com.google.protobuf.ExtensionRegistryLite registry) {\n"); 266 " com.google.protobuf.ExtensionRegistry$lite$ registry) {\n",
267 "lite",
268 HasDescriptorMethods(file_, context_->EnforceLite()) ? "" : "Lite");
268 269
269 printer->Indent(); 270 printer->Indent();
270 271
271 for (int i = 0; i < file_->extension_count(); i++) { 272 for (int i = 0; i < file_->extension_count(); i++) {
272 extension_generators_[i]->GenerateRegistrationCode(printer); 273 extension_generators_[i]->GenerateRegistrationCode(printer);
273 } 274 }
274 275
275 for (int i = 0; i < file_->message_type_count(); i++) { 276 for (int i = 0; i < file_->message_type_count(); i++) {
276 message_generators_[i]->GenerateExtensionRegistrationCode(printer); 277 message_generators_[i]->GenerateExtensionRegistrationCode(printer);
277 } 278 }
278 279
279 printer->Outdent(); 280 printer->Outdent();
280 printer->Print( 281 printer->Print(
281 "}\n"); 282 "}\n");
282 if (HasDescriptorMethods(file_, context_->EnforceLite())) {
283 // Overload registerAllExtensions for the non-lite usage to
284 // redundantly maintain the original signature (this is
285 // redundant because ExtensionRegistryLite now invokes
286 // ExtensionRegistry in the non-lite usage). Intent is
287 // to remove this in the future.
288 printer->Print(
289 "\n"
290 "public static void registerAllExtensions(\n"
291 " com.google.protobuf.ExtensionRegistry registry) {\n"
292 " registerAllExtensions(\n"
293 " (com.google.protobuf.ExtensionRegistryLite) registry);\n"
294 "}\n");
295 }
296 283
297 // ----------------------------------------------------------------- 284 // -----------------------------------------------------------------
298 285
299 if (!MultipleJavaFiles(file_, immutable_api_)) { 286 if (!MultipleJavaFiles(file_, immutable_api_)) {
300 for (int i = 0; i < file_->enum_type_count(); i++) { 287 for (int i = 0; i < file_->enum_type_count(); i++) {
301 if (HasDescriptorMethods(file_, context_->EnforceLite())) { 288 if (HasDescriptorMethods(file_, context_->EnforceLite())) {
302 EnumGenerator(file_->enum_type(i), immutable_api_, context_.get()) 289 EnumGenerator(file_->enum_type(i), immutable_api_, context_.get())
303 .Generate(printer); 290 .Generate(printer);
304 } else { 291 } else {
305 EnumLiteGenerator(file_->enum_type(i), immutable_api_, context_.get()) 292 EnumLiteGenerator(file_->enum_type(i), immutable_api_, context_.get())
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
378 " getDescriptor() {\n" 365 " getDescriptor() {\n"
379 " return descriptor;\n" 366 " return descriptor;\n"
380 "}\n" 367 "}\n"
381 "private static $final$ com.google.protobuf.Descriptors.FileDescriptor\n" 368 "private static $final$ com.google.protobuf.Descriptors.FileDescriptor\n"
382 " descriptor;\n" 369 " descriptor;\n"
383 "static {\n", 370 "static {\n",
384 // TODO(dweis): Mark this as final. 371 // TODO(dweis): Mark this as final.
385 "final", ""); 372 "final", "");
386 printer->Indent(); 373 printer->Indent();
387 374
388 SharedCodeGenerator shared_code_generator(file_, options_); 375 SharedCodeGenerator shared_code_generator(file_);
389 shared_code_generator.GenerateDescriptors(printer); 376 shared_code_generator.GenerateDescriptors(printer);
390 377
391 int bytecode_estimate = 0; 378 int bytecode_estimate = 0;
392 int method_num = 0; 379 int method_num = 0;
393 380
394 for (int i = 0; i < file_->message_type_count(); i++) { 381 for (int i = 0; i < file_->message_type_count(); i++) {
395 bytecode_estimate += message_generators_[i]->GenerateStaticVariableInitializ ers(printer); 382 bytecode_estimate += message_generators_[i]->GenerateStaticVariableInitializ ers(printer);
396 MaybeRestartJavaMethod( 383 MaybeRestartJavaMethod(
397 printer, 384 printer,
398 &bytecode_estimate, &method_num, 385 &bytecode_estimate, &method_num,
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
529 "$dependency$.getDescriptor();\n", 516 "$dependency$.getDescriptor();\n",
530 "dependency", dependency); 517 "dependency", dependency);
531 } 518 }
532 } 519 }
533 520
534 printer->Outdent(); 521 printer->Outdent();
535 printer->Print( 522 printer->Print(
536 "}\n"); 523 "}\n");
537 } 524 }
538 525
539 template <typename GeneratorClass, typename DescriptorClass> 526 template<typename GeneratorClass, typename DescriptorClass>
540 static void GenerateSibling(const string& package_dir, 527 static void GenerateSibling(const string& package_dir,
541 const string& java_package, 528 const string& java_package,
542 const DescriptorClass* descriptor, 529 const DescriptorClass* descriptor,
543 GeneratorContext* context, 530 GeneratorContext* context,
544 std::vector<string>* file_list, bool annotate_code, 531 vector<string>* file_list,
545 std::vector<string>* annotation_list,
546 const string& name_suffix, 532 const string& name_suffix,
547 GeneratorClass* generator, 533 GeneratorClass* generator,
548 void (GeneratorClass::*pfn)(io::Printer* printer)) { 534 void (GeneratorClass::*pfn)(io::Printer* printer)) {
549 string filename = package_dir + descriptor->name() + name_suffix + ".java"; 535 string filename = package_dir + descriptor->name() + name_suffix + ".java";
550 file_list->push_back(filename); 536 file_list->push_back(filename);
551 string info_full_path = filename + ".pb.meta";
552 GeneratedCodeInfo annotations;
553 io::AnnotationProtoCollector<GeneratedCodeInfo> annotation_collector(
554 &annotations);
555 537
556 google::protobuf::scoped_ptr<io::ZeroCopyOutputStream> output(context->Open(fi lename)); 538 google::protobuf::scoped_ptr<io::ZeroCopyOutputStream> output(context->Open(fi lename));
557 io::Printer printer(output.get(), '$', 539 io::Printer printer(output.get(), '$');
558 annotate_code ? &annotation_collector : NULL);
559 540
560 printer.Print( 541 printer.Print(
561 "// Generated by the protocol buffer compiler. DO NOT EDIT!\n" 542 "// Generated by the protocol buffer compiler. DO NOT EDIT!\n"
562 "// source: $filename$\n" 543 "// source: $filename$\n"
563 "\n", 544 "\n",
564 "filename", descriptor->file()->name()); 545 "filename", descriptor->file()->name());
565 if (!java_package.empty()) { 546 if (!java_package.empty()) {
566 printer.Print( 547 printer.Print(
567 "package $package$;\n" 548 "package $package$;\n"
568 "\n", 549 "\n",
569 "package", java_package); 550 "package", java_package);
570 } 551 }
571 552
572 (generator->*pfn)(&printer); 553 (generator->*pfn)(&printer);
573
574 if (annotate_code) {
575 google::protobuf::scoped_ptr<io::ZeroCopyOutputStream> info_output(
576 context->Open(info_full_path));
577 annotations.SerializeToZeroCopyStream(info_output.get());
578 annotation_list->push_back(info_full_path);
579 }
580 } 554 }
581 555
582 void FileGenerator::GenerateSiblings(const string& package_dir, 556 void FileGenerator::GenerateSiblings(const string& package_dir,
583 GeneratorContext* context, 557 GeneratorContext* context,
584 std::vector<string>* file_list, 558 vector<string>* file_list) {
585 std::vector<string>* annotation_list) {
586 if (MultipleJavaFiles(file_, immutable_api_)) { 559 if (MultipleJavaFiles(file_, immutable_api_)) {
587 for (int i = 0; i < file_->enum_type_count(); i++) { 560 for (int i = 0; i < file_->enum_type_count(); i++) {
588 if (HasDescriptorMethods(file_, context_->EnforceLite())) { 561 if (HasDescriptorMethods(file_, context_->EnforceLite())) {
589 EnumGenerator generator(file_->enum_type(i), immutable_api_, 562 EnumGenerator generator(file_->enum_type(i), immutable_api_,
590 context_.get()); 563 context_.get());
591 GenerateSibling<EnumGenerator>( 564 GenerateSibling<EnumGenerator>(package_dir, java_package_,
592 package_dir, java_package_, file_->enum_type(i), context, file_list, 565 file_->enum_type(i),
593 options_.annotate_code, annotation_list, "", &generator, 566 context, file_list, "",
594 &EnumGenerator::Generate); 567 &generator,
568 &EnumGenerator::Generate);
595 } else { 569 } else {
596 EnumLiteGenerator generator(file_->enum_type(i), immutable_api_, 570 EnumLiteGenerator generator(file_->enum_type(i), immutable_api_,
597 context_.get()); 571 context_.get());
598 GenerateSibling<EnumLiteGenerator>( 572 GenerateSibling<EnumLiteGenerator>(package_dir, java_package_,
599 package_dir, java_package_, file_->enum_type(i), context, file_list, 573 file_->enum_type(i),
600 options_.annotate_code, annotation_list, "", &generator, 574 context, file_list, "",
601 &EnumLiteGenerator::Generate); 575 &generator,
576 &EnumLiteGenerator::Generate);
602 } 577 }
603 } 578 }
604 for (int i = 0; i < file_->message_type_count(); i++) { 579 for (int i = 0; i < file_->message_type_count(); i++) {
605 if (immutable_api_) { 580 if (immutable_api_) {
606 GenerateSibling<MessageGenerator>( 581 GenerateSibling<MessageGenerator>(package_dir, java_package_,
607 package_dir, java_package_, file_->message_type(i), context, 582 file_->message_type(i),
608 file_list, options_.annotate_code, annotation_list, "OrBuilder", 583 context, file_list,
609 message_generators_[i].get(), &MessageGenerator::GenerateInterface); 584 "OrBuilder",
585 message_generators_[i].get(),
586 &MessageGenerator::GenerateInterface);
610 } 587 }
611 GenerateSibling<MessageGenerator>( 588 GenerateSibling<MessageGenerator>(package_dir, java_package_,
612 package_dir, java_package_, file_->message_type(i), context, 589 file_->message_type(i),
613 file_list, options_.annotate_code, annotation_list, "", 590 context, file_list, "",
614 message_generators_[i].get(), &MessageGenerator::Generate); 591 message_generators_[i].get(),
592 &MessageGenerator::Generate);
615 } 593 }
616 if (HasGenericServices(file_, context_->EnforceLite())) { 594 if (HasGenericServices(file_, context_->EnforceLite())) {
617 for (int i = 0; i < file_->service_count(); i++) { 595 for (int i = 0; i < file_->service_count(); i++) {
618 google::protobuf::scoped_ptr<ServiceGenerator> generator( 596 google::protobuf::scoped_ptr<ServiceGenerator> generator(
619 generator_factory_->NewServiceGenerator(file_->service(i))); 597 generator_factory_->NewServiceGenerator(file_->service(i)));
620 GenerateSibling<ServiceGenerator>( 598 GenerateSibling<ServiceGenerator>(package_dir, java_package_,
621 package_dir, java_package_, file_->service(i), context, file_list, 599 file_->service(i),
622 options_.annotate_code, annotation_list, "", generator.get(), 600 context, file_list, "",
623 &ServiceGenerator::Generate); 601 generator.get(),
602 &ServiceGenerator::Generate);
624 } 603 }
625 } 604 }
626 } 605 }
627 } 606 }
628 607
629 bool FileGenerator::ShouldIncludeDependency( 608 bool FileGenerator::ShouldIncludeDependency(
630 const FileDescriptor* descriptor, bool immutable_api) { 609 const FileDescriptor* descriptor, bool immutable_api) {
631 return true; 610 return true;
632 } 611 }
633 612
634 } // namespace java 613 } // namespace java
635 } // namespace compiler 614 } // namespace compiler
636 } // namespace protobuf 615 } // namespace protobuf
637 } // namespace google 616 } // namespace google
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698