OLD | NEW |
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 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
49 namespace compiler { | 49 namespace compiler { |
50 namespace java { | 50 namespace java { |
51 | 51 |
52 namespace { | 52 namespace { |
53 | 53 |
54 void SetMessageVariables(const FieldDescriptor* descriptor, | 54 void SetMessageVariables(const FieldDescriptor* descriptor, |
55 int messageBitIndex, | 55 int messageBitIndex, |
56 int builderBitIndex, | 56 int builderBitIndex, |
57 const FieldGeneratorInfo* info, | 57 const FieldGeneratorInfo* info, |
58 ClassNameResolver* name_resolver, | 58 ClassNameResolver* name_resolver, |
59 map<string, string>* variables) { | 59 std::map<string, string>* variables) { |
60 SetCommonFieldVariables(descriptor, info, variables); | 60 SetCommonFieldVariables(descriptor, info, variables); |
61 | 61 |
62 (*variables)["type"] = | 62 (*variables)["type"] = |
63 name_resolver->GetImmutableClassName(descriptor->message_type()); | 63 name_resolver->GetImmutableClassName(descriptor->message_type()); |
64 (*variables)["mutable_type"] = | 64 (*variables)["mutable_type"] = |
65 name_resolver->GetMutableClassName(descriptor->message_type()); | 65 name_resolver->GetMutableClassName(descriptor->message_type()); |
66 (*variables)["group_or_message"] = | 66 (*variables)["group_or_message"] = |
67 (GetType(descriptor) == FieldDescriptor::TYPE_GROUP) ? | 67 (GetType(descriptor) == FieldDescriptor::TYPE_GROUP) ? |
68 "Group" : "Message"; | 68 "Group" : "Message"; |
69 // TODO(birdo): Add @deprecated javadoc when generating javadoc is supported | 69 // TODO(birdo): Add @deprecated javadoc when generating javadoc is supported |
70 // by the proto compiler | 70 // by the proto compiler |
71 (*variables)["deprecation"] = descriptor->options().deprecated() | 71 (*variables)["deprecation"] = descriptor->options().deprecated() |
72 ? "@java.lang.Deprecated " : ""; | 72 ? "@java.lang.Deprecated " : ""; |
73 (*variables)["on_changed"] = "onChanged();"; | 73 (*variables)["on_changed"] = "onChanged();"; |
| 74 (*variables)["ver"] = GeneratedCodeVersionSuffix(); |
| 75 (*variables)["get_parser"] = |
| 76 ExposePublicParser(descriptor->message_type()->file()) |
| 77 ? "PARSER" : "parser()"; |
74 | 78 |
75 if (SupportFieldPresence(descriptor->file())) { | 79 if (SupportFieldPresence(descriptor->file())) { |
76 // For singular messages and builders, one bit is used for the hasField bit. | 80 // For singular messages and builders, one bit is used for the hasField bit. |
77 (*variables)["get_has_field_bit_message"] = GenerateGetBit(messageBitIndex); | 81 (*variables)["get_has_field_bit_message"] = GenerateGetBit(messageBitIndex); |
78 (*variables)["get_has_field_bit_builder"] = GenerateGetBit(builderBitIndex); | 82 (*variables)["get_has_field_bit_builder"] = GenerateGetBit(builderBitIndex); |
79 | 83 |
80 // Note that these have a trailing ";". | 84 // Note that these have a trailing ";". |
81 (*variables)["set_has_field_bit_message"] = | 85 (*variables)["set_has_field_bit_message"] = |
82 GenerateSetBit(messageBitIndex) + ";"; | 86 GenerateSetBit(messageBitIndex) + ";"; |
83 (*variables)["set_has_field_bit_builder"] = | 87 (*variables)["set_has_field_bit_builder"] = |
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
245 // demand and then forever delegates to it after creation. | 249 // demand and then forever delegates to it after creation. |
246 | 250 |
247 bool support_field_presence = SupportFieldPresence(descriptor_->file()); | 251 bool support_field_presence = SupportFieldPresence(descriptor_->file()); |
248 | 252 |
249 printer->Print(variables_, | 253 printer->Print(variables_, |
250 "private $type$ $name$_ = null;\n"); | 254 "private $type$ $name$_ = null;\n"); |
251 | 255 |
252 printer->Print(variables_, | 256 printer->Print(variables_, |
253 // If this builder is non-null, it is used and the other fields are | 257 // If this builder is non-null, it is used and the other fields are |
254 // ignored. | 258 // ignored. |
255 "private com.google.protobuf.SingleFieldBuilder<\n" | 259 "private com.google.protobuf.SingleFieldBuilder$ver$<\n" |
256 " $type$, $type$.Builder, $type$OrBuilder> $name$Builder_;" | 260 " $type$, $type$.Builder, $type$OrBuilder> $name$Builder_;" |
257 "\n"); | 261 "\n"); |
258 | 262 |
259 // The comments above the methods below are based on a hypothetical | 263 // The comments above the methods below are based on a hypothetical |
260 // field of type "Field" called "Field". | 264 // field of type "Field" called "Field". |
261 | 265 |
262 // boolean hasField() | 266 // boolean hasField() |
263 WriteFieldDocComment(printer, descriptor_); | 267 WriteFieldDocComment(printer, descriptor_); |
264 if (support_field_presence) { | 268 if (support_field_presence) { |
265 printer->Print(variables_, | 269 printer->Print(variables_, |
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
367 "$deprecation$public $type$OrBuilder get$capitalized_name$OrBuilder() {\n" | 371 "$deprecation$public $type$OrBuilder get$capitalized_name$OrBuilder() {\n" |
368 " if ($name$Builder_ != null) {\n" | 372 " if ($name$Builder_ != null) {\n" |
369 " return $name$Builder_.getMessageOrBuilder();\n" | 373 " return $name$Builder_.getMessageOrBuilder();\n" |
370 " } else {\n" | 374 " } else {\n" |
371 " return $name$_ == null ?\n" | 375 " return $name$_ == null ?\n" |
372 " $type$.getDefaultInstance() : $name$_;\n" | 376 " $type$.getDefaultInstance() : $name$_;\n" |
373 " }\n" | 377 " }\n" |
374 "}\n"); | 378 "}\n"); |
375 WriteFieldDocComment(printer, descriptor_); | 379 WriteFieldDocComment(printer, descriptor_); |
376 printer->Print(variables_, | 380 printer->Print(variables_, |
377 "private com.google.protobuf.SingleFieldBuilder<\n" | 381 "private com.google.protobuf.SingleFieldBuilder$ver$<\n" |
378 " $type$, $type$.Builder, $type$OrBuilder> \n" | 382 " $type$, $type$.Builder, $type$OrBuilder> \n" |
379 " get$capitalized_name$FieldBuilder() {\n" | 383 " get$capitalized_name$FieldBuilder() {\n" |
380 " if ($name$Builder_ == null) {\n" | 384 " if ($name$Builder_ == null) {\n" |
381 " $name$Builder_ = new com.google.protobuf.SingleFieldBuilder<\n" | 385 " $name$Builder_ = new com.google.protobuf.SingleFieldBuilder$ver$<\n" |
382 " $type$, $type$.Builder, $type$OrBuilder>(\n" | 386 " $type$, $type$.Builder, $type$OrBuilder>(\n" |
383 " get$capitalized_name$(),\n" | 387 " get$capitalized_name$(),\n" |
384 " getParentForChildren(),\n" | 388 " getParentForChildren(),\n" |
385 " isClean());\n" | 389 " isClean());\n" |
386 " $name$_ = null;\n" | 390 " $name$_ = null;\n" |
387 " }\n" | 391 " }\n" |
388 " return $name$Builder_;\n" | 392 " return $name$Builder_;\n" |
389 "}\n"); | 393 "}\n"); |
390 } | 394 } |
391 | 395 |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
444 void ImmutableMessageFieldGenerator:: | 448 void ImmutableMessageFieldGenerator:: |
445 GenerateParsingCode(io::Printer* printer) const { | 449 GenerateParsingCode(io::Printer* printer) const { |
446 printer->Print(variables_, | 450 printer->Print(variables_, |
447 "$type$.Builder subBuilder = null;\n" | 451 "$type$.Builder subBuilder = null;\n" |
448 "if ($is_field_present_message$) {\n" | 452 "if ($is_field_present_message$) {\n" |
449 " subBuilder = $name$_.toBuilder();\n" | 453 " subBuilder = $name$_.toBuilder();\n" |
450 "}\n"); | 454 "}\n"); |
451 | 455 |
452 if (GetType(descriptor_) == FieldDescriptor::TYPE_GROUP) { | 456 if (GetType(descriptor_) == FieldDescriptor::TYPE_GROUP) { |
453 printer->Print(variables_, | 457 printer->Print(variables_, |
454 "$name$_ = input.readGroup($number$, $type$.parser(),\n" | 458 "$name$_ = input.readGroup($number$, $type$.$get_parser$,\n" |
455 " extensionRegistry);\n"); | 459 " extensionRegistry);\n"); |
456 } else { | 460 } else { |
457 printer->Print(variables_, | 461 printer->Print(variables_, |
458 "$name$_ = input.readMessage($type$.parser(), extensionRegistry);\n"); | 462 "$name$_ = input.readMessage($type$.$get_parser$, extensionRegistry);\n"); |
459 } | 463 } |
460 | 464 |
461 printer->Print(variables_, | 465 printer->Print(variables_, |
462 "if (subBuilder != null) {\n" | 466 "if (subBuilder != null) {\n" |
463 " subBuilder.mergeFrom($name$_);\n" | 467 " subBuilder.mergeFrom($name$_);\n" |
464 " $name$_ = subBuilder.buildPartial();\n" | 468 " $name$_ = subBuilder.buildPartial();\n" |
465 "}\n" | 469 "}\n" |
466 "$set_has_field_bit_message$\n"); | 470 "$set_has_field_bit_message$\n"); |
467 } | 471 } |
468 | 472 |
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
553 } | 557 } |
554 | 558 |
555 void ImmutableMessageOneofFieldGenerator:: | 559 void ImmutableMessageOneofFieldGenerator:: |
556 GenerateBuilderMembers(io::Printer* printer) const { | 560 GenerateBuilderMembers(io::Printer* printer) const { |
557 // When using nested-builders, the code initially works just like the | 561 // When using nested-builders, the code initially works just like the |
558 // non-nested builder case. It only creates a nested builder lazily on | 562 // non-nested builder case. It only creates a nested builder lazily on |
559 // demand and then forever delegates to it after creation. | 563 // demand and then forever delegates to it after creation. |
560 printer->Print(variables_, | 564 printer->Print(variables_, |
561 // If this builder is non-null, it is used and the other fields are | 565 // If this builder is non-null, it is used and the other fields are |
562 // ignored. | 566 // ignored. |
563 "private com.google.protobuf.SingleFieldBuilder<\n" | 567 "private com.google.protobuf.SingleFieldBuilder$ver$<\n" |
564 " $type$, $type$.Builder, $type$OrBuilder> $name$Builder_;" | 568 " $type$, $type$.Builder, $type$OrBuilder> $name$Builder_;" |
565 "\n"); | 569 "\n"); |
566 | 570 |
567 // The comments above the methods below are based on a hypothetical | 571 // The comments above the methods below are based on a hypothetical |
568 // field of type "Field" called "Field". | 572 // field of type "Field" called "Field". |
569 | 573 |
570 if (SupportFieldPresence(descriptor_->file())) { | 574 if (SupportFieldPresence(descriptor_->file())) { |
571 // boolean hasField() | 575 // boolean hasField() |
572 WriteFieldDocComment(printer, descriptor_); | 576 WriteFieldDocComment(printer, descriptor_); |
573 printer->Print(variables_, | 577 printer->Print(variables_, |
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
676 " return $name$Builder_.getMessageOrBuilder();\n" | 680 " return $name$Builder_.getMessageOrBuilder();\n" |
677 " } else {\n" | 681 " } else {\n" |
678 " if ($has_oneof_case_message$) {\n" | 682 " if ($has_oneof_case_message$) {\n" |
679 " return ($type$) $oneof_name$_;\n" | 683 " return ($type$) $oneof_name$_;\n" |
680 " }\n" | 684 " }\n" |
681 " return $type$.getDefaultInstance();\n" | 685 " return $type$.getDefaultInstance();\n" |
682 " }\n" | 686 " }\n" |
683 "}\n"); | 687 "}\n"); |
684 WriteFieldDocComment(printer, descriptor_); | 688 WriteFieldDocComment(printer, descriptor_); |
685 printer->Print(variables_, | 689 printer->Print(variables_, |
686 "private com.google.protobuf.SingleFieldBuilder<\n" | 690 "private com.google.protobuf.SingleFieldBuilder$ver$<\n" |
687 " $type$, $type$.Builder, $type$OrBuilder> \n" | 691 " $type$, $type$.Builder, $type$OrBuilder> \n" |
688 " get$capitalized_name$FieldBuilder() {\n" | 692 " get$capitalized_name$FieldBuilder() {\n" |
689 " if ($name$Builder_ == null) {\n" | 693 " if ($name$Builder_ == null) {\n" |
690 " if (!($has_oneof_case_message$)) {\n" | 694 " if (!($has_oneof_case_message$)) {\n" |
691 " $oneof_name$_ = $type$.getDefaultInstance();\n" | 695 " $oneof_name$_ = $type$.getDefaultInstance();\n" |
692 " }\n" | 696 " }\n" |
693 " $name$Builder_ = new com.google.protobuf.SingleFieldBuilder<\n" | 697 " $name$Builder_ = new com.google.protobuf.SingleFieldBuilder$ver$<\n" |
694 " $type$, $type$.Builder, $type$OrBuilder>(\n" | 698 " $type$, $type$.Builder, $type$OrBuilder>(\n" |
695 " ($type$) $oneof_name$_,\n" | 699 " ($type$) $oneof_name$_,\n" |
696 " getParentForChildren(),\n" | 700 " getParentForChildren(),\n" |
697 " isClean());\n" | 701 " isClean());\n" |
698 " $oneof_name$_ = null;\n" | 702 " $oneof_name$_ = null;\n" |
699 " }\n" | 703 " }\n" |
700 " $set_oneof_case_message$;\n" | 704 " $set_oneof_case_message$;\n" |
701 " $on_changed$;\n" | 705 " $on_changed$;\n" |
702 " return $name$Builder_;\n" | 706 " return $name$Builder_;\n" |
703 "}\n"); | 707 "}\n"); |
(...skipping 24 matching lines...) Expand all Loading... |
728 void ImmutableMessageOneofFieldGenerator:: | 732 void ImmutableMessageOneofFieldGenerator:: |
729 GenerateParsingCode(io::Printer* printer) const { | 733 GenerateParsingCode(io::Printer* printer) const { |
730 printer->Print(variables_, | 734 printer->Print(variables_, |
731 "$type$.Builder subBuilder = null;\n" | 735 "$type$.Builder subBuilder = null;\n" |
732 "if ($has_oneof_case_message$) {\n" | 736 "if ($has_oneof_case_message$) {\n" |
733 " subBuilder = (($type$) $oneof_name$_).toBuilder();\n" | 737 " subBuilder = (($type$) $oneof_name$_).toBuilder();\n" |
734 "}\n"); | 738 "}\n"); |
735 | 739 |
736 if (GetType(descriptor_) == FieldDescriptor::TYPE_GROUP) { | 740 if (GetType(descriptor_) == FieldDescriptor::TYPE_GROUP) { |
737 printer->Print(variables_, | 741 printer->Print(variables_, |
738 "$oneof_name$_ = input.readGroup($number$, $type$.parser(),\n" | 742 "$oneof_name$_ = input.readGroup($number$, $type$.$get_parser$,\n" |
739 " extensionRegistry);\n"); | 743 " extensionRegistry);\n"); |
740 } else { | 744 } else { |
741 printer->Print(variables_, | 745 printer->Print(variables_, |
742 "$oneof_name$_ =\n" | 746 "$oneof_name$_ =\n" |
743 " input.readMessage($type$.parser(), extensionRegistry);\n"); | 747 " input.readMessage($type$.$get_parser$, extensionRegistry);\n"); |
744 } | 748 } |
745 | 749 |
746 printer->Print(variables_, | 750 printer->Print(variables_, |
747 "if (subBuilder != null) {\n" | 751 "if (subBuilder != null) {\n" |
748 " subBuilder.mergeFrom(($type$) $oneof_name$_);\n" | 752 " subBuilder.mergeFrom(($type$) $oneof_name$_);\n" |
749 " $oneof_name$_ = subBuilder.buildPartial();\n" | 753 " $oneof_name$_ = subBuilder.buildPartial();\n" |
750 "}\n"); | 754 "}\n"); |
751 printer->Print(variables_, | 755 printer->Print(variables_, |
752 "$set_oneof_case_message$;\n"); | 756 "$set_oneof_case_message$;\n"); |
753 } | 757 } |
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
913 " if (!$get_mutable_bit_builder$) {\n" | 917 " if (!$get_mutable_bit_builder$) {\n" |
914 " $name$_ = new java.util.ArrayList<$type$>($name$_);\n" | 918 " $name$_ = new java.util.ArrayList<$type$>($name$_);\n" |
915 " $set_mutable_bit_builder$;\n" | 919 " $set_mutable_bit_builder$;\n" |
916 " }\n" | 920 " }\n" |
917 "}\n" | 921 "}\n" |
918 "\n"); | 922 "\n"); |
919 | 923 |
920 printer->Print(variables_, | 924 printer->Print(variables_, |
921 // If this builder is non-null, it is used and the other fields are | 925 // If this builder is non-null, it is used and the other fields are |
922 // ignored. | 926 // ignored. |
923 "private com.google.protobuf.RepeatedFieldBuilder<\n" | 927 "private com.google.protobuf.RepeatedFieldBuilder$ver$<\n" |
924 " $type$, $type$.Builder, $type$OrBuilder> $name$Builder_;\n" | 928 " $type$, $type$.Builder, $type$OrBuilder> $name$Builder_;\n" |
925 "\n"); | 929 "\n"); |
926 | 930 |
927 // The comments above the methods below are based on a hypothetical | 931 // The comments above the methods below are based on a hypothetical |
928 // repeated field of type "Field" called "RepeatedField". | 932 // repeated field of type "Field" called "RepeatedField". |
929 | 933 |
930 // List<Field> getRepeatedFieldList() | 934 // List<Field> getRepeatedFieldList() |
931 WriteFieldDocComment(printer, descriptor_); | 935 WriteFieldDocComment(printer, descriptor_); |
932 PrintNestedBuilderFunction(printer, | 936 PrintNestedBuilderFunction(printer, |
933 "$deprecation$public java.util.List<$type$> get$capitalized_name$List()", | 937 "$deprecation$public java.util.List<$type$> get$capitalized_name$List()", |
(...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1130 " int index) {\n" | 1134 " int index) {\n" |
1131 " return get$capitalized_name$FieldBuilder().addBuilder(\n" | 1135 " return get$capitalized_name$FieldBuilder().addBuilder(\n" |
1132 " index, $type$.getDefaultInstance());\n" | 1136 " index, $type$.getDefaultInstance());\n" |
1133 "}\n"); | 1137 "}\n"); |
1134 WriteFieldDocComment(printer, descriptor_); | 1138 WriteFieldDocComment(printer, descriptor_); |
1135 printer->Print(variables_, | 1139 printer->Print(variables_, |
1136 "$deprecation$public java.util.List<$type$.Builder> \n" | 1140 "$deprecation$public java.util.List<$type$.Builder> \n" |
1137 " get$capitalized_name$BuilderList() {\n" | 1141 " get$capitalized_name$BuilderList() {\n" |
1138 " return get$capitalized_name$FieldBuilder().getBuilderList();\n" | 1142 " return get$capitalized_name$FieldBuilder().getBuilderList();\n" |
1139 "}\n" | 1143 "}\n" |
1140 "private com.google.protobuf.RepeatedFieldBuilder<\n" | 1144 "private com.google.protobuf.RepeatedFieldBuilder$ver$<\n" |
1141 " $type$, $type$.Builder, $type$OrBuilder> \n" | 1145 " $type$, $type$.Builder, $type$OrBuilder> \n" |
1142 " get$capitalized_name$FieldBuilder() {\n" | 1146 " get$capitalized_name$FieldBuilder() {\n" |
1143 " if ($name$Builder_ == null) {\n" | 1147 " if ($name$Builder_ == null) {\n" |
1144 " $name$Builder_ = new com.google.protobuf.RepeatedFieldBuilder<\n" | 1148 " $name$Builder_ = new com.google.protobuf.RepeatedFieldBuilder$ver$<\n" |
1145 " $type$, $type$.Builder, $type$OrBuilder>(\n" | 1149 " $type$, $type$.Builder, $type$OrBuilder>(\n" |
1146 " $name$_,\n" | 1150 " $name$_,\n" |
1147 " $get_mutable_bit_builder$,\n" | 1151 " $get_mutable_bit_builder$,\n" |
1148 " getParentForChildren(),\n" | 1152 " getParentForChildren(),\n" |
1149 " isClean());\n" | 1153 " isClean());\n" |
1150 " $name$_ = null;\n" | 1154 " $name$_ = null;\n" |
1151 " }\n" | 1155 " }\n" |
1152 " return $name$Builder_;\n" | 1156 " return $name$Builder_;\n" |
1153 "}\n"); | 1157 "}\n"); |
1154 } | 1158 } |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1192 " $on_changed$\n" | 1196 " $on_changed$\n" |
1193 "}\n", | 1197 "}\n", |
1194 | 1198 |
1195 "if (!other.$name$_.isEmpty()) {\n" | 1199 "if (!other.$name$_.isEmpty()) {\n" |
1196 " if ($name$Builder_.isEmpty()) {\n" | 1200 " if ($name$Builder_.isEmpty()) {\n" |
1197 " $name$Builder_.dispose();\n" | 1201 " $name$Builder_.dispose();\n" |
1198 " $name$Builder_ = null;\n" | 1202 " $name$Builder_ = null;\n" |
1199 " $name$_ = other.$name$_;\n" | 1203 " $name$_ = other.$name$_;\n" |
1200 " $clear_mutable_bit_builder$;\n" | 1204 " $clear_mutable_bit_builder$;\n" |
1201 " $name$Builder_ = \n" | 1205 " $name$Builder_ = \n" |
1202 " com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?\n" | 1206 " com.google.protobuf.GeneratedMessage$ver$.alwaysUseFieldBuilders ?\n" |
1203 " get$capitalized_name$FieldBuilder() : null;\n" | 1207 " get$capitalized_name$FieldBuilder() : null;\n" |
1204 " } else {\n" | 1208 " } else {\n" |
1205 " $name$Builder_.addAllMessages(other.$name$_);\n" | 1209 " $name$Builder_.addAllMessages(other.$name$_);\n" |
1206 " }\n" | 1210 " }\n" |
1207 "}\n"); | 1211 "}\n"); |
1208 } | 1212 } |
1209 | 1213 |
1210 void RepeatedImmutableMessageFieldGenerator:: | 1214 void RepeatedImmutableMessageFieldGenerator:: |
1211 GenerateBuildingCode(io::Printer* printer) const { | 1215 GenerateBuildingCode(io::Printer* printer) const { |
1212 // The code below (non-nested builder case) ensures that the result has an | 1216 // The code below (non-nested builder case) ensures that the result has an |
(...skipping 12 matching lines...) Expand all Loading... |
1225 void RepeatedImmutableMessageFieldGenerator:: | 1229 void RepeatedImmutableMessageFieldGenerator:: |
1226 GenerateParsingCode(io::Printer* printer) const { | 1230 GenerateParsingCode(io::Printer* printer) const { |
1227 printer->Print(variables_, | 1231 printer->Print(variables_, |
1228 "if (!$get_mutable_bit_parser$) {\n" | 1232 "if (!$get_mutable_bit_parser$) {\n" |
1229 " $name$_ = new java.util.ArrayList<$type$>();\n" | 1233 " $name$_ = new java.util.ArrayList<$type$>();\n" |
1230 " $set_mutable_bit_parser$;\n" | 1234 " $set_mutable_bit_parser$;\n" |
1231 "}\n"); | 1235 "}\n"); |
1232 | 1236 |
1233 if (GetType(descriptor_) == FieldDescriptor::TYPE_GROUP) { | 1237 if (GetType(descriptor_) == FieldDescriptor::TYPE_GROUP) { |
1234 printer->Print(variables_, | 1238 printer->Print(variables_, |
1235 "$name$_.add(input.readGroup($number$, $type$.parser(),\n" | 1239 "$name$_.add(input.readGroup($number$, $type$.$get_parser$,\n" |
1236 " extensionRegistry));\n"); | 1240 " extensionRegistry));\n"); |
1237 } else { | 1241 } else { |
1238 printer->Print(variables_, | 1242 printer->Print(variables_, |
1239 "$name$_.add(input.readMessage($type$.parser(), extensionRegistry));\n"); | 1243 "$name$_.add(\n" |
| 1244 " input.readMessage($type$.$get_parser$, extensionRegistry));\n"); |
1240 } | 1245 } |
1241 } | 1246 } |
1242 | 1247 |
1243 void RepeatedImmutableMessageFieldGenerator:: | 1248 void RepeatedImmutableMessageFieldGenerator:: |
1244 GenerateParsingDoneCode(io::Printer* printer) const { | 1249 GenerateParsingDoneCode(io::Printer* printer) const { |
1245 printer->Print(variables_, | 1250 printer->Print(variables_, |
1246 "if ($get_mutable_bit_parser$) {\n" | 1251 "if ($get_mutable_bit_parser$) {\n" |
1247 " $name$_ = java.util.Collections.unmodifiableList($name$_);\n" | 1252 " $name$_ = java.util.Collections.unmodifiableList($name$_);\n" |
1248 "}\n"); | 1253 "}\n"); |
1249 } | 1254 } |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1282 } | 1287 } |
1283 | 1288 |
1284 string RepeatedImmutableMessageFieldGenerator::GetBoxedType() const { | 1289 string RepeatedImmutableMessageFieldGenerator::GetBoxedType() const { |
1285 return name_resolver_->GetImmutableClassName(descriptor_->message_type()); | 1290 return name_resolver_->GetImmutableClassName(descriptor_->message_type()); |
1286 } | 1291 } |
1287 | 1292 |
1288 } // namespace java | 1293 } // namespace java |
1289 } // namespace compiler | 1294 } // namespace compiler |
1290 } // namespace protobuf | 1295 } // namespace protobuf |
1291 } // namespace google | 1296 } // namespace google |
OLD | NEW |