This is an automated email from the ASF dual-hosted git repository.

lostluck pushed a commit to branch timermgr
in repository https://gitbox.apache.org/repos/asf/beam.git

commit c2ff5029195f385c8fb18e21a259ba4571e05d37
Author: Alexey Romanenko <[email protected]>
AuthorDate: Fri Feb 17 17:07:35 2023 +0100

    Deprecate Avro API classes in "sdks/java/core"
---
 CHANGES.md                                                     |  4 +++-
 .../src/main/java/org/apache/beam/sdk/coders/AvroCoder.java    |  5 +++++
 .../main/java/org/apache/beam/sdk/coders/AvroGenericCoder.java | 10 +++++++++-
 .../java/core/src/main/java/org/apache/beam/sdk/io/AvroIO.java |  6 ++++++
 .../main/java/org/apache/beam/sdk/io/AvroSchemaIOProvider.java |  6 ++++++
 .../core/src/main/java/org/apache/beam/sdk/io/AvroSink.java    | 10 +++++++++-
 .../core/src/main/java/org/apache/beam/sdk/io/AvroSource.java  |  5 +++++
 .../java/org/apache/beam/sdk/io/ConstantAvroDestination.java   | 10 +++++++++-
 .../java/org/apache/beam/sdk/io/DynamicAvroDestinations.java   |  6 ++++++
 .../org/apache/beam/sdk/io/SerializableAvroCodecFactory.java   |  7 +++++++
 .../java/org/apache/beam/sdk/schemas/AvroRecordSchema.java     |  6 ++++++
 .../sdk/schemas/io/payloads/AvroPayloadSerializerProvider.java |  8 ++++++++
 .../org/apache/beam/sdk/schemas/utils/AvroByteBuddyUtils.java  |  8 ++++++++
 .../main/java/org/apache/beam/sdk/schemas/utils/AvroUtils.java |  6 ++++++
 sdks/java/extensions/avro/build.gradle                         |  2 +-
 15 files changed, 94 insertions(+), 5 deletions(-)

diff --git a/CHANGES.md b/CHANGES.md
index 69147cdb6b3..8514990fb03 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -92,7 +92,9 @@
 
 ## Deprecations
 
-* X behavior is deprecated and will be removed in X versions 
([#X](https://github.com/apache/beam/issues/X)).
+* Avro related classes are deprecated in module `beam-sdks-java-core` and will 
be eventually removed. Please, migrate to a new module 
`beam-sdks-java-extensions-avro` instead by importing the classes from 
`org.apache.beam.sdk.extensions.avro` package.
+  For the sake of migration simplicity, the relative package path and the 
whole class hierarchy of Avro related classes in new module is preserved the 
same as it was before.
+  For example, import `org.apache.beam.sdk.extensions.avro.coders.AvroCoder` 
class instead of`org.apache.beam.sdk.coders.AvroCoder`. 
([#24749](https://github.com/apache/beam/issues/24749)).
 
 ## Bugfixes
 
diff --git 
a/sdks/java/core/src/main/java/org/apache/beam/sdk/coders/AvroCoder.java 
b/sdks/java/core/src/main/java/org/apache/beam/sdk/coders/AvroCoder.java
index c7b39d5b025..8fa162ecf8e 100644
--- a/sdks/java/core/src/main/java/org/apache/beam/sdk/coders/AvroCoder.java
+++ b/sdks/java/core/src/main/java/org/apache/beam/sdk/coders/AvroCoder.java
@@ -107,10 +107,15 @@ import org.joda.time.DateTimeZone;
  * org.apache.beam.sdk.transforms.GroupByKey} operations.
  *
  * @param <T> the type of elements handled by this coder
+ * @deprecated Avro related classes are deprecated in module 
<code>beam-sdks-java-core</code> and
+ *     will be eventually removed. Please, migrate to a new module <code>
+ *     beam-sdks-java-extensions-avro</code> by importing <code>
+ *     org.apache.beam.sdk.extensions.avro.coders.AvroCoder</code> instead of 
this one.
  */
 @SuppressWarnings({
   "nullness" // TODO(https://github.com/apache/beam/issues/20497)
 })
+@Deprecated
 public class AvroCoder<T> extends CustomCoder<T> {
 
   /**
diff --git 
a/sdks/java/core/src/main/java/org/apache/beam/sdk/coders/AvroGenericCoder.java 
b/sdks/java/core/src/main/java/org/apache/beam/sdk/coders/AvroGenericCoder.java
index be726ccda1c..7d90206ce4c 100644
--- 
a/sdks/java/core/src/main/java/org/apache/beam/sdk/coders/AvroGenericCoder.java
+++ 
b/sdks/java/core/src/main/java/org/apache/beam/sdk/coders/AvroGenericCoder.java
@@ -20,7 +20,15 @@ package org.apache.beam.sdk.coders;
 import org.apache.avro.Schema;
 import org.apache.avro.generic.GenericRecord;
 
-/** AvroCoder specialisation for GenericRecord. */
+/**
+ * AvroCoder specialisation for GenericRecord.
+ *
+ * @deprecated Avro related classes are deprecated in module 
<code>beam-sdks-java-core</code> and
+ *     will be eventually removed. Please, migrate to a new module <code>
+ *     beam-sdks-java-extensions-avro</code> by importing <code>
+ *     org.apache.beam.sdk.extensions.avro.coders.AvroGenericCoder</code> 
instead of this one.
+ */
+@Deprecated
 public class AvroGenericCoder extends AvroCoder<GenericRecord> {
   AvroGenericCoder(Schema schema) {
     super(GenericRecord.class, schema);
diff --git a/sdks/java/core/src/main/java/org/apache/beam/sdk/io/AvroIO.java 
b/sdks/java/core/src/main/java/org/apache/beam/sdk/io/AvroIO.java
index e1a3c8a2912..c8ccf753229 100644
--- a/sdks/java/core/src/main/java/org/apache/beam/sdk/io/AvroIO.java
+++ b/sdks/java/core/src/main/java/org/apache/beam/sdk/io/AvroIO.java
@@ -328,10 +328,16 @@ import org.joda.time.Duration;
  * events.apply("WriteAvros", AvroIO.<Integer>writeCustomTypeToGenericRecords()
  *     .to(new UserDynamicAvroDestinations(userToSchemaMap)));
  * }</pre>
+ *
+ * @deprecated Avro related classes are deprecated in module 
<code>beam-sdks-java-core</code> and
+ *     will be eventually removed. Please, migrate to a new module <code>
+ *     beam-sdks-java-extensions-avro</code> by importing <code>
+ *     org.apache.beam.sdk.extensions.avro.io.AvroIO</code> instead of this 
one.
  */
 @SuppressWarnings({
   "nullness" // TODO(https://github.com/apache/beam/issues/20497)
 })
+@Deprecated
 public class AvroIO {
   /**
    * Reads records of the given type from an Avro file (or multiple Avro files 
matching a pattern).
diff --git 
a/sdks/java/core/src/main/java/org/apache/beam/sdk/io/AvroSchemaIOProvider.java 
b/sdks/java/core/src/main/java/org/apache/beam/sdk/io/AvroSchemaIOProvider.java
index 90519e38600..43498235992 100644
--- 
a/sdks/java/core/src/main/java/org/apache/beam/sdk/io/AvroSchemaIOProvider.java
+++ 
b/sdks/java/core/src/main/java/org/apache/beam/sdk/io/AvroSchemaIOProvider.java
@@ -43,12 +43,18 @@ import org.joda.time.Duration;
 /**
  * An implementation of {@link SchemaIOProvider} for reading and writing Avro 
files with {@link
  * AvroIO}.
+ *
+ * @deprecated Avro related classes are deprecated in module 
<code>beam-sdks-java-core</code> and
+ *     will be eventually removed. Please, migrate to a new module <code>
+ *     beam-sdks-java-extensions-avro</code> by importing <code>
+ *     org.apache.beam.sdk.extensions.avro.io.AvroSchemaIOProvider</code> 
instead of this one.
  */
 @Internal
 @AutoService(SchemaIOProvider.class)
 @SuppressWarnings({
   "nullness" // TODO(https://github.com/apache/beam/issues/20497)
 })
+@Deprecated
 public class AvroSchemaIOProvider implements SchemaIOProvider {
   /** Returns an id that uniquely represents this IO. */
   @Override
diff --git a/sdks/java/core/src/main/java/org/apache/beam/sdk/io/AvroSink.java 
b/sdks/java/core/src/main/java/org/apache/beam/sdk/io/AvroSink.java
index fe463d704a5..bc92113925c 100644
--- a/sdks/java/core/src/main/java/org/apache/beam/sdk/io/AvroSink.java
+++ b/sdks/java/core/src/main/java/org/apache/beam/sdk/io/AvroSink.java
@@ -32,10 +32,18 @@ import org.apache.beam.sdk.options.ValueProvider;
 import org.apache.beam.sdk.util.MimeTypes;
 import org.checkerframework.checker.nullness.qual.Nullable;
 
-/** A {@link FileBasedSink} for Avro files. */
+/**
+ * A {@link FileBasedSink} for Avro files.
+ *
+ * @deprecated Avro related classes are deprecated in module 
<code>beam-sdks-java-core</code> and
+ *     will be eventually removed. Please, migrate to a new module <code>
+ *     beam-sdks-java-extensions-avro</code> by importing <code>
+ *     org.apache.beam.sdk.extensions.avro.io.AvroSink</code> instead of this 
one.
+ */
 @SuppressWarnings({
   "nullness" // TODO(https://github.com/apache/beam/issues/20497)
 })
+@Deprecated
 public class AvroSink<UserT, DestinationT, OutputT>
     extends FileBasedSink<UserT, DestinationT, OutputT> {
   private final boolean genericRecords;
diff --git 
a/sdks/java/core/src/main/java/org/apache/beam/sdk/io/AvroSource.java 
b/sdks/java/core/src/main/java/org/apache/beam/sdk/io/AvroSource.java
index 3b7824fa449..22a5f1e0d24 100644
--- a/sdks/java/core/src/main/java/org/apache/beam/sdk/io/AvroSource.java
+++ b/sdks/java/core/src/main/java/org/apache/beam/sdk/io/AvroSource.java
@@ -120,12 +120,17 @@ import 
org.checkerframework.checker.nullness.qual.Nullable;
  * details.
  *
  * @param <T> The type of records to be read from the source.
+ * @deprecated Avro related classes are deprecated in module 
<code>beam-sdks-java-core</code> and
+ *     will be eventually removed. Please, migrate to a new module <code>
+ *     beam-sdks-java-extensions-avro</code> by importing <code>
+ *     org.apache.beam.sdk.extensions.avro.io.AvroSource</code> instead of 
this one.
  */
 // CHECKSTYLE.ON: JavadocStyle
 @Experimental(Kind.SOURCE_SINK)
 @SuppressWarnings({
   "nullness" // TODO(https://github.com/apache/beam/issues/20497)
 })
+@Deprecated
 public class AvroSource<T> extends BlockBasedSource<T> {
   // Default minimum bundle size (chosen as two default-size Avro blocks to 
attempt to
   // ensure that every source has at least one block of records).
diff --git 
a/sdks/java/core/src/main/java/org/apache/beam/sdk/io/ConstantAvroDestination.java
 
b/sdks/java/core/src/main/java/org/apache/beam/sdk/io/ConstantAvroDestination.java
index 832526efa88..cc9957474b9 100644
--- 
a/sdks/java/core/src/main/java/org/apache/beam/sdk/io/ConstantAvroDestination.java
+++ 
b/sdks/java/core/src/main/java/org/apache/beam/sdk/io/ConstantAvroDestination.java
@@ -31,10 +31,18 @@ import 
org.apache.beam.vendor.guava.v26_0_jre.com.google.common.base.Suppliers;
 import 
org.apache.beam.vendor.guava.v26_0_jre.com.google.common.io.BaseEncoding;
 import org.checkerframework.checker.nullness.qual.Nullable;
 
-/** Always returns a constant {@link FilenamePolicy}, {@link Schema}, 
metadata, and codec. */
+/**
+ * Always returns a constant {@link FilenamePolicy}, {@link Schema}, metadata, 
and codec.
+ *
+ * @deprecated Avro related classes are deprecated in module 
<code>beam-sdks-java-core</code> and
+ *     will be eventually removed. Please, migrate to a new module <code>
+ *     beam-sdks-java-extensions-avro</code> by importing <code>
+ *     org.apache.beam.sdk.extensions.avro.io.ConstantAvroDestination</code> 
instead of this one.
+ */
 @SuppressWarnings({
   "nullness" // TODO(https://github.com/apache/beam/issues/20497)
 })
+@Deprecated
 class ConstantAvroDestination<UserT, OutputT>
     extends DynamicAvroDestinations<UserT, Void, OutputT> {
   private static class SchemaFunction implements Serializable, 
Function<String, Schema> {
diff --git 
a/sdks/java/core/src/main/java/org/apache/beam/sdk/io/DynamicAvroDestinations.java
 
b/sdks/java/core/src/main/java/org/apache/beam/sdk/io/DynamicAvroDestinations.java
index 4bb450bffe1..40c8657a01a 100644
--- 
a/sdks/java/core/src/main/java/org/apache/beam/sdk/io/DynamicAvroDestinations.java
+++ 
b/sdks/java/core/src/main/java/org/apache/beam/sdk/io/DynamicAvroDestinations.java
@@ -28,7 +28,13 @@ import org.checkerframework.checker.nullness.qual.Nullable;
  * A specialization of {@link DynamicDestinations} for {@link AvroIO}. In 
addition to dynamic file
  * destinations, this allows specifying other AVRO properties (schema, 
metadata, codec, datum
  * writer) per destination.
+ *
+ * @deprecated Avro related classes are deprecated in module 
<code>beam-sdks-java-core</code> and
+ *     will be eventually removed. Please, migrate to a new module <code>
+ *     beam-sdks-java-extensions-avro</code> by importing <code>
+ *     org.apache.beam.sdk.extensions.avro.io.DynamicAvroDestinations</code> 
instead of this one.
  */
+@Deprecated
 public abstract class DynamicAvroDestinations<UserT, DestinationT, OutputT>
     extends DynamicDestinations<UserT, DestinationT, OutputT> {
   /** Return an AVRO schema for a given destination. */
diff --git 
a/sdks/java/core/src/main/java/org/apache/beam/sdk/io/SerializableAvroCodecFactory.java
 
b/sdks/java/core/src/main/java/org/apache/beam/sdk/io/SerializableAvroCodecFactory.java
index 5218eb683aa..b7b5da72ba4 100644
--- 
a/sdks/java/core/src/main/java/org/apache/beam/sdk/io/SerializableAvroCodecFactory.java
+++ 
b/sdks/java/core/src/main/java/org/apache/beam/sdk/io/SerializableAvroCodecFactory.java
@@ -39,10 +39,17 @@ import org.checkerframework.checker.nullness.qual.Nullable;
 /**
  * A wrapper that allows {@link org.apache.avro.file.CodecFactory}s to be 
serialized using Java's
  * standard serialization mechanisms.
+ *
+ * @deprecated Avro related classes are deprecated in module 
<code>beam-sdks-java-core</code> and
+ *     will be eventually removed. Please, migrate to a new module <code>
+ *     beam-sdks-java-extensions-avro</code> by importing <code>
+ *     
org.apache.beam.sdk.extensions.avro.io.SerializableAvroCodecFactory</code> 
instead of this
+ *     one.
  */
 @SuppressWarnings({
   "nullness" // TODO(https://github.com/apache/beam/issues/20497)
 })
+@Deprecated
 class SerializableAvroCodecFactory implements Externalizable {
   private static final long serialVersionUID = 7445324844109564303L;
   private static final List<String> noOptAvroCodecs =
diff --git 
a/sdks/java/core/src/main/java/org/apache/beam/sdk/schemas/AvroRecordSchema.java
 
b/sdks/java/core/src/main/java/org/apache/beam/sdk/schemas/AvroRecordSchema.java
index c616901a396..19027cd4527 100644
--- 
a/sdks/java/core/src/main/java/org/apache/beam/sdk/schemas/AvroRecordSchema.java
+++ 
b/sdks/java/core/src/main/java/org/apache/beam/sdk/schemas/AvroRecordSchema.java
@@ -30,10 +30,16 @@ import org.apache.beam.sdk.values.TypeDescriptor;
  * <p>This provider infers a schema from generated SpecificRecord objects, and 
creates schemas and
  * rows that bind to the appropriate fields. This provider also infers schemas 
from Java POJO
  * objects, creating a schema that matches that inferred by the AVRO libraries.
+ *
+ * @deprecated Avro related classes are deprecated in module 
<code>beam-sdks-java-core</code> and
+ *     will be eventually removed. Please, migrate to a new module <code>
+ *     beam-sdks-java-extensions-avro</code> by importing <code>
+ *     org.apache.beam.sdk.extensions.avro.schemas.AvroRecordSchema</code> 
instead of this one.
  */
 @SuppressWarnings({
   "rawtypes" // TODO(https://github.com/apache/beam/issues/20447)
 })
+@Deprecated
 public class AvroRecordSchema extends GetterBasedSchemaProvider {
   @Override
   public <T> Schema schemaFor(TypeDescriptor<T> typeDescriptor) {
diff --git 
a/sdks/java/core/src/main/java/org/apache/beam/sdk/schemas/io/payloads/AvroPayloadSerializerProvider.java
 
b/sdks/java/core/src/main/java/org/apache/beam/sdk/schemas/io/payloads/AvroPayloadSerializerProvider.java
index ace671fccd6..5ffc549f7fb 100644
--- 
a/sdks/java/core/src/main/java/org/apache/beam/sdk/schemas/io/payloads/AvroPayloadSerializerProvider.java
+++ 
b/sdks/java/core/src/main/java/org/apache/beam/sdk/schemas/io/payloads/AvroPayloadSerializerProvider.java
@@ -25,8 +25,16 @@ import org.apache.beam.sdk.annotations.Internal;
 import org.apache.beam.sdk.schemas.Schema;
 import org.apache.beam.sdk.schemas.utils.AvroUtils;
 
+/**
+ * @deprecated Avro related classes are deprecated in module 
<code>beam-sdks-java-core</code> and
+ *     will be eventually removed. Please, migrate to a new module <code>
+ *     beam-sdks-java-extensions-avro</code> by importing <code>
+ *     
org.apache.beam.sdk.extensions.avro.schemas.io.payloads.AvroPayloadSerializerProvider</code>
+ *     instead of this one.
+ */
 @Internal
 @Experimental(Kind.SCHEMAS)
+@Deprecated
 @AutoService(PayloadSerializerProvider.class)
 public class AvroPayloadSerializerProvider implements 
PayloadSerializerProvider {
   @Override
diff --git 
a/sdks/java/core/src/main/java/org/apache/beam/sdk/schemas/utils/AvroByteBuddyUtils.java
 
b/sdks/java/core/src/main/java/org/apache/beam/sdk/schemas/utils/AvroByteBuddyUtils.java
index eb01b83c94f..fe4c76a2a26 100644
--- 
a/sdks/java/core/src/main/java/org/apache/beam/sdk/schemas/utils/AvroByteBuddyUtils.java
+++ 
b/sdks/java/core/src/main/java/org/apache/beam/sdk/schemas/utils/AvroByteBuddyUtils.java
@@ -48,11 +48,19 @@ import org.apache.beam.sdk.util.common.ReflectHelpers;
 import org.apache.beam.sdk.values.TypeDescriptor;
 import org.apache.beam.vendor.guava.v26_0_jre.com.google.common.collect.Maps;
 
+/**
+ * @deprecated Avro related classes are deprecated in module 
<code>beam-sdks-java-core</code> and
+ *     will be eventually removed. Please, migrate to a new module <code>
+ *     beam-sdks-java-extensions-avro</code> by importing <code>
+ *     
org.apache.beam.sdk.extensions.avro.schemas.utils.AvroByteBuddyUtils</code> 
instead of this
+ *     one.
+ */
 @Experimental(Kind.SCHEMAS)
 @SuppressWarnings({
   "nullness", // TODO(https://github.com/apache/beam/issues/20497)
   "rawtypes"
 })
+@Deprecated
 class AvroByteBuddyUtils {
   private static final ByteBuddy BYTE_BUDDY = new ByteBuddy();
 
diff --git 
a/sdks/java/core/src/main/java/org/apache/beam/sdk/schemas/utils/AvroUtils.java 
b/sdks/java/core/src/main/java/org/apache/beam/sdk/schemas/utils/AvroUtils.java
index a45728236ab..93362f4ceb6 100644
--- 
a/sdks/java/core/src/main/java/org/apache/beam/sdk/schemas/utils/AvroUtils.java
+++ 
b/sdks/java/core/src/main/java/org/apache/beam/sdk/schemas/utils/AvroUtils.java
@@ -133,12 +133,18 @@ import org.joda.time.ReadableInstant;
  * </pre>
  *
  * is used.
+ *
+ * @deprecated Avro related classes are deprecated in module 
<code>beam-sdks-java-core</code> and
+ *     will be eventually removed. Please, migrate to a new module <code>
+ *     beam-sdks-java-extensions-avro</code> by importing <code>
+ *     org.apache.beam.sdk.extensions.avro.schemas.utils.AvroUtils</code> 
instead of this one.
  */
 @Experimental(Kind.SCHEMAS)
 @SuppressWarnings({
   "nullness", // TODO(https://github.com/apache/beam/issues/20497)
   "rawtypes"
 })
+@Deprecated
 public class AvroUtils {
   static {
     // This works around a bug in the Avro library (AVRO-1891) around 
SpecificRecord's handling
diff --git a/sdks/java/extensions/avro/build.gradle 
b/sdks/java/extensions/avro/build.gradle
index 1b1b7f82485..f73a9efccfb 100644
--- a/sdks/java/extensions/avro/build.gradle
+++ b/sdks/java/extensions/avro/build.gradle
@@ -21,7 +21,7 @@ applyJavaNature(
     automaticModuleName: 'org.apache.beam.sdk.extensions.avro',
     disableLintWarnings: ['rawtypes'], // Avro-generated test code has 
raw-type errors
     publish: true,
-    exportJavadoc: false,
+    exportJavadoc: true,
 )
 applyAvroNature()
 

Reply via email to