diff options
author | Feng Xiao <xfxyjwf@gmail.com> | 2016-07-12 16:09:52 -0700 |
---|---|---|
committer | Feng Xiao <xfxyjwf@gmail.com> | 2016-07-12 16:09:52 -0700 |
commit | 35271766fb6ddcf5bf7412f38f22e6fe64526643 (patch) | |
tree | da1e8381363cc501e25324955544e1bb99674dda /src/google/protobuf/compiler/java/java_message.cc | |
parent | 70c1ac756d3cd8fa04725f82f0ad1a30404c3bb3 (diff) | |
download | protobuf-3.0.0-pre.tar.gz protobuf-3.0.0-pre.tar.bz2 protobuf-3.0.0-pre.zip |
Versioning Java GeneratedMessage.3.0.0-pre
Starting from 3.0.0 release, generated Java code will subclass
GeneratedMessageV3 and when we need to make a change to the
interface between generated code and GeneratedMessageV3, we
will create another versioned GeneratedMessageV3_1 and so on.
Change-Id: I178c9671beb78ef33901a133caaa5c765433126e
Diffstat (limited to 'src/google/protobuf/compiler/java/java_message.cc')
-rw-r--r-- | src/google/protobuf/compiler/java/java_message.cc | 62 |
1 files changed, 36 insertions, 26 deletions
diff --git a/src/google/protobuf/compiler/java/java_message.cc b/src/google/protobuf/compiler/java/java_message.cc index d55a9849..6c80d070 100644 --- a/src/google/protobuf/compiler/java/java_message.cc +++ b/src/google/protobuf/compiler/java/java_message.cc @@ -205,9 +205,10 @@ GenerateFieldAccessorTable(io::Printer* printer, int* bytecode_estimate) { } else { vars["final"] = ""; } + vars["ver"] = GeneratedCodeVersionSuffix(); printer->Print(vars, "$private$static $final$\n" - " com.google.protobuf.GeneratedMessage.FieldAccessorTable\n" + " com.google.protobuf.GeneratedMessage$ver$.FieldAccessorTable\n" " internal_$identifier$_fieldAccessorTable;\n"); // 6 bytes per field and oneof @@ -220,11 +221,11 @@ GenerateFieldAccessorTableInitializer(io::Printer* printer) { int bytecode_estimate = 10; printer->Print( "internal_$identifier$_fieldAccessorTable = new\n" - " com.google.protobuf.GeneratedMessage.FieldAccessorTable(\n" + " com.google.protobuf.GeneratedMessage$ver$.FieldAccessorTable(\n" " internal_$identifier$_descriptor,\n" " new java.lang.String[] { ", - "identifier", - UniqueFileScopeIdentifier(descriptor_)); + "identifier", UniqueFileScopeIdentifier(descriptor_), + "ver", GeneratedCodeVersionSuffix()); for (int i = 0; i < descriptor_->field_count(); i++) { const FieldDescriptor* field = descriptor_->field(i); const FieldGeneratorInfo* info = context_->GetFieldGeneratorInfo(field); @@ -254,11 +255,11 @@ void ImmutableMessageGenerator::GenerateInterface(io::Printer* printer) { printer->Print( "public interface $classname$OrBuilder$idend$ extends\n" " $extra_interfaces$\n" - " com.google.protobuf.GeneratedMessage.\n" + " com.google.protobuf.GeneratedMessage$ver$.\n" " ExtendableMessageOrBuilder<$classname$> {\n", "extra_interfaces", ExtraMessageOrBuilderInterfaces(descriptor_), "classname", descriptor_->name(), - "idend", ""); + "idend", "", "ver", GeneratedCodeVersionSuffix()); } else { printer->Print( "public interface $classname$OrBuilder$idend$ extends\n" @@ -302,6 +303,7 @@ void ImmutableMessageGenerator::Generate(io::Printer* printer) { variables["static"] = is_own_file ? " " : " static "; variables["classname"] = descriptor_->name(); variables["extra_interfaces"] = ExtraMessageInterfaces(descriptor_); + variables["ver"] = GeneratedCodeVersionSuffix(); WriteMessageDocComment(printer, descriptor_); MaybePrintGeneratedAnnotation(context_, printer, descriptor_, @@ -315,22 +317,25 @@ void ImmutableMessageGenerator::Generate(io::Printer* printer) { printer->Annotate("classname", descriptor_); printer->Print( variables, - " com.google.protobuf.GeneratedMessage.ExtendableMessage<\n" + " com.google.protobuf.GeneratedMessage$ver$.ExtendableMessage<\n" " $classname$> implements\n" " $extra_interfaces$\n" " $classname$OrBuilder {\n"); builder_type = strings::Substitute( - "com.google.protobuf.GeneratedMessage.ExtendableBuilder<$0, ?>", - name_resolver_->GetImmutableClassName(descriptor_)); + "com.google.protobuf.GeneratedMessage$1.ExtendableBuilder<$0, ?>", + name_resolver_->GetImmutableClassName(descriptor_), + GeneratedCodeVersionSuffix()); } else { printer->Print(variables, "public $static$final class $classname$ extends\n"); printer->Annotate("classname", descriptor_); printer->Print(variables, - " com.google.protobuf.GeneratedMessage implements\n" + " com.google.protobuf.GeneratedMessage$ver$ implements\n" " $extra_interfaces$\n" " $classname$OrBuilder {\n"); - builder_type = "com.google.protobuf.GeneratedMessage.Builder<?>"; + builder_type = strings::Substitute( + "com.google.protobuf.GeneratedMessage$0.Builder<?>", + GeneratedCodeVersionSuffix()); } printer->Indent(); // Using builder_type, instead of Builder, prevents the Builder class from @@ -581,16 +586,18 @@ GenerateMessageSerializationMethods(io::Printer* printer) { if (descriptor_->extension_range_count() > 0) { if (descriptor_->options().message_set_wire_format()) { printer->Print( - "com.google.protobuf.GeneratedMessage\n" + "com.google.protobuf.GeneratedMessage$ver$\n" " .ExtendableMessage<$classname$>.ExtensionWriter\n" " extensionWriter = newMessageSetExtensionWriter();\n", - "classname", name_resolver_->GetImmutableClassName(descriptor_)); + "classname", name_resolver_->GetImmutableClassName(descriptor_), + "ver", GeneratedCodeVersionSuffix()); } else { printer->Print( - "com.google.protobuf.GeneratedMessage\n" + "com.google.protobuf.GeneratedMessage$ver$\n" " .ExtendableMessage<$classname$>.ExtensionWriter\n" " extensionWriter = newExtensionWriter();\n", - "classname", name_resolver_->GetImmutableClassName(descriptor_)); + "classname", name_resolver_->GetImmutableClassName(descriptor_), + "ver", GeneratedCodeVersionSuffix()); } } @@ -694,43 +701,44 @@ GenerateParseFromMethods(io::Printer* printer) { "}\n" "public static $classname$ parseFrom(java.io.InputStream input)\n" " throws java.io.IOException {\n" - " return com.google.protobuf.GeneratedMessage\n" + " return com.google.protobuf.GeneratedMessage$ver$\n" " .parseWithIOException(PARSER, input);\n" "}\n" "public static $classname$ parseFrom(\n" " java.io.InputStream input,\n" " com.google.protobuf.ExtensionRegistryLite extensionRegistry)\n" " throws java.io.IOException {\n" - " return com.google.protobuf.GeneratedMessage\n" + " return com.google.protobuf.GeneratedMessage$ver$\n" " .parseWithIOException(PARSER, input, extensionRegistry);\n" "}\n" "public static $classname$ parseDelimitedFrom(java.io.InputStream input)\n" " throws java.io.IOException {\n" - " return com.google.protobuf.GeneratedMessage\n" + " return com.google.protobuf.GeneratedMessage$ver$\n" " .parseDelimitedWithIOException(PARSER, input);\n" "}\n" "public static $classname$ parseDelimitedFrom(\n" " java.io.InputStream input,\n" " com.google.protobuf.ExtensionRegistryLite extensionRegistry)\n" " throws java.io.IOException {\n" - " return com.google.protobuf.GeneratedMessage\n" + " return com.google.protobuf.GeneratedMessage$ver$\n" " .parseDelimitedWithIOException(PARSER, input, extensionRegistry);\n" "}\n" "public static $classname$ parseFrom(\n" " com.google.protobuf.CodedInputStream input)\n" " throws java.io.IOException {\n" - " return com.google.protobuf.GeneratedMessage\n" + " return com.google.protobuf.GeneratedMessage$ver$\n" " .parseWithIOException(PARSER, input);\n" "}\n" "public static $classname$ parseFrom(\n" " com.google.protobuf.CodedInputStream input,\n" " com.google.protobuf.ExtensionRegistryLite extensionRegistry)\n" " throws java.io.IOException {\n" - " return com.google.protobuf.GeneratedMessage\n" + " return com.google.protobuf.GeneratedMessage$ver$\n" " .parseWithIOException(PARSER, input, extensionRegistry);\n" "}\n" "\n", - "classname", name_resolver_->GetImmutableClassName(descriptor_)); + "classname", name_resolver_->GetImmutableClassName(descriptor_), + "ver", GeneratedCodeVersionSuffix()); } void ImmutableMessageGenerator::GenerateSerializeOneField( @@ -769,10 +777,11 @@ void ImmutableMessageGenerator::GenerateBuilder(io::Printer* printer) { printer->Print( "@java.lang.Override\n" "protected Builder newBuilderForType(\n" - " com.google.protobuf.GeneratedMessage.BuilderParent parent) {\n" + " com.google.protobuf.GeneratedMessage$ver$.BuilderParent parent) {\n" " Builder builder = new Builder(parent);\n" " return builder;\n" - "}\n"); + "}\n", + "ver", GeneratedCodeVersionSuffix()); MessageBuilderGenerator builderGenerator(descriptor_, context_); builderGenerator.Generate(printer); @@ -826,7 +835,7 @@ GenerateDescriptorMethods(io::Printer* printer) { "}\n"); } printer->Print( - "protected com.google.protobuf.GeneratedMessage.FieldAccessorTable\n" + "protected com.google.protobuf.GeneratedMessage$ver$.FieldAccessorTable\n" " internalGetFieldAccessorTable() {\n" " return $fileclass$.internal_$identifier$_fieldAccessorTable\n" " .ensureFieldAccessorsInitialized(\n" @@ -835,7 +844,8 @@ GenerateDescriptorMethods(io::Printer* printer) { "\n", "classname", name_resolver_->GetImmutableClassName(descriptor_), "fileclass", name_resolver_->GetImmutableClassName(descriptor_->file()), - "identifier", UniqueFileScopeIdentifier(descriptor_)); + "identifier", UniqueFileScopeIdentifier(descriptor_), + "ver", GeneratedCodeVersionSuffix()); } // =================================================================== |