Skip to content

Commit 1e360a4

Browse files
committed
Add stubs for GeneratedMessageV3, RepeatedFieldBuilderV3, SingleFieldBuilderV3 for compatibility with older <4.26.x gencode.
These classes are deprecated and will be removed in the next breaking change. Users should update gencode to >= 4.26.x which uses GeneratedMessage instead of GeneratedMessageV3. Tested with //compatibility:java_conformance_v3.25.0 which builds the runtime against 3.25.0 gencode. PiperOrigin-RevId: 644136172
1 parent 9cfb59b commit 1e360a4

File tree

5 files changed

+154
-5
lines changed

5 files changed

+154
-5
lines changed

.github/workflows/test_java.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,19 +22,19 @@ jobs:
2222
image: us-docker.pkg.dev/protobuf-build/containers/test/linux/java:8-1fdbb997433cb22c1e49ef75ad374a8d6bb88702
2323
# TODO: b/318555165 - enable the layering check. Currently it does
2424
# not work correctly with the toolchain in this Docker image.
25-
targets: //java/... //java/internal:java_version --features=-layering_check
25+
targets: //java/... //java/internal:java_version //compatibility/... --features=-layering_check
2626
- name: OpenJDK 11
2727
version: '11'
2828
image: us-docker.pkg.dev/protobuf-build/containers/test/linux/java:11-1fdbb997433cb22c1e49ef75ad374a8d6bb88702
29-
targets: //java/... //java/internal:java_version
29+
targets: //java/... //java/internal:java_version //compatibility/...
3030
- name: OpenJDK 17
3131
version: '17'
3232
image: us-docker.pkg.dev/protobuf-build/containers/test/linux/java:17-1fdbb997433cb22c1e49ef75ad374a8d6bb88702
33-
targets: //java/... //java/internal:java_version
33+
targets: //java/... //java/internal:java_version //compatibility/...
3434
- name: aarch64
3535
version: 'aarch64'
3636
image: us-docker.pkg.dev/protobuf-build/containers/test/linux/emulation:aarch64-63dd26c0c7a808d92673a3e52e848189d4ab0f17
37-
targets: //java/... //src/google/protobuf/compiler:protoc_aarch64_test
37+
targets: //java/... //compatibility/... //src/google/protobuf/compiler:protoc_aarch64_test
3838

3939
name: Linux ${{ matrix.name }}
4040
runs-on: ubuntu-latest

compatibility/BUILD.bazel

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,5 +16,4 @@ java_runtime_conformance(
1616
java_runtime_conformance(
1717
name = "java_conformance_v3.25.0",
1818
gencode_version = "3.25.0",
19-
tags = ["manual"],
2019
)
Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
// Protocol Buffers - Google's data interchange format
2+
// Copyright 2008 Google Inc. All rights reserved.
3+
//
4+
// Use of this source code is governed by a BSD-style
5+
// license that can be found in the LICENSE file or at
6+
// https://developers.google.com/open-source/licenses/bsd
7+
8+
package com.google.protobuf;
9+
10+
import java.util.List;
11+
12+
import com.google.protobuf.Descriptors.Descriptor;
13+
import com.google.protobuf.Descriptors.FieldDescriptor;
14+
import com.google.protobuf.Extension.ExtensionType;
15+
import com.google.protobuf.GeneratedMessage.ExtendableMessageOrBuilder;
16+
import com.google.protobuf.GeneratedMessage.ExtensionDescriptorRetriever;
17+
import com.google.protobuf.GeneratedMessage.FieldAccessorTable;
18+
19+
/**
20+
* Stub for GeneratedMessageV3 wrapping GeneratedMessage for compatibility with older gencode.
21+
*
22+
* @deprecated This class is deprecated, and slated for removal in the next Java breaking change
23+
* (5.x in 2025 Q1). Users should update gencode to >= 4.26.x which uses GeneratedMessage
24+
* instead of GeneratedMessageV3.
25+
*/
26+
@Deprecated
27+
public abstract class GeneratedMessageV3 extends GeneratedMessage {
28+
private static final long serialVersionUID = 1L;
29+
30+
protected GeneratedMessageV3() {
31+
super();
32+
}
33+
34+
protected GeneratedMessageV3(Builder<?> builder) {
35+
super(builder);
36+
}
37+
38+
/**
39+
* Stub for GeneratedMessageV3.ExtendableBuilder wrapping GeneratedMessage.ExtendableBuilder for
40+
* compatibility with older gencode.
41+
*
42+
* @deprecated This class is deprecated, and slated for removal in the next Java breaking change
43+
* (5.x in 2025 Q1). Users should update gencode to >= 4.26.x which uses
44+
* GeneratedMessage.ExtendableBuilder instead of GeneratedMessageV3.ExtendableBuilder.
45+
*/
46+
@Deprecated
47+
public abstract static class ExtendableBuilder<
48+
MessageT extends ExtendableMessage<MessageT>,
49+
BuilderT extends ExtendableBuilder<MessageT, BuilderT>>
50+
extends GeneratedMessage.ExtendableBuilder<MessageT, BuilderT>
51+
implements ExtendableMessageOrBuilder<MessageT> {
52+
protected ExtendableBuilder() {
53+
super();
54+
}
55+
56+
protected ExtendableBuilder(BuilderParent parent) {
57+
super(parent);
58+
}
59+
60+
// Support old gencode override method removed in cl/597677225
61+
public <T> BuilderT setExtension(
62+
final GeneratedMessage.GeneratedExtension<MessageT, T> extension, final T value) {
63+
return setExtension((ExtensionLite<MessageT, T>) extension, value);
64+
}
65+
66+
// Support old gencode override method removed in cl/597677225
67+
public <T> BuilderT setExtension(
68+
final GeneratedMessage.GeneratedExtension<MessageT, List<T>> extension,
69+
final int index,
70+
final T value) {
71+
return setExtension((ExtensionLite<MessageT, List<T>>) extension, index, value);
72+
}
73+
74+
// Support old gencode override method removed in cl/597677225
75+
public <T> BuilderT addExtension(
76+
final GeneratedMessage.GeneratedExtension<MessageT, List<T>> extension, final T value) {
77+
return addExtension((ExtensionLite<MessageT, List<T>>) extension, value);
78+
}
79+
80+
// Support old gencode override method removed in cl/597677225
81+
public <T> BuilderT clearExtension(
82+
final GeneratedMessage.GeneratedExtension<MessageT, T> extension) {
83+
return clearExtension((ExtensionLite<MessageT, T>) extension);
84+
}
85+
}
86+
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
// Protocol Buffers - Google's data interchange format
2+
// Copyright 2008 Google Inc. All rights reserved.
3+
//
4+
// Use of this source code is governed by a BSD-style
5+
// license that can be found in the LICENSE file or at
6+
// https://developers.google.com/open-source/licenses/bsd
7+
8+
package com.google.protobuf;
9+
10+
import java.util.List;
11+
12+
/**
13+
* Stub for RepeatedFieldBuilderV3 wrapping RepeatedFieldBuilder for compatibility with older
14+
* gencode.
15+
*
16+
* @deprecated This class is deprecated, and slated for removal in the next breaking change. Users
17+
* should update gencode to >= 4.26.x which replaces RepeatedFieldBuilderV3 with
18+
* RepeatedFieldBuilder.
19+
*/
20+
@Deprecated
21+
public class RepeatedFieldBuilderV3<
22+
MType extends GeneratedMessage,
23+
BType extends GeneratedMessage.Builder,
24+
IType extends MessageOrBuilder>
25+
extends RepeatedFieldBuilder<MType, BType, IType> {
26+
27+
public RepeatedFieldBuilderV3(
28+
List<MType> messages,
29+
boolean isMessagesListMutable,
30+
GeneratedMessage.BuilderParent parent,
31+
boolean isClean) {
32+
super(messages, isMessagesListMutable, parent, isClean);
33+
}
34+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
// Protocol Buffers - Google's data interchange format
2+
// Copyright 2008 Google Inc. All rights reserved.
3+
//
4+
// Use of this source code is governed by a BSD-style
5+
// license that can be found in the LICENSE file or at
6+
// https://developers.google.com/open-source/licenses/bsd
7+
8+
package com.google.protobuf;
9+
10+
import static com.google.protobuf.Internal.checkNotNull;
11+
12+
/**
13+
* Stub for SingleFieldBuilderV3 wrapping SingleFieldBuilder for compatibility with older gencode.
14+
*
15+
* @deprecated This class is deprecated, and slated for removal in the next breaking change. Users
16+
* should update gencode to >= 4.26.x which replaces SingleFieldBuilderV3 with
17+
* SingleFieldBuilder.
18+
*/
19+
@Deprecated
20+
public class SingleFieldBuilderV3<
21+
MType extends GeneratedMessage,
22+
BType extends GeneratedMessage.Builder,
23+
IType extends MessageOrBuilder>
24+
extends SingleFieldBuilder<MType, BType, IType> {
25+
26+
public SingleFieldBuilderV3(
27+
MType message, GeneratedMessage.BuilderParent parent, boolean isClean) {
28+
super(message, parent, isClean);
29+
}
30+
}

0 commit comments

Comments
 (0)