Skip to content

Commit 3a8d8ea

Browse files
authored
Merge pull request #1787 from xfxyjwf/steppingstone
Fix compatibility issues for the future GeneratedMessageV3 change.
2 parents 0b68255 + 1bce70d commit 3a8d8ea

File tree

2 files changed

+72
-4
lines changed

2 files changed

+72
-4
lines changed

java/core/src/main/java/com/google/protobuf/GeneratedMessage.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -1396,7 +1396,7 @@ public final <Type> BuilderType setExtension(
13961396
return setExtension((ExtensionLite<MessageType, Type>) extension, value);
13971397
}
13981398
/** Set the value of an extension. */
1399-
public final <Type> BuilderType setExtension(
1399+
public <Type> BuilderType setExtension(
14001400
final GeneratedExtension<MessageType, Type> extension, final Type value) {
14011401
return setExtension((ExtensionLite<MessageType, Type>) extension, value);
14021402
}
@@ -1407,7 +1407,7 @@ public final <Type> BuilderType setExtension(
14071407
return setExtension((ExtensionLite<MessageType, List<Type>>) extension, index, value);
14081408
}
14091409
/** Set the value of one element of a repeated extension. */
1410-
public final <Type> BuilderType setExtension(
1410+
public <Type> BuilderType setExtension(
14111411
final GeneratedExtension<MessageType, List<Type>> extension,
14121412
final int index, final Type value) {
14131413
return setExtension((ExtensionLite<MessageType, List<Type>>) extension, index, value);
@@ -1418,7 +1418,7 @@ public final <Type> BuilderType addExtension(
14181418
return addExtension((ExtensionLite<MessageType, List<Type>>) extension, value);
14191419
}
14201420
/** Append a value to a repeated extension. */
1421-
public final <Type> BuilderType addExtension(
1421+
public <Type> BuilderType addExtension(
14221422
final GeneratedExtension<MessageType, List<Type>> extension, final Type value) {
14231423
return addExtension((ExtensionLite<MessageType, List<Type>>) extension, value);
14241424
}
@@ -1428,7 +1428,7 @@ public final <Type> BuilderType clearExtension(
14281428
return clearExtension((ExtensionLite<MessageType, ?>) extension);
14291429
}
14301430
/** Clear an extension. */
1431-
public final <Type> BuilderType clearExtension(
1431+
public <Type> BuilderType clearExtension(
14321432
final GeneratedExtension<MessageType, ?> extension) {
14331433
return clearExtension((ExtensionLite<MessageType, ?>) extension);
14341434
}

src/google/protobuf/compiler/java/java_message_builder.cc

+68
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,18 @@ Generate(io::Printer* printer) {
181181
" return this;\n"
182182
"}\n"
183183
"\n");
184+
} else {
185+
printer->Print(
186+
"public final Builder setUnknownFields(\n"
187+
" final com.google.protobuf.UnknownFieldSet unknownFields) {\n"
188+
" return super.setUnknownFields(unknownFields);\n"
189+
"}\n"
190+
"\n"
191+
"public final Builder mergeUnknownFields(\n"
192+
" final com.google.protobuf.UnknownFieldSet unknownFields) {\n"
193+
" return super.mergeUnknownFields(unknownFields);\n"
194+
"}\n"
195+
"\n");
184196
}
185197

186198
printer->Print(
@@ -438,6 +450,62 @@ GenerateCommonBuilderMethods(io::Printer* printer) {
438450
"\n",
439451
"classname", name_resolver_->GetImmutableClassName(descriptor_));
440452

453+
printer->Print(
454+
"public Builder clone() {\n"
455+
" return (Builder) super.clone();\n"
456+
"}\n"
457+
"public Builder setField(\n"
458+
" com.google.protobuf.Descriptors.FieldDescriptor field,\n"
459+
" Object value) {\n"
460+
" return (Builder) super.setField(field, value);\n"
461+
"}\n"
462+
"public Builder clearField(\n"
463+
" com.google.protobuf.Descriptors.FieldDescriptor field) {\n"
464+
" return (Builder) super.clearField(field);\n"
465+
"}\n"
466+
"public Builder clearOneof(\n"
467+
" com.google.protobuf.Descriptors.OneofDescriptor oneof) {\n"
468+
" return (Builder) super.clearOneof(oneof);\n"
469+
"}\n"
470+
"public Builder setRepeatedField(\n"
471+
" com.google.protobuf.Descriptors.FieldDescriptor field,\n"
472+
" int index, Object value) {\n"
473+
" return (Builder) super.setRepeatedField(field, index, value);\n"
474+
"}\n"
475+
"public Builder addRepeatedField(\n"
476+
" com.google.protobuf.Descriptors.FieldDescriptor field,\n"
477+
" Object value) {\n"
478+
" return (Builder) super.addRepeatedField(field, value);\n"
479+
"}\n");
480+
481+
if (descriptor_->extension_range_count() > 0) {
482+
printer->Print(
483+
"public <Type> Builder setExtension(\n"
484+
" com.google.protobuf.GeneratedMessage.GeneratedExtension<\n"
485+
" $classname$, Type> extension,\n"
486+
" Type value) {\n"
487+
" return (Builder) super.setExtension(extension, value);\n"
488+
"}\n"
489+
"public <Type> Builder setExtension(\n"
490+
" com.google.protobuf.GeneratedMessage.GeneratedExtension<\n"
491+
" $classname$, java.util.List<Type>> extension,\n"
492+
" int index, Type value) {\n"
493+
" return (Builder) super.setExtension(extension, index, value);\n"
494+
"}\n"
495+
"public <Type> Builder addExtension(\n"
496+
" com.google.protobuf.GeneratedMessage.GeneratedExtension<\n"
497+
" $classname$, java.util.List<Type>> extension,\n"
498+
" Type value) {\n"
499+
" return (Builder) super.addExtension(extension, value);\n"
500+
"}\n"
501+
"public <Type> Builder clearExtension(\n"
502+
" com.google.protobuf.GeneratedMessage.GeneratedExtension<\n"
503+
" $classname$, ?> extension) {\n"
504+
" return (Builder) super.clearExtension(extension);\n"
505+
"}\n",
506+
"classname", name_resolver_->GetImmutableClassName(descriptor_));
507+
}
508+
441509
// -----------------------------------------------------------------
442510

443511
if (context_->HasGeneratedMethods(descriptor_)) {

0 commit comments

Comments
 (0)