diff --git a/.github/workflows/test_java.yml b/.github/workflows/test_java.yml index a9abfacaec0b1..e0cb69558f029 100644 --- a/.github/workflows/test_java.yml +++ b/.github/workflows/test_java.yml @@ -22,19 +22,19 @@ jobs: image: us-docker.pkg.dev/protobuf-build/containers/test/linux/java:8-1fdbb997433cb22c1e49ef75ad374a8d6bb88702 # TODO: b/318555165 - enable the layering check. Currently it does # not work correctly with the toolchain in this Docker image. - targets: //java/... //java/internal:java_version --features=-layering_check + targets: //java/... //java/internal:java_version //compatibility/... --features=-layering_check - name: OpenJDK 11 version: '11' image: us-docker.pkg.dev/protobuf-build/containers/test/linux/java:11-1fdbb997433cb22c1e49ef75ad374a8d6bb88702 - targets: //java/... //java/internal:java_version + targets: //java/... //java/internal:java_version //compatibility/... - name: OpenJDK 17 version: '17' image: us-docker.pkg.dev/protobuf-build/containers/test/linux/java:17-1fdbb997433cb22c1e49ef75ad374a8d6bb88702 - targets: //java/... //java/internal:java_version + targets: //java/... //java/internal:java_version //compatibility/... - name: aarch64 version: 'aarch64' image: us-docker.pkg.dev/protobuf-build/containers/test/linux/emulation:aarch64-63dd26c0c7a808d92673a3e52e848189d4ab0f17 - targets: //java/... //src/google/protobuf/compiler:protoc_aarch64_test + targets: //java/... //compatibility/... //src/google/protobuf/compiler:protoc_aarch64_test name: Linux ${{ matrix.name }} runs-on: ubuntu-latest diff --git a/compatibility/BUILD.bazel b/compatibility/BUILD.bazel index e62cb5b13389f..d55f61956e464 100644 --- a/compatibility/BUILD.bazel +++ b/compatibility/BUILD.bazel @@ -16,5 +16,4 @@ java_runtime_conformance( java_runtime_conformance( name = "java_conformance_v3.25.0", gencode_version = "3.25.0", - tags = ["manual"], ) diff --git a/java/core/src/main/java/com/google/protobuf/GeneratedMessageV3.java b/java/core/src/main/java/com/google/protobuf/GeneratedMessageV3.java new file mode 100644 index 0000000000000..35f0898b76f80 --- /dev/null +++ b/java/core/src/main/java/com/google/protobuf/GeneratedMessageV3.java @@ -0,0 +1,86 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file or at +// https://developers.google.com/open-source/licenses/bsd + +package com.google.protobuf; + +import java.util.List; + +import com.google.protobuf.Descriptors.Descriptor; +import com.google.protobuf.Descriptors.FieldDescriptor; +import com.google.protobuf.Extension.ExtensionType; +import com.google.protobuf.GeneratedMessage.ExtendableMessageOrBuilder; +import com.google.protobuf.GeneratedMessage.ExtensionDescriptorRetriever; +import com.google.protobuf.GeneratedMessage.FieldAccessorTable; + +/** + * Stub for GeneratedMessageV3 wrapping GeneratedMessage for compatibility with older gencode. + * + * @deprecated This class is deprecated, and slated for removal in the next Java breaking change + * (5.x in 2025 Q1). Users should update gencode to >= 4.26.x which uses GeneratedMessage + * instead of GeneratedMessageV3. + */ +@Deprecated +public abstract class GeneratedMessageV3 extends GeneratedMessage { + private static final long serialVersionUID = 1L; + + protected GeneratedMessageV3() { + super(); + } + + protected GeneratedMessageV3(Builder builder) { + super(builder); + } + + /** + * Stub for GeneratedMessageV3.ExtendableBuilder wrapping GeneratedMessage.ExtendableBuilder for + * compatibility with older gencode. + * + * @deprecated This class is deprecated, and slated for removal in the next Java breaking change + * (5.x in 2025 Q1). Users should update gencode to >= 4.26.x which uses + * GeneratedMessage.ExtendableBuilder instead of GeneratedMessageV3.ExtendableBuilder. + */ + @Deprecated + public abstract static class ExtendableBuilder< + MessageT extends ExtendableMessage, + BuilderT extends ExtendableBuilder> + extends GeneratedMessage.ExtendableBuilder + implements ExtendableMessageOrBuilder { + protected ExtendableBuilder() { + super(); + } + + protected ExtendableBuilder(BuilderParent parent) { + super(parent); + } + + // Support old gencode override method removed in cl/597677225 + public BuilderT setExtension( + final GeneratedMessage.GeneratedExtension extension, final T value) { + return setExtension((ExtensionLite) extension, value); + } + + // Support old gencode override method removed in cl/597677225 + public BuilderT setExtension( + final GeneratedMessage.GeneratedExtension> extension, + final int index, + final T value) { + return setExtension((ExtensionLite>) extension, index, value); + } + + // Support old gencode override method removed in cl/597677225 + public BuilderT addExtension( + final GeneratedMessage.GeneratedExtension> extension, final T value) { + return addExtension((ExtensionLite>) extension, value); + } + + // Support old gencode override method removed in cl/597677225 + public BuilderT clearExtension( + final GeneratedMessage.GeneratedExtension extension) { + return clearExtension((ExtensionLite) extension); + } + } +} diff --git a/java/core/src/main/java/com/google/protobuf/RepeatedFieldBuilderV3.java b/java/core/src/main/java/com/google/protobuf/RepeatedFieldBuilderV3.java new file mode 100644 index 0000000000000..ff807586f021b --- /dev/null +++ b/java/core/src/main/java/com/google/protobuf/RepeatedFieldBuilderV3.java @@ -0,0 +1,34 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file or at +// https://developers.google.com/open-source/licenses/bsd + +package com.google.protobuf; + +import java.util.List; + +/** + * Stub for RepeatedFieldBuilderV3 wrapping RepeatedFieldBuilder for compatibility with older + * gencode. + * + * @deprecated This class is deprecated, and slated for removal in the next breaking change. Users + * should update gencode to >= 4.26.x which replaces RepeatedFieldBuilderV3 with + * RepeatedFieldBuilder. + */ +@Deprecated +public class RepeatedFieldBuilderV3< + MType extends GeneratedMessage, + BType extends GeneratedMessage.Builder, + IType extends MessageOrBuilder> + extends RepeatedFieldBuilder { + + public RepeatedFieldBuilderV3( + List messages, + boolean isMessagesListMutable, + GeneratedMessage.BuilderParent parent, + boolean isClean) { + super(messages, isMessagesListMutable, parent, isClean); + } +} diff --git a/java/core/src/main/java/com/google/protobuf/SingleFieldBuilderV3.java b/java/core/src/main/java/com/google/protobuf/SingleFieldBuilderV3.java new file mode 100644 index 0000000000000..b23941174c66a --- /dev/null +++ b/java/core/src/main/java/com/google/protobuf/SingleFieldBuilderV3.java @@ -0,0 +1,30 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file or at +// https://developers.google.com/open-source/licenses/bsd + +package com.google.protobuf; + +import static com.google.protobuf.Internal.checkNotNull; + +/** + * Stub for SingleFieldBuilderV3 wrapping SingleFieldBuilder for compatibility with older gencode. + * + * @deprecated This class is deprecated, and slated for removal in the next breaking change. Users + * should update gencode to >= 4.26.x which replaces SingleFieldBuilderV3 with + * SingleFieldBuilder. + */ +@Deprecated +public class SingleFieldBuilderV3< + MType extends GeneratedMessage, + BType extends GeneratedMessage.Builder, + IType extends MessageOrBuilder> + extends SingleFieldBuilder { + + public SingleFieldBuilderV3( + MType message, GeneratedMessage.BuilderParent parent, boolean isClean) { + super(message, parent, isClean); + } +}