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