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