| 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 |