This is an automated email from the ASF dual-hosted git repository.
dongjoon pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/orc.git
The following commit(s) were added to refs/heads/main by this push:
new 3eaa9e610 ORC-2128: Add `since` Javadoc tags to all public `orc-core`
class/interface/enum
3eaa9e610 is described below
commit 3eaa9e610d511585aa5a88948f693cdd90b4802e
Author: Dongjoon Hyun <[email protected]>
AuthorDate: Tue Mar 10 09:13:07 2026 -0700
ORC-2128: Add `since` Javadoc tags to all public `orc-core`
class/interface/enum
### What changes were proposed in this pull request?
This PR adds `since` Javadoc tags to all public classes, interfaces, and
enums in `orc-core` module. The version for each `since` tag was determined
from git history by finding the earliest release tag (`rel/release-*`)
containing the commit that first introduced each file.
- Skipped third-party vendored code under `org.threeten.extra.chrono`
- Skipped package-private classes
### Why are the changes needed?
The `since` Javadoc tag is a standard practice for documenting API
versioning in Java libraries. Currently, only 3 out of 162+ public types in
`orc-core` have `since` tags. Adding these tags improves API documentation and
helps users understand which version introduced each class.
### How was this patch tested?
Pass the CIs and manual review.
### Was this patch authored or co-authored using generative AI tooling?
Generated-by: Claude Code (Claude Opus 4.6)
Closes #2577 from dongjoon-hyun/ORC-2128.
Authored-by: Dongjoon Hyun <[email protected]>
Signed-off-by: Dongjoon Hyun <[email protected]>
---
java/core/src/java/org/apache/orc/BinaryColumnStatistics.java | 1 +
java/core/src/java/org/apache/orc/BooleanColumnStatistics.java | 1 +
java/core/src/java/org/apache/orc/CollectionColumnStatistics.java | 1 +
java/core/src/java/org/apache/orc/ColumnStatistics.java | 1 +
java/core/src/java/org/apache/orc/CompressionCodec.java | 1 +
java/core/src/java/org/apache/orc/CompressionKind.java | 1 +
java/core/src/java/org/apache/orc/DataMask.java | 1 +
java/core/src/java/org/apache/orc/DataMaskDescription.java | 1 +
java/core/src/java/org/apache/orc/DataReader.java | 3 +++
java/core/src/java/org/apache/orc/DateColumnStatistics.java | 1 +
java/core/src/java/org/apache/orc/DecimalColumnStatistics.java | 1 +
java/core/src/java/org/apache/orc/DoubleColumnStatistics.java | 1 +
java/core/src/java/org/apache/orc/EncryptionKey.java | 1 +
java/core/src/java/org/apache/orc/EncryptionVariant.java | 1 +
java/core/src/java/org/apache/orc/FileFormatException.java | 1 +
java/core/src/java/org/apache/orc/FileMetadata.java | 1 +
java/core/src/java/org/apache/orc/GeospatialColumnStatistics.java | 3 +++
java/core/src/java/org/apache/orc/InMemoryKeystore.java | 1 +
java/core/src/java/org/apache/orc/IntegerColumnStatistics.java | 1 +
java/core/src/java/org/apache/orc/MemoryManager.java | 1 +
java/core/src/java/org/apache/orc/OrcConf.java | 1 +
java/core/src/java/org/apache/orc/OrcFile.java | 1 +
java/core/src/java/org/apache/orc/OrcFilterContext.java | 1 +
java/core/src/java/org/apache/orc/OrcUtils.java | 3 +++
java/core/src/java/org/apache/orc/PhysicalWriter.java | 1 +
java/core/src/java/org/apache/orc/StringColumnStatistics.java | 1 +
java/core/src/java/org/apache/orc/StripeInformation.java | 1 +
java/core/src/java/org/apache/orc/StripeStatistics.java | 1 +
java/core/src/java/org/apache/orc/TimestampColumnStatistics.java | 1 +
java/core/src/java/org/apache/orc/TypeDescription.java | 1 +
java/core/src/java/org/apache/orc/TypeDescriptionPrettyPrint.java | 1 +
java/core/src/java/org/apache/orc/UnknownFormatException.java | 1 +
java/core/src/java/org/apache/orc/filter/BatchFilter.java | 1 +
java/core/src/java/org/apache/orc/filter/PluginFilterService.java | 1 +
java/core/src/java/org/apache/orc/geospatial/BoundingBox.java | 1 +
java/core/src/java/org/apache/orc/geospatial/GeospatialTypes.java | 1 +
java/core/src/java/org/apache/orc/impl/AcidStats.java | 1 +
java/core/src/java/org/apache/orc/impl/AircompressorCodec.java | 3 +++
java/core/src/java/org/apache/orc/impl/BitFieldReader.java | 3 +++
java/core/src/java/org/apache/orc/impl/BitFieldWriter.java | 3 +++
java/core/src/java/org/apache/orc/impl/BrotliCodec.java | 3 +++
java/core/src/java/org/apache/orc/impl/BufferChunk.java | 1 +
java/core/src/java/org/apache/orc/impl/BufferChunkList.java | 1 +
java/core/src/java/org/apache/orc/impl/ColumnStatisticsImpl.java | 3 +++
java/core/src/java/org/apache/orc/impl/ConvertTreeReaderFactory.java | 1 +
java/core/src/java/org/apache/orc/impl/CryptoUtils.java | 1 +
java/core/src/java/org/apache/orc/impl/DataReaderProperties.java | 3 +++
java/core/src/java/org/apache/orc/impl/DateUtils.java | 1 +
java/core/src/java/org/apache/orc/impl/Dictionary.java | 1 +
java/core/src/java/org/apache/orc/impl/DictionaryUtils.java | 3 +++
java/core/src/java/org/apache/orc/impl/DirectDecompressionCodec.java | 3 +++
java/core/src/java/org/apache/orc/impl/DynamicByteArray.java | 1 +
java/core/src/java/org/apache/orc/impl/DynamicIntArray.java | 1 +
java/core/src/java/org/apache/orc/impl/HadoopShimsFactory.java | 1 +
java/core/src/java/org/apache/orc/impl/InStream.java | 3 +++
java/core/src/java/org/apache/orc/impl/IntegerReader.java | 1 +
java/core/src/java/org/apache/orc/impl/IntegerWriter.java | 1 +
java/core/src/java/org/apache/orc/impl/Lz4Codec.java | 3 +++
java/core/src/java/org/apache/orc/impl/MaskDescriptionImpl.java | 3 +++
java/core/src/java/org/apache/orc/impl/MemoryManager.java | 1 +
java/core/src/java/org/apache/orc/impl/MemoryManagerImpl.java | 1 +
java/core/src/java/org/apache/orc/impl/OrcAcidUtils.java | 3 +++
java/core/src/java/org/apache/orc/impl/OrcCodecPool.java | 1 +
java/core/src/java/org/apache/orc/impl/OrcFilterContextImpl.java | 1 +
java/core/src/java/org/apache/orc/impl/OrcIndex.java | 3 +++
java/core/src/java/org/apache/orc/impl/OrcTail.java | 3 +++
java/core/src/java/org/apache/orc/impl/OutStream.java | 1 +
java/core/src/java/org/apache/orc/impl/ParserUtils.java | 3 +++
java/core/src/java/org/apache/orc/impl/PhysicalFsWriter.java | 3 +++
java/core/src/java/org/apache/orc/impl/PositionProvider.java | 1 +
java/core/src/java/org/apache/orc/impl/PositionRecorder.java | 1 +
java/core/src/java/org/apache/orc/impl/PositionedOutputStream.java | 3 +++
java/core/src/java/org/apache/orc/impl/ReaderImpl.java | 3 +++
java/core/src/java/org/apache/orc/impl/RecordReaderImpl.java | 3 +++
java/core/src/java/org/apache/orc/impl/RecordReaderUtils.java | 1 +
java/core/src/java/org/apache/orc/impl/RunLengthByteReader.java | 1 +
java/core/src/java/org/apache/orc/impl/RunLengthByteWriter.java | 1 +
java/core/src/java/org/apache/orc/impl/RunLengthIntegerReader.java | 3 +++
java/core/src/java/org/apache/orc/impl/RunLengthIntegerReaderV2.java | 1 +
java/core/src/java/org/apache/orc/impl/RunLengthIntegerWriter.java | 1 +
java/core/src/java/org/apache/orc/impl/RunLengthIntegerWriterV2.java | 1 +
java/core/src/java/org/apache/orc/impl/SchemaEvolution.java | 1 +
java/core/src/java/org/apache/orc/impl/SerializationUtils.java | 3 +++
java/core/src/java/org/apache/orc/impl/SnappyCodec.java | 3 +++
java/core/src/java/org/apache/orc/impl/StreamName.java | 1 +
java/core/src/java/org/apache/orc/impl/StringHashTableDictionary.java | 1 +
java/core/src/java/org/apache/orc/impl/StringRedBlackTree.java | 1 +
java/core/src/java/org/apache/orc/impl/StripeStatisticsImpl.java | 3 +++
java/core/src/java/org/apache/orc/impl/TreeReaderFactory.java | 1 +
java/core/src/java/org/apache/orc/impl/TypeUtils.java | 3 +++
java/core/src/java/org/apache/orc/impl/Utf8Utils.java | 3 +++
java/core/src/java/org/apache/orc/impl/VisitorContextImpl.java | 1 +
java/core/src/java/org/apache/orc/impl/WriterImpl.java | 1 +
java/core/src/java/org/apache/orc/impl/WriterInternal.java | 1 +
java/core/src/java/org/apache/orc/impl/XerialSnappyCodec.java | 3 +++
java/core/src/java/org/apache/orc/impl/ZlibCodec.java | 3 +++
java/core/src/java/org/apache/orc/impl/ZstdCodec.java | 3 +++
java/core/src/java/org/apache/orc/impl/filter/AndFilter.java | 3 +++
java/core/src/java/org/apache/orc/impl/filter/FilterFactory.java | 3 +++
java/core/src/java/org/apache/orc/impl/filter/IsNotNullFilter.java | 3 +++
java/core/src/java/org/apache/orc/impl/filter/IsNullFilter.java | 3 +++
java/core/src/java/org/apache/orc/impl/filter/LeafFilter.java | 3 +++
java/core/src/java/org/apache/orc/impl/filter/OrFilter.java | 3 +++
java/core/src/java/org/apache/orc/impl/filter/Selected.java | 1 +
java/core/src/java/org/apache/orc/impl/filter/VectorFilter.java | 1 +
.../src/java/org/apache/orc/impl/filter/leaf/LeafFilterFactory.java | 3 +++
java/core/src/java/org/apache/orc/impl/mask/DecimalIdentity.java | 1 +
java/core/src/java/org/apache/orc/impl/mask/DoubleIdentity.java | 1 +
java/core/src/java/org/apache/orc/impl/mask/ListIdentity.java | 1 +
java/core/src/java/org/apache/orc/impl/mask/LongIdentity.java | 1 +
java/core/src/java/org/apache/orc/impl/mask/MapIdentity.java | 1 +
java/core/src/java/org/apache/orc/impl/mask/MaskFactory.java | 1 +
java/core/src/java/org/apache/orc/impl/mask/MaskProvider.java | 1 +
java/core/src/java/org/apache/orc/impl/mask/NullifyMask.java | 1 +
java/core/src/java/org/apache/orc/impl/mask/RedactMaskFactory.java | 1 +
java/core/src/java/org/apache/orc/impl/mask/SHA256MaskFactory.java | 1 +
java/core/src/java/org/apache/orc/impl/mask/StructIdentity.java | 1 +
java/core/src/java/org/apache/orc/impl/mask/UnionIdentity.java | 1 +
java/core/src/java/org/apache/orc/impl/reader/ReaderEncryption.java | 3 +++
java/core/src/java/org/apache/orc/impl/reader/ReaderEncryptionKey.java | 1 +
.../src/java/org/apache/orc/impl/reader/ReaderEncryptionVariant.java | 1 +
java/core/src/java/org/apache/orc/impl/reader/StripePlanner.java | 1 +
java/core/src/java/org/apache/orc/impl/reader/tree/BatchReader.java | 1 +
.../src/java/org/apache/orc/impl/reader/tree/PrimitiveBatchReader.java | 3 +++
.../src/java/org/apache/orc/impl/reader/tree/StructBatchReader.java | 1 +
java/core/src/java/org/apache/orc/impl/reader/tree/TypeReader.java | 3 +++
java/core/src/java/org/apache/orc/impl/writer/BinaryTreeWriter.java | 3 +++
java/core/src/java/org/apache/orc/impl/writer/BooleanTreeWriter.java | 3 +++
java/core/src/java/org/apache/orc/impl/writer/ByteTreeWriter.java | 3 +++
java/core/src/java/org/apache/orc/impl/writer/CharTreeWriter.java | 1 +
java/core/src/java/org/apache/orc/impl/writer/DateTreeWriter.java | 3 +++
java/core/src/java/org/apache/orc/impl/writer/Decimal64TreeWriter.java | 1 +
java/core/src/java/org/apache/orc/impl/writer/DecimalTreeWriter.java | 3 +++
java/core/src/java/org/apache/orc/impl/writer/DoubleTreeWriter.java | 3 +++
.../core/src/java/org/apache/orc/impl/writer/EncryptionTreeWriter.java | 1 +
java/core/src/java/org/apache/orc/impl/writer/FloatTreeWriter.java | 3 +++
.../core/src/java/org/apache/orc/impl/writer/GeospatialTreeWriter.java | 3 +++
java/core/src/java/org/apache/orc/impl/writer/IntegerTreeWriter.java | 3 +++
java/core/src/java/org/apache/orc/impl/writer/ListTreeWriter.java | 3 +++
java/core/src/java/org/apache/orc/impl/writer/MapTreeWriter.java | 3 +++
java/core/src/java/org/apache/orc/impl/writer/StreamOptions.java | 1 +
.../core/src/java/org/apache/orc/impl/writer/StringBaseTreeWriter.java | 3 +++
java/core/src/java/org/apache/orc/impl/writer/StringTreeWriter.java | 3 +++
java/core/src/java/org/apache/orc/impl/writer/StructTreeWriter.java | 3 +++
java/core/src/java/org/apache/orc/impl/writer/TimestampTreeWriter.java | 3 +++
java/core/src/java/org/apache/orc/impl/writer/TreeWriter.java | 1 +
java/core/src/java/org/apache/orc/impl/writer/TreeWriterBase.java | 1 +
java/core/src/java/org/apache/orc/impl/writer/UnionTreeWriter.java | 3 +++
java/core/src/java/org/apache/orc/impl/writer/VarcharTreeWriter.java | 1 +
java/core/src/java/org/apache/orc/impl/writer/WriterContext.java | 3 +++
java/core/src/java/org/apache/orc/impl/writer/WriterEncryptionKey.java | 3 +++
.../src/java/org/apache/orc/impl/writer/WriterEncryptionVariant.java | 3 +++
java/core/src/java/org/apache/orc/impl/writer/WriterImplV2.java | 1 +
java/core/src/java/org/apache/orc/util/BloomFilter.java | 1 +
java/core/src/java/org/apache/orc/util/BloomFilterIO.java | 3 +++
java/core/src/java/org/apache/orc/util/BloomFilterUtf8.java | 1 +
java/core/src/java/org/apache/orc/util/CuckooSetBytes.java | 1 +
java/core/src/java/org/apache/orc/util/Murmur3.java | 1 +
java/core/src/java/org/apache/orc/util/StreamWrapperFileSystem.java | 1 +
159 files changed, 281 insertions(+)
diff --git a/java/core/src/java/org/apache/orc/BinaryColumnStatistics.java
b/java/core/src/java/org/apache/orc/BinaryColumnStatistics.java
index 5de996488..82f9117d5 100644
--- a/java/core/src/java/org/apache/orc/BinaryColumnStatistics.java
+++ b/java/core/src/java/org/apache/orc/BinaryColumnStatistics.java
@@ -20,6 +20,7 @@ package org.apache.orc;
/**
* Statistics for binary columns.
+ * @since 1.1.0
*/
public interface BinaryColumnStatistics extends ColumnStatistics {
/**
diff --git a/java/core/src/java/org/apache/orc/BooleanColumnStatistics.java
b/java/core/src/java/org/apache/orc/BooleanColumnStatistics.java
index 82aa9c133..aa9bdabb4 100644
--- a/java/core/src/java/org/apache/orc/BooleanColumnStatistics.java
+++ b/java/core/src/java/org/apache/orc/BooleanColumnStatistics.java
@@ -20,6 +20,7 @@ package org.apache.orc;
/**
* Statistics for boolean columns.
+ * @since 1.1.0
*/
public interface BooleanColumnStatistics extends ColumnStatistics {
/**
diff --git a/java/core/src/java/org/apache/orc/CollectionColumnStatistics.java
b/java/core/src/java/org/apache/orc/CollectionColumnStatistics.java
index 056c8caec..f030c485d 100644
--- a/java/core/src/java/org/apache/orc/CollectionColumnStatistics.java
+++ b/java/core/src/java/org/apache/orc/CollectionColumnStatistics.java
@@ -20,6 +20,7 @@ package org.apache.orc;
/**
* Statistics for all of collections such as Map and List.
+ * @since 1.6.0
*/
public interface CollectionColumnStatistics extends ColumnStatistics {
/**
diff --git a/java/core/src/java/org/apache/orc/ColumnStatistics.java
b/java/core/src/java/org/apache/orc/ColumnStatistics.java
index 8bbee4208..f52a7bcba 100644
--- a/java/core/src/java/org/apache/orc/ColumnStatistics.java
+++ b/java/core/src/java/org/apache/orc/ColumnStatistics.java
@@ -20,6 +20,7 @@ package org.apache.orc;
/**
* Statistics that are available for all types of columns.
+ * @since 1.1.0
*/
public interface ColumnStatistics {
/**
diff --git a/java/core/src/java/org/apache/orc/CompressionCodec.java
b/java/core/src/java/org/apache/orc/CompressionCodec.java
index c926fa0eb..06c1bea85 100644
--- a/java/core/src/java/org/apache/orc/CompressionCodec.java
+++ b/java/core/src/java/org/apache/orc/CompressionCodec.java
@@ -25,6 +25,7 @@ import java.nio.ByteBuffer;
/**
* The API for compression codecs for ORC.
* Closeable.close() returns this codec to the OrcCodecPool.
+ * @since 1.1.0
*/
public interface CompressionCodec extends Closeable {
diff --git a/java/core/src/java/org/apache/orc/CompressionKind.java
b/java/core/src/java/org/apache/orc/CompressionKind.java
index f5615acf8..446a01917 100644
--- a/java/core/src/java/org/apache/orc/CompressionKind.java
+++ b/java/core/src/java/org/apache/orc/CompressionKind.java
@@ -21,6 +21,7 @@ package org.apache.orc;
/**
* An enumeration that lists the generic compression algorithms that
* can be applied to ORC files.
+ * @since 1.1.0
*/
public enum CompressionKind {
NONE, ZLIB, SNAPPY, LZO, LZ4, ZSTD, BROTLI
diff --git a/java/core/src/java/org/apache/orc/DataMask.java
b/java/core/src/java/org/apache/orc/DataMask.java
index 7e1eb800c..e833bcf35 100644
--- a/java/core/src/java/org/apache/orc/DataMask.java
+++ b/java/core/src/java/org/apache/orc/DataMask.java
@@ -29,6 +29,7 @@ import java.util.ServiceLoader;
* They apply to an individual column (via ColumnVector) instead of a
* VectorRowBatch.
*
+ * @since 1.5.0
*/
public interface DataMask {
diff --git a/java/core/src/java/org/apache/orc/DataMaskDescription.java
b/java/core/src/java/org/apache/orc/DataMaskDescription.java
index d70eabad3..a7cd650de 100644
--- a/java/core/src/java/org/apache/orc/DataMaskDescription.java
+++ b/java/core/src/java/org/apache/orc/DataMaskDescription.java
@@ -20,6 +20,7 @@ package org.apache.orc;
/**
* Information about the DataMask used to mask the unencrypted data.
+ * @since 1.6.0
*/
public interface DataMaskDescription {
diff --git a/java/core/src/java/org/apache/orc/DataReader.java
b/java/core/src/java/org/apache/orc/DataReader.java
index a477866f5..8f8bc76eb 100644
--- a/java/core/src/java/org/apache/orc/DataReader.java
+++ b/java/core/src/java/org/apache/orc/DataReader.java
@@ -25,6 +25,9 @@ import java.io.IOException;
import java.nio.ByteBuffer;
/** An abstract data reader that IO formats can use to read bytes from
underlying storage. */
+/**
+ * @since 1.1.0
+ */
public interface DataReader extends AutoCloseable, Cloneable {
/** Opens the DataReader, making it ready to use. */
diff --git a/java/core/src/java/org/apache/orc/DateColumnStatistics.java
b/java/core/src/java/org/apache/orc/DateColumnStatistics.java
index b60af5891..6a1db215d 100644
--- a/java/core/src/java/org/apache/orc/DateColumnStatistics.java
+++ b/java/core/src/java/org/apache/orc/DateColumnStatistics.java
@@ -23,6 +23,7 @@ import java.util.Date;
/**
* Statistics for DATE columns.
+ * @since 1.1.0
*/
public interface DateColumnStatistics extends ColumnStatistics {
diff --git a/java/core/src/java/org/apache/orc/DecimalColumnStatistics.java
b/java/core/src/java/org/apache/orc/DecimalColumnStatistics.java
index 1d0b57bcf..072578ae0 100644
--- a/java/core/src/java/org/apache/orc/DecimalColumnStatistics.java
+++ b/java/core/src/java/org/apache/orc/DecimalColumnStatistics.java
@@ -22,6 +22,7 @@ import org.apache.hadoop.hive.common.type.HiveDecimal;
/**
* Statistics for decimal columns.
+ * @since 1.1.0
*/
public interface DecimalColumnStatistics extends ColumnStatistics {
diff --git a/java/core/src/java/org/apache/orc/DoubleColumnStatistics.java
b/java/core/src/java/org/apache/orc/DoubleColumnStatistics.java
index 464c6cd46..3745da9e3 100644
--- a/java/core/src/java/org/apache/orc/DoubleColumnStatistics.java
+++ b/java/core/src/java/org/apache/orc/DoubleColumnStatistics.java
@@ -20,6 +20,7 @@ package org.apache.orc;
/**
* Statistics for float and double columns.
+ * @since 1.1.0
*/
public interface DoubleColumnStatistics extends ColumnStatistics {
diff --git a/java/core/src/java/org/apache/orc/EncryptionKey.java
b/java/core/src/java/org/apache/orc/EncryptionKey.java
index a468ea6f6..715e3eefb 100644
--- a/java/core/src/java/org/apache/orc/EncryptionKey.java
+++ b/java/core/src/java/org/apache/orc/EncryptionKey.java
@@ -20,6 +20,7 @@ package org.apache.orc;
/**
* Information about a key used for column encryption in an ORC file.
+ * @since 1.6.0
*/
public interface EncryptionKey extends Comparable<EncryptionKey> {
diff --git a/java/core/src/java/org/apache/orc/EncryptionVariant.java
b/java/core/src/java/org/apache/orc/EncryptionVariant.java
index 41f1066bb..f43734333 100644
--- a/java/core/src/java/org/apache/orc/EncryptionVariant.java
+++ b/java/core/src/java/org/apache/orc/EncryptionVariant.java
@@ -30,6 +30,7 @@ import java.security.Key;
* <li>Encrypted original</li>
* <li>Unencrypted masked</li>
* </ul>
+ * @since 1.6.0
*/
public interface EncryptionVariant extends Comparable<EncryptionVariant> {
diff --git a/java/core/src/java/org/apache/orc/FileFormatException.java
b/java/core/src/java/org/apache/orc/FileFormatException.java
index 6853a1008..7574161d5 100644
--- a/java/core/src/java/org/apache/orc/FileFormatException.java
+++ b/java/core/src/java/org/apache/orc/FileFormatException.java
@@ -22,6 +22,7 @@ import java.io.IOException;
/**
* Thrown when an invalid file format is encountered.
+ * @since 1.1.0
*/
public class FileFormatException extends IOException {
diff --git a/java/core/src/java/org/apache/orc/FileMetadata.java
b/java/core/src/java/org/apache/orc/FileMetadata.java
index 9a927b94e..6dc98c69b 100644
--- a/java/core/src/java/org/apache/orc/FileMetadata.java
+++ b/java/core/src/java/org/apache/orc/FileMetadata.java
@@ -25,6 +25,7 @@ import java.util.List;
* protobuf structs actually, we could just store what we need, but that would
require that
* ORC stop depending on them too. Luckily, they shouldn't be very big.
* @deprecated Use {@link org.apache.orc.impl.OrcTail} instead
+ * @since 1.1.0
*/
@Deprecated
public interface FileMetadata {
diff --git a/java/core/src/java/org/apache/orc/GeospatialColumnStatistics.java
b/java/core/src/java/org/apache/orc/GeospatialColumnStatistics.java
index 301b62598..95340db30 100644
--- a/java/core/src/java/org/apache/orc/GeospatialColumnStatistics.java
+++ b/java/core/src/java/org/apache/orc/GeospatialColumnStatistics.java
@@ -21,6 +21,9 @@ package org.apache.orc;
import org.apache.orc.geospatial.BoundingBox;
import org.apache.orc.geospatial.GeospatialTypes;
+/**
+ * @since 2.2.0
+ */
public interface GeospatialColumnStatistics extends ColumnStatistics {
/**
* Get the bounding box for the column.
diff --git a/java/core/src/java/org/apache/orc/InMemoryKeystore.java
b/java/core/src/java/org/apache/orc/InMemoryKeystore.java
index 52bf40862..0fd89cba0 100644
--- a/java/core/src/java/org/apache/orc/InMemoryKeystore.java
+++ b/java/core/src/java/org/apache/orc/InMemoryKeystore.java
@@ -53,6 +53,7 @@ import java.util.TreeMap;
* constant IV is not a problem.
* <p>
* This class is not thread safe.
+ * @since 1.5.0
*/
public class InMemoryKeystore implements KeyProvider {
/**
diff --git a/java/core/src/java/org/apache/orc/IntegerColumnStatistics.java
b/java/core/src/java/org/apache/orc/IntegerColumnStatistics.java
index 35a1ed300..cfa8535ed 100644
--- a/java/core/src/java/org/apache/orc/IntegerColumnStatistics.java
+++ b/java/core/src/java/org/apache/orc/IntegerColumnStatistics.java
@@ -21,6 +21,7 @@ package org.apache.orc;
/**
* Statistics for all of the integer columns, such as byte, short, int, and
* long.
+ * @since 1.1.0
*/
public interface IntegerColumnStatistics extends ColumnStatistics {
/**
diff --git a/java/core/src/java/org/apache/orc/MemoryManager.java
b/java/core/src/java/org/apache/orc/MemoryManager.java
index fa478b477..0a11e4a0a 100644
--- a/java/core/src/java/org/apache/orc/MemoryManager.java
+++ b/java/core/src/java/org/apache/orc/MemoryManager.java
@@ -31,6 +31,7 @@ import java.io.IOException;
* <p>
* This class is not thread safe, but is re-entrant - ensure creation and all
* invocations are triggered from the same thread.
+ * @since 1.4.0
*/
public interface MemoryManager {
diff --git a/java/core/src/java/org/apache/orc/OrcConf.java
b/java/core/src/java/org/apache/orc/OrcConf.java
index 89dfc47e9..cf8345e4a 100644
--- a/java/core/src/java/org/apache/orc/OrcConf.java
+++ b/java/core/src/java/org/apache/orc/OrcConf.java
@@ -26,6 +26,7 @@ import java.util.Properties;
/**
* Define the configuration properties that Orc understands.
+ * @since 1.1.0
*/
public enum OrcConf {
STRIPE_SIZE("orc.stripe.size", "hive.exec.orc.default.stripe.size",
diff --git a/java/core/src/java/org/apache/orc/OrcFile.java
b/java/core/src/java/org/apache/orc/OrcFile.java
index 8c61b0065..11a5db322 100644
--- a/java/core/src/java/org/apache/orc/OrcFile.java
+++ b/java/core/src/java/org/apache/orc/OrcFile.java
@@ -44,6 +44,7 @@ import java.util.Properties;
/**
* Contains factory methods to read or write ORC files.
+ * @since 1.1.0
*/
public class OrcFile {
private static final Logger LOG = LoggerFactory.getLogger(OrcFile.class);
diff --git a/java/core/src/java/org/apache/orc/OrcFilterContext.java
b/java/core/src/java/org/apache/orc/OrcFilterContext.java
index 52c15008a..d6fa3f5d7 100644
--- a/java/core/src/java/org/apache/orc/OrcFilterContext.java
+++ b/java/core/src/java/org/apache/orc/OrcFilterContext.java
@@ -30,6 +30,7 @@ import
org.apache.hadoop.hive.ql.io.filter.MutableFilterContext;
* <p>
* This offers a convenience method of finding the column vector from a given
column name
* that the filters can invoke to get access to the column vector.
+ * @since 1.7.0
*/
public interface OrcFilterContext extends MutableFilterContext {
/**
diff --git a/java/core/src/java/org/apache/orc/OrcUtils.java
b/java/core/src/java/org/apache/orc/OrcUtils.java
index 3b4b539a4..6ecf637d0 100644
--- a/java/core/src/java/org/apache/orc/OrcUtils.java
+++ b/java/core/src/java/org/apache/orc/OrcUtils.java
@@ -32,6 +32,9 @@ import java.util.Properties;
import static org.apache.hadoop.util.StringUtils.COMMA_STR;
+/**
+ * @since 1.1.0
+ */
public class OrcUtils {
/**
diff --git a/java/core/src/java/org/apache/orc/PhysicalWriter.java
b/java/core/src/java/org/apache/orc/PhysicalWriter.java
index 3c40fb36a..d760e9fb6 100644
--- a/java/core/src/java/org/apache/orc/PhysicalWriter.java
+++ b/java/core/src/java/org/apache/orc/PhysicalWriter.java
@@ -30,6 +30,7 @@ import java.nio.ByteBuffer;
* level details.
* <p>
* This API is limited to being used by LLAP.
+ * @since 1.3.0
*/
public interface PhysicalWriter {
diff --git a/java/core/src/java/org/apache/orc/StringColumnStatistics.java
b/java/core/src/java/org/apache/orc/StringColumnStatistics.java
index eb15e170d..81de896bb 100644
--- a/java/core/src/java/org/apache/orc/StringColumnStatistics.java
+++ b/java/core/src/java/org/apache/orc/StringColumnStatistics.java
@@ -20,6 +20,7 @@ package org.apache.orc;
/**
* Statistics for string columns.
+ * @since 1.1.0
*/
public interface StringColumnStatistics extends ColumnStatistics {
/**
diff --git a/java/core/src/java/org/apache/orc/StripeInformation.java
b/java/core/src/java/org/apache/orc/StripeInformation.java
index d02bcf33a..d5f06a733 100644
--- a/java/core/src/java/org/apache/orc/StripeInformation.java
+++ b/java/core/src/java/org/apache/orc/StripeInformation.java
@@ -20,6 +20,7 @@ package org.apache.orc;
/**
* Information about the stripes in an ORC file that is provided by the Reader.
+ * @since 1.1.0
*/
public interface StripeInformation {
/**
diff --git a/java/core/src/java/org/apache/orc/StripeStatistics.java
b/java/core/src/java/org/apache/orc/StripeStatistics.java
index 142b8cbb2..e81c57879 100644
--- a/java/core/src/java/org/apache/orc/StripeStatistics.java
+++ b/java/core/src/java/org/apache/orc/StripeStatistics.java
@@ -24,6 +24,7 @@ import java.util.List;
/**
* The statistics for a stripe.
+ * @since 1.1.0
*/
public class StripeStatistics {
protected final List<OrcProto.ColumnStatistics> cs;
diff --git a/java/core/src/java/org/apache/orc/TimestampColumnStatistics.java
b/java/core/src/java/org/apache/orc/TimestampColumnStatistics.java
index c5abd4296..6d338ff77 100644
--- a/java/core/src/java/org/apache/orc/TimestampColumnStatistics.java
+++ b/java/core/src/java/org/apache/orc/TimestampColumnStatistics.java
@@ -22,6 +22,7 @@ import java.sql.Timestamp;
/**
* Statistics for Timestamp columns.
+ * @since 1.1.0
*/
public interface TimestampColumnStatistics extends ColumnStatistics {
/**
diff --git a/java/core/src/java/org/apache/orc/TypeDescription.java
b/java/core/src/java/org/apache/orc/TypeDescription.java
index 9e130e81d..a91137a5c 100644
--- a/java/core/src/java/org/apache/orc/TypeDescription.java
+++ b/java/core/src/java/org/apache/orc/TypeDescription.java
@@ -33,6 +33,7 @@ import java.util.regex.Pattern;
/**
* This is the description of the types in an ORC file.
+ * @since 1.1.0
*/
public class TypeDescription
implements Comparable<TypeDescription>, Serializable, Cloneable {
diff --git a/java/core/src/java/org/apache/orc/TypeDescriptionPrettyPrint.java
b/java/core/src/java/org/apache/orc/TypeDescriptionPrettyPrint.java
index 8653287a1..c91a56748 100644
--- a/java/core/src/java/org/apache/orc/TypeDescriptionPrettyPrint.java
+++ b/java/core/src/java/org/apache/orc/TypeDescriptionPrettyPrint.java
@@ -23,6 +23,7 @@ import java.util.List;
/**
* A pretty printer for TypeDescription.
+ * @since 1.5.0
*/
public class TypeDescriptionPrettyPrint {
diff --git a/java/core/src/java/org/apache/orc/UnknownFormatException.java
b/java/core/src/java/org/apache/orc/UnknownFormatException.java
index eb21fe3f8..5a71cc62b 100644
--- a/java/core/src/java/org/apache/orc/UnknownFormatException.java
+++ b/java/core/src/java/org/apache/orc/UnknownFormatException.java
@@ -25,6 +25,7 @@ import java.io.IOException;
/**
* @deprecated This will be removed in the future releases.
+ * @since 1.5.0
*/
@Deprecated
public class UnknownFormatException extends IOException {
diff --git a/java/core/src/java/org/apache/orc/filter/BatchFilter.java
b/java/core/src/java/org/apache/orc/filter/BatchFilter.java
index 513f56c01..5413118e2 100644
--- a/java/core/src/java/org/apache/orc/filter/BatchFilter.java
+++ b/java/core/src/java/org/apache/orc/filter/BatchFilter.java
@@ -26,6 +26,7 @@ import java.util.function.Consumer;
* Defines a batch filter that can operate on a
* {@link org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch} and filter
rows by using the
* selected vector to determine the eligible rows.
+ * @since 1.7.0
*/
public interface BatchFilter extends Consumer<OrcFilterContext> {
diff --git a/java/core/src/java/org/apache/orc/filter/PluginFilterService.java
b/java/core/src/java/org/apache/orc/filter/PluginFilterService.java
index e353df453..f9d025e97 100644
--- a/java/core/src/java/org/apache/orc/filter/PluginFilterService.java
+++ b/java/core/src/java/org/apache/orc/filter/PluginFilterService.java
@@ -25,6 +25,7 @@ import org.apache.hadoop.conf.Configuration;
* combined using AND.
* The filter is expected to be deterministic (for reattempts) and agnostic of
the application order
* which is non-deterministic.
+ * @since 1.8.0
*/
public interface PluginFilterService {
/**
diff --git a/java/core/src/java/org/apache/orc/geospatial/BoundingBox.java
b/java/core/src/java/org/apache/orc/geospatial/BoundingBox.java
index 093e2c96c..973753fd5 100644
--- a/java/core/src/java/org/apache/orc/geospatial/BoundingBox.java
+++ b/java/core/src/java/org/apache/orc/geospatial/BoundingBox.java
@@ -26,6 +26,7 @@ import org.locationtech.jts.geom.Geometry;
* Bounding box for Geometry or Geography type in the representation of min/max
* value pairs of coordinates from each axis.
* A bounding box is considered valid if none of the X / Y dimensions contain
NaN.
+ * @since 2.2.0
*/
public class BoundingBox {
diff --git a/java/core/src/java/org/apache/orc/geospatial/GeospatialTypes.java
b/java/core/src/java/org/apache/orc/geospatial/GeospatialTypes.java
index c1067adad..f165a0f77 100644
--- a/java/core/src/java/org/apache/orc/geospatial/GeospatialTypes.java
+++ b/java/core/src/java/org/apache/orc/geospatial/GeospatialTypes.java
@@ -36,6 +36,7 @@ import java.util.stream.Collectors;
*
* When invalid, the types list is cleared and remains empty. All subsequent
* updates and merges are ignored until reset() is called.
+ * @since 2.2.0
*/
public class GeospatialTypes {
diff --git a/java/core/src/java/org/apache/orc/impl/AcidStats.java
b/java/core/src/java/org/apache/orc/impl/AcidStats.java
index 72b02fc7c..de787741d 100644
--- a/java/core/src/java/org/apache/orc/impl/AcidStats.java
+++ b/java/core/src/java/org/apache/orc/impl/AcidStats.java
@@ -20,6 +20,7 @@ package org.apache.orc.impl;
/**
* Statistics about the ACID operations in an ORC file
+ * @since 1.1.0
*/
public class AcidStats {
public long inserts;
diff --git a/java/core/src/java/org/apache/orc/impl/AircompressorCodec.java
b/java/core/src/java/org/apache/orc/impl/AircompressorCodec.java
index 5bc281bfc..395bfe0cb 100644
--- a/java/core/src/java/org/apache/orc/impl/AircompressorCodec.java
+++ b/java/core/src/java/org/apache/orc/impl/AircompressorCodec.java
@@ -26,6 +26,9 @@ import org.apache.orc.CompressionKind;
import java.io.IOException;
import java.nio.ByteBuffer;
+/**
+ * @since 1.2.0
+ */
public class AircompressorCodec implements CompressionCodec {
private final CompressionKind kind;
private final Compressor compressor;
diff --git a/java/core/src/java/org/apache/orc/impl/BitFieldReader.java
b/java/core/src/java/org/apache/orc/impl/BitFieldReader.java
index effdddae5..1edae0914 100644
--- a/java/core/src/java/org/apache/orc/impl/BitFieldReader.java
+++ b/java/core/src/java/org/apache/orc/impl/BitFieldReader.java
@@ -24,6 +24,9 @@ import org.apache.hadoop.hive.ql.io.filter.FilterContext;
import java.io.EOFException;
import java.io.IOException;
+/**
+ * @since 1.1.0
+ */
public final class BitFieldReader {
private final RunLengthByteReader input;
private int current;
diff --git a/java/core/src/java/org/apache/orc/impl/BitFieldWriter.java
b/java/core/src/java/org/apache/orc/impl/BitFieldWriter.java
index 9b67f0117..b76cf78f0 100644
--- a/java/core/src/java/org/apache/orc/impl/BitFieldWriter.java
+++ b/java/core/src/java/org/apache/orc/impl/BitFieldWriter.java
@@ -21,6 +21,9 @@ package org.apache.orc.impl;
import java.io.IOException;
import java.util.function.Consumer;
+/**
+ * @since 1.1.0
+ */
public class BitFieldWriter {
private RunLengthByteWriter output;
private final int bitSize;
diff --git a/java/core/src/java/org/apache/orc/impl/BrotliCodec.java
b/java/core/src/java/org/apache/orc/impl/BrotliCodec.java
index 6e45d1a5f..0306ae58a 100644
--- a/java/core/src/java/org/apache/orc/impl/BrotliCodec.java
+++ b/java/core/src/java/org/apache/orc/impl/BrotliCodec.java
@@ -27,6 +27,9 @@ import org.apache.orc.CompressionKind;
import java.io.IOException;
import java.nio.ByteBuffer;
+/**
+ * @since 2.0.0
+ */
public class BrotliCodec implements CompressionCodec, DirectDecompressionCodec
{
// load jni library.
static {
diff --git a/java/core/src/java/org/apache/orc/impl/BufferChunk.java
b/java/core/src/java/org/apache/orc/impl/BufferChunk.java
index d43b2de1a..d174d0a61 100644
--- a/java/core/src/java/org/apache/orc/impl/BufferChunk.java
+++ b/java/core/src/java/org/apache/orc/impl/BufferChunk.java
@@ -27,6 +27,7 @@ import java.nio.ByteBuffer;
* The sections of stripe that we have read.
* This might not match diskRange - 1 disk range can be multiple buffer chunks,
* depending on DFS block boundaries.
+ * @since 1.1.0
*/
public class BufferChunk extends DiskRangeList {
diff --git a/java/core/src/java/org/apache/orc/impl/BufferChunkList.java
b/java/core/src/java/org/apache/orc/impl/BufferChunkList.java
index 1bd4e8abd..a6b016453 100644
--- a/java/core/src/java/org/apache/orc/impl/BufferChunkList.java
+++ b/java/core/src/java/org/apache/orc/impl/BufferChunkList.java
@@ -20,6 +20,7 @@ package org.apache.orc.impl;
/**
* Builds a list of buffer chunks
+ * @since 1.6.0
*/
public class BufferChunkList {
private BufferChunk head;
diff --git a/java/core/src/java/org/apache/orc/impl/ColumnStatisticsImpl.java
b/java/core/src/java/org/apache/orc/impl/ColumnStatisticsImpl.java
index c5537e0c6..2b419a86d 100644
--- a/java/core/src/java/org/apache/orc/impl/ColumnStatisticsImpl.java
+++ b/java/core/src/java/org/apache/orc/impl/ColumnStatisticsImpl.java
@@ -57,6 +57,9 @@ import java.util.Set;
import java.util.TimeZone;
+/**
+ * @since 1.1.0
+ */
public class ColumnStatisticsImpl implements ColumnStatistics {
@Override
diff --git
a/java/core/src/java/org/apache/orc/impl/ConvertTreeReaderFactory.java
b/java/core/src/java/org/apache/orc/impl/ConvertTreeReaderFactory.java
index 90ead13d3..d3d8f3102 100644
--- a/java/core/src/java/org/apache/orc/impl/ConvertTreeReaderFactory.java
+++ b/java/core/src/java/org/apache/orc/impl/ConvertTreeReaderFactory.java
@@ -56,6 +56,7 @@ import java.util.TimeZone;
/**
* Convert ORC tree readers.
+ * @since 1.1.0
*/
public class ConvertTreeReaderFactory extends TreeReaderFactory {
diff --git a/java/core/src/java/org/apache/orc/impl/CryptoUtils.java
b/java/core/src/java/org/apache/orc/impl/CryptoUtils.java
index 215d0bd92..eb1539cca 100644
--- a/java/core/src/java/org/apache/orc/impl/CryptoUtils.java
+++ b/java/core/src/java/org/apache/orc/impl/CryptoUtils.java
@@ -32,6 +32,7 @@ import java.util.function.Consumer;
/**
* This class has routines to work with encryption within ORC files.
+ * @since 1.6.0
*/
public class CryptoUtils {
diff --git a/java/core/src/java/org/apache/orc/impl/DataReaderProperties.java
b/java/core/src/java/org/apache/orc/impl/DataReaderProperties.java
index 51f8d05dc..cb56d5d0a 100644
--- a/java/core/src/java/org/apache/orc/impl/DataReaderProperties.java
+++ b/java/core/src/java/org/apache/orc/impl/DataReaderProperties.java
@@ -25,6 +25,9 @@ import org.apache.orc.OrcConf;
import java.util.function.Supplier;
+/**
+ * @since 1.1.0
+ */
public final class DataReaderProperties {
private final Supplier<FileSystem> fileSystemSupplier;
diff --git a/java/core/src/java/org/apache/orc/impl/DateUtils.java
b/java/core/src/java/org/apache/orc/impl/DateUtils.java
index 8488901a2..b826d6e4c 100644
--- a/java/core/src/java/org/apache/orc/impl/DateUtils.java
+++ b/java/core/src/java/org/apache/orc/impl/DateUtils.java
@@ -39,6 +39,7 @@ import java.util.concurrent.TimeUnit;
* <p>
* These utilities will be fast for the common case (> 1582 AD), but slow
* for old dates.
+ * @since 1.7.0
*/
public class DateUtils {
private static final ZoneId UTC = ZoneId.of("UTC");
diff --git a/java/core/src/java/org/apache/orc/impl/Dictionary.java
b/java/core/src/java/org/apache/orc/impl/Dictionary.java
index 18e990b8f..8047a5bb1 100644
--- a/java/core/src/java/org/apache/orc/impl/Dictionary.java
+++ b/java/core/src/java/org/apache/orc/impl/Dictionary.java
@@ -28,6 +28,7 @@ import java.nio.ByteBuffer;
/**
* Interface to define the dictionary used for encoding value in columns
* of specific types like string, char, varchar, etc.
+ * @since 1.7.0
*/
public interface Dictionary {
enum IMPL {
diff --git a/java/core/src/java/org/apache/orc/impl/DictionaryUtils.java
b/java/core/src/java/org/apache/orc/impl/DictionaryUtils.java
index 8a3ddcbe0..6c4a6242e 100644
--- a/java/core/src/java/org/apache/orc/impl/DictionaryUtils.java
+++ b/java/core/src/java/org/apache/orc/impl/DictionaryUtils.java
@@ -24,6 +24,9 @@ import java.io.IOException;
import java.io.OutputStream;
import java.nio.ByteBuffer;
+/**
+ * @since 1.7.0
+ */
public class DictionaryUtils {
private DictionaryUtils() {
// Utility class does nothing in constructor
diff --git
a/java/core/src/java/org/apache/orc/impl/DirectDecompressionCodec.java
b/java/core/src/java/org/apache/orc/impl/DirectDecompressionCodec.java
index b70f7cdb3..a0d81bad7 100644
--- a/java/core/src/java/org/apache/orc/impl/DirectDecompressionCodec.java
+++ b/java/core/src/java/org/apache/orc/impl/DirectDecompressionCodec.java
@@ -23,6 +23,9 @@ import org.apache.orc.CompressionCodec;
import java.io.IOException;
import java.nio.ByteBuffer;
+/**
+ * @since 1.1.0
+ */
public interface DirectDecompressionCodec extends CompressionCodec {
/**
* Check if the codec is available.
diff --git a/java/core/src/java/org/apache/orc/impl/DynamicByteArray.java
b/java/core/src/java/org/apache/orc/impl/DynamicByteArray.java
index b1a503887..7402bd8a3 100644
--- a/java/core/src/java/org/apache/orc/impl/DynamicByteArray.java
+++ b/java/core/src/java/org/apache/orc/impl/DynamicByteArray.java
@@ -30,6 +30,7 @@ import java.util.Arrays;
/**
* A class that is a growable array of bytes. Growth is managed in terms of
* chunks that are allocated when needed.
+ * @since 1.1.0
*/
public final class DynamicByteArray {
static final int DEFAULT_CHUNKSIZE = 32 * 1024;
diff --git a/java/core/src/java/org/apache/orc/impl/DynamicIntArray.java
b/java/core/src/java/org/apache/orc/impl/DynamicIntArray.java
index 9b47f0e92..16ea659de 100644
--- a/java/core/src/java/org/apache/orc/impl/DynamicIntArray.java
+++ b/java/core/src/java/org/apache/orc/impl/DynamicIntArray.java
@@ -33,6 +33,7 @@ import java.util.Arrays;
* <p>
* NOTE: Like standard Collection implementations/arrays, this class is not
* synchronized.
+ * @since 1.1.0
*/
public final class DynamicIntArray {
static final int DEFAULT_CHUNKSIZE = 8 * 1024;
diff --git a/java/core/src/java/org/apache/orc/impl/HadoopShimsFactory.java
b/java/core/src/java/org/apache/orc/impl/HadoopShimsFactory.java
index 9f0ae946c..936ab6338 100644
--- a/java/core/src/java/org/apache/orc/impl/HadoopShimsFactory.java
+++ b/java/core/src/java/org/apache/orc/impl/HadoopShimsFactory.java
@@ -26,6 +26,7 @@ import java.lang.reflect.InvocationTargetException;
/**
* The factory for getting the proper version of the Hadoop shims.
+ * @since 1.5.0
*/
public class HadoopShimsFactory {
private static final Logger LOG =
LoggerFactory.getLogger(HadoopShimsFactory.class);
diff --git a/java/core/src/java/org/apache/orc/impl/InStream.java
b/java/core/src/java/org/apache/orc/impl/InStream.java
index 390c574e6..bf23a9508 100644
--- a/java/core/src/java/org/apache/orc/impl/InStream.java
+++ b/java/core/src/java/org/apache/orc/impl/InStream.java
@@ -36,6 +36,9 @@ import java.security.InvalidKeyException;
import java.security.Key;
import java.util.function.Consumer;
+/**
+ * @since 1.1.0
+ */
public abstract class InStream extends InputStream {
private static final Logger LOG = LoggerFactory.getLogger(InStream.class);
diff --git a/java/core/src/java/org/apache/orc/impl/IntegerReader.java
b/java/core/src/java/org/apache/orc/impl/IntegerReader.java
index 39ec7cd4a..2d4d18c52 100644
--- a/java/core/src/java/org/apache/orc/impl/IntegerReader.java
+++ b/java/core/src/java/org/apache/orc/impl/IntegerReader.java
@@ -24,6 +24,7 @@ import java.io.IOException;
/**
* Interface for reading integers.
+ * @since 1.1.0
*/
public interface IntegerReader {
diff --git a/java/core/src/java/org/apache/orc/impl/IntegerWriter.java
b/java/core/src/java/org/apache/orc/impl/IntegerWriter.java
index e09e80c96..b75ea727b 100644
--- a/java/core/src/java/org/apache/orc/impl/IntegerWriter.java
+++ b/java/core/src/java/org/apache/orc/impl/IntegerWriter.java
@@ -23,6 +23,7 @@ import java.util.function.Consumer;
/**
* Interface for writing integers.
+ * @since 1.1.0
*/
public interface IntegerWriter {
diff --git a/java/core/src/java/org/apache/orc/impl/Lz4Codec.java
b/java/core/src/java/org/apache/orc/impl/Lz4Codec.java
index cc9f89cf0..54f48c13b 100644
--- a/java/core/src/java/org/apache/orc/impl/Lz4Codec.java
+++ b/java/core/src/java/org/apache/orc/impl/Lz4Codec.java
@@ -27,6 +27,9 @@ import org.apache.orc.CompressionKind;
import java.io.IOException;
import java.nio.ByteBuffer;
+/**
+ * @since 2.3.0
+ */
public class Lz4Codec implements CompressionCodec, DirectDecompressionCodec {
private static final LZ4Factory lz4Factory = LZ4Factory.fastestInstance();
private static final ThreadLocal<byte[]> threadBuffer =
ThreadLocal.withInitial(() -> null);
diff --git a/java/core/src/java/org/apache/orc/impl/MaskDescriptionImpl.java
b/java/core/src/java/org/apache/orc/impl/MaskDescriptionImpl.java
index 91dec7368..588f2b4fd 100644
--- a/java/core/src/java/org/apache/orc/impl/MaskDescriptionImpl.java
+++ b/java/core/src/java/org/apache/orc/impl/MaskDescriptionImpl.java
@@ -29,6 +29,9 @@ import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
+/**
+ * @since 1.6.0
+ */
public class MaskDescriptionImpl implements DataMaskDescription,
Comparable<MaskDescriptionImpl> {
private int id;
diff --git a/java/core/src/java/org/apache/orc/impl/MemoryManager.java
b/java/core/src/java/org/apache/orc/impl/MemoryManager.java
index 08738af3b..7d853a448 100644
--- a/java/core/src/java/org/apache/orc/impl/MemoryManager.java
+++ b/java/core/src/java/org/apache/orc/impl/MemoryManager.java
@@ -22,6 +22,7 @@ import org.apache.hadoop.conf.Configuration;
/**
* Shim for backwards compatibility with Hive
+ * @since 1.1.0
*/
@Deprecated
public class MemoryManager extends MemoryManagerImpl {
diff --git a/java/core/src/java/org/apache/orc/impl/MemoryManagerImpl.java
b/java/core/src/java/org/apache/orc/impl/MemoryManagerImpl.java
index cb06e7fd9..e86251a5a 100644
--- a/java/core/src/java/org/apache/orc/impl/MemoryManagerImpl.java
+++ b/java/core/src/java/org/apache/orc/impl/MemoryManagerImpl.java
@@ -38,6 +38,7 @@ import java.util.concurrent.atomic.AtomicLong;
* <p>
* This class is not thread safe, but is re-entrant - ensure creation and all
* invocations are triggered from the same thread.
+ * @since 1.4.0
*/
public class MemoryManagerImpl implements MemoryManager {
diff --git a/java/core/src/java/org/apache/orc/impl/OrcAcidUtils.java
b/java/core/src/java/org/apache/orc/impl/OrcAcidUtils.java
index f67f785fb..c6695cf41 100644
--- a/java/core/src/java/org/apache/orc/impl/OrcAcidUtils.java
+++ b/java/core/src/java/org/apache/orc/impl/OrcAcidUtils.java
@@ -30,6 +30,9 @@ import java.nio.charset.Charset;
import java.nio.charset.CharsetDecoder;
import java.nio.charset.StandardCharsets;
+/**
+ * @since 1.1.0
+ */
public class OrcAcidUtils {
public static final String ACID_STATS = "hive.acid.stats";
public static final String DELTA_SIDE_FILE_SUFFIX = "_flush_length";
diff --git a/java/core/src/java/org/apache/orc/impl/OrcCodecPool.java
b/java/core/src/java/org/apache/orc/impl/OrcCodecPool.java
index e486a3ec9..93557b1ec 100644
--- a/java/core/src/java/org/apache/orc/impl/OrcCodecPool.java
+++ b/java/core/src/java/org/apache/orc/impl/OrcCodecPool.java
@@ -29,6 +29,7 @@ import java.util.concurrent.ConcurrentHashMap;
/**
* A clone of Hadoop codec pool for ORC; cause it has its own codecs...
+ * @since 1.4.0
*/
public final class OrcCodecPool {
private static final Logger LOG =
LoggerFactory.getLogger(OrcCodecPool.class);
diff --git a/java/core/src/java/org/apache/orc/impl/OrcFilterContextImpl.java
b/java/core/src/java/org/apache/orc/impl/OrcFilterContextImpl.java
index 33eec241a..33f24c7b4 100644
--- a/java/core/src/java/org/apache/orc/impl/OrcFilterContextImpl.java
+++ b/java/core/src/java/org/apache/orc/impl/OrcFilterContextImpl.java
@@ -33,6 +33,7 @@ import java.util.Map;
* <p>
* This offers a convenience method of finding the column vector from a given
column name
* that the filters can invoke to get access to the column vector.
+ * @since 1.7.0
*/
public class OrcFilterContextImpl implements OrcFilterContext {
private VectorizedRowBatch batch = null;
diff --git a/java/core/src/java/org/apache/orc/impl/OrcIndex.java
b/java/core/src/java/org/apache/orc/impl/OrcIndex.java
index 357989e34..c2ab5d484 100644
--- a/java/core/src/java/org/apache/orc/impl/OrcIndex.java
+++ b/java/core/src/java/org/apache/orc/impl/OrcIndex.java
@@ -20,6 +20,9 @@ package org.apache.orc.impl;
import org.apache.orc.OrcProto;
+/**
+ * @since 1.1.0
+ */
public final class OrcIndex {
OrcProto.RowIndex[] rowGroupIndex;
OrcProto.Stream.Kind[] bloomFilterKinds;
diff --git a/java/core/src/java/org/apache/orc/impl/OrcTail.java
b/java/core/src/java/org/apache/orc/impl/OrcTail.java
index 37c6a4931..8e95fda27 100644
--- a/java/core/src/java/org/apache/orc/impl/OrcTail.java
+++ b/java/core/src/java/org/apache/orc/impl/OrcTail.java
@@ -35,6 +35,9 @@ import java.util.ArrayList;
import java.util.List;
// TODO: Make OrcTail implement FileMetadata or Reader interface
+/**
+ * @since 1.2.0
+ */
public final class OrcTail {
private static final Logger LOG = LoggerFactory.getLogger(OrcTail.class);
diff --git a/java/core/src/java/org/apache/orc/impl/OutStream.java
b/java/core/src/java/org/apache/orc/impl/OutStream.java
index 5724c6479..6a0ae2d73 100644
--- a/java/core/src/java/org/apache/orc/impl/OutStream.java
+++ b/java/core/src/java/org/apache/orc/impl/OutStream.java
@@ -40,6 +40,7 @@ import java.util.function.Consumer;
/**
* The output stream for writing to ORC files.
* It handles both compression and encryption.
+ * @since 1.1.0
*/
public class OutStream extends PositionedOutputStream {
private static final Logger LOG = LoggerFactory.getLogger(OutStream.class);
diff --git a/java/core/src/java/org/apache/orc/impl/ParserUtils.java
b/java/core/src/java/org/apache/orc/impl/ParserUtils.java
index c864465bd..1067d6658 100644
--- a/java/core/src/java/org/apache/orc/impl/ParserUtils.java
+++ b/java/core/src/java/org/apache/orc/impl/ParserUtils.java
@@ -30,6 +30,9 @@ import java.util.ArrayList;
import java.util.List;
import java.util.regex.Pattern;
+/**
+ * @since 1.6.0
+ */
public class ParserUtils {
private static final TypeDescription.Category[]
TYPE_DESCRIPTION_CATEGORY_VALUES
= TypeDescription.Category.values();
diff --git a/java/core/src/java/org/apache/orc/impl/PhysicalFsWriter.java
b/java/core/src/java/org/apache/orc/impl/PhysicalFsWriter.java
index d6fb296bd..4f1386f88 100644
--- a/java/core/src/java/org/apache/orc/impl/PhysicalFsWriter.java
+++ b/java/core/src/java/org/apache/orc/impl/PhysicalFsWriter.java
@@ -44,6 +44,9 @@ import java.util.List;
import java.util.Map;
import java.util.TreeMap;
+/**
+ * @since 1.3.0
+ */
public class PhysicalFsWriter implements PhysicalWriter {
private static final Logger LOG =
LoggerFactory.getLogger(PhysicalFsWriter.class);
diff --git a/java/core/src/java/org/apache/orc/impl/PositionProvider.java
b/java/core/src/java/org/apache/orc/impl/PositionProvider.java
index f13f9a4e1..d9ef67a68 100644
--- a/java/core/src/java/org/apache/orc/impl/PositionProvider.java
+++ b/java/core/src/java/org/apache/orc/impl/PositionProvider.java
@@ -20,6 +20,7 @@ package org.apache.orc.impl;
/**
* An interface used for seeking to a row index.
+ * @since 1.1.0
*/
public interface PositionProvider {
/**
diff --git a/java/core/src/java/org/apache/orc/impl/PositionRecorder.java
b/java/core/src/java/org/apache/orc/impl/PositionRecorder.java
index 8892d3e45..d2b7c2c1a 100644
--- a/java/core/src/java/org/apache/orc/impl/PositionRecorder.java
+++ b/java/core/src/java/org/apache/orc/impl/PositionRecorder.java
@@ -20,6 +20,7 @@ package org.apache.orc.impl;
/**
* An interface for recording positions in a stream.
+ * @since 1.1.0
*/
public interface PositionRecorder {
/**
diff --git a/java/core/src/java/org/apache/orc/impl/PositionedOutputStream.java
b/java/core/src/java/org/apache/orc/impl/PositionedOutputStream.java
index 9db451137..82396f48c 100644
--- a/java/core/src/java/org/apache/orc/impl/PositionedOutputStream.java
+++ b/java/core/src/java/org/apache/orc/impl/PositionedOutputStream.java
@@ -22,6 +22,9 @@ import java.io.IOException;
import java.io.OutputStream;
import java.util.function.Consumer;
+/**
+ * @since 1.1.0
+ */
public abstract class PositionedOutputStream extends OutputStream {
/**
diff --git a/java/core/src/java/org/apache/orc/impl/ReaderImpl.java
b/java/core/src/java/org/apache/orc/impl/ReaderImpl.java
index f1c6b146b..eaa978c73 100644
--- a/java/core/src/java/org/apache/orc/impl/ReaderImpl.java
+++ b/java/core/src/java/org/apache/orc/impl/ReaderImpl.java
@@ -61,6 +61,9 @@ import java.util.List;
import java.util.Objects;
import java.util.function.Supplier;
+/**
+ * @since 1.1.0
+ */
public class ReaderImpl implements Reader {
private static final Logger LOG = LoggerFactory.getLogger(ReaderImpl.class);
diff --git a/java/core/src/java/org/apache/orc/impl/RecordReaderImpl.java
b/java/core/src/java/org/apache/orc/impl/RecordReaderImpl.java
index 9553febc4..34fd415bb 100644
--- a/java/core/src/java/org/apache/orc/impl/RecordReaderImpl.java
+++ b/java/core/src/java/org/apache/orc/impl/RecordReaderImpl.java
@@ -76,6 +76,9 @@ import java.util.TimeZone;
import java.util.TreeSet;
import java.util.function.Consumer;
+/**
+ * @since 1.1.0
+ */
public class RecordReaderImpl implements RecordReader {
static final Logger LOG = LoggerFactory.getLogger(RecordReaderImpl.class);
private static final boolean isLogDebugEnabled = LOG.isDebugEnabled();
diff --git a/java/core/src/java/org/apache/orc/impl/RecordReaderUtils.java
b/java/core/src/java/org/apache/orc/impl/RecordReaderUtils.java
index 11f5e227b..2c7397068 100644
--- a/java/core/src/java/org/apache/orc/impl/RecordReaderUtils.java
+++ b/java/core/src/java/org/apache/orc/impl/RecordReaderUtils.java
@@ -46,6 +46,7 @@ import java.util.function.Supplier;
/**
* Stateless methods shared between RecordReaderImpl and EncodedReaderImpl.
+ * @since 1.1.0
*/
public class RecordReaderUtils {
/**
diff --git a/java/core/src/java/org/apache/orc/impl/RunLengthByteReader.java
b/java/core/src/java/org/apache/orc/impl/RunLengthByteReader.java
index 7bf84b562..bfd887d0c 100644
--- a/java/core/src/java/org/apache/orc/impl/RunLengthByteReader.java
+++ b/java/core/src/java/org/apache/orc/impl/RunLengthByteReader.java
@@ -27,6 +27,7 @@ import java.io.IOException;
* A reader that reads a sequence of bytes. A control byte is read before
* each run with positive values 0 to 127 meaning 3 to 130 repetitions. If the
* byte is -1 to -128, 1 to 128 literal byte values follow.
+ * @since 1.1.0
*/
public class RunLengthByteReader {
private InStream input;
diff --git a/java/core/src/java/org/apache/orc/impl/RunLengthByteWriter.java
b/java/core/src/java/org/apache/orc/impl/RunLengthByteWriter.java
index ca46959b9..50b2a8369 100644
--- a/java/core/src/java/org/apache/orc/impl/RunLengthByteWriter.java
+++ b/java/core/src/java/org/apache/orc/impl/RunLengthByteWriter.java
@@ -25,6 +25,7 @@ import java.util.function.Consumer;
* A streamFactory that writes a sequence of bytes. A control byte is written
before
* each run with positive values 0 to 127 meaning 2 to 129 repetitions. If the
* bytes is -1 to -128, 1 to 128 literal byte values follow.
+ * @since 1.1.0
*/
public class RunLengthByteWriter {
static final int MIN_REPEAT_SIZE = 3;
diff --git a/java/core/src/java/org/apache/orc/impl/RunLengthIntegerReader.java
b/java/core/src/java/org/apache/orc/impl/RunLengthIntegerReader.java
index 52970cf91..d7f2ed22f 100644
--- a/java/core/src/java/org/apache/orc/impl/RunLengthIntegerReader.java
+++ b/java/core/src/java/org/apache/orc/impl/RunLengthIntegerReader.java
@@ -26,6 +26,9 @@ import java.io.IOException;
/**
* A reader that reads a sequence of integers.
* */
+/**
+ * @since 1.1.0
+ */
public class RunLengthIntegerReader implements IntegerReader {
private InStream input;
private final boolean signed;
diff --git
a/java/core/src/java/org/apache/orc/impl/RunLengthIntegerReaderV2.java
b/java/core/src/java/org/apache/orc/impl/RunLengthIntegerReaderV2.java
index dc625dc5f..6b0266268 100644
--- a/java/core/src/java/org/apache/orc/impl/RunLengthIntegerReaderV2.java
+++ b/java/core/src/java/org/apache/orc/impl/RunLengthIntegerReaderV2.java
@@ -30,6 +30,7 @@ import java.util.Arrays;
* A reader that reads a sequence of light weight compressed integers. Refer
* {@link RunLengthIntegerWriterV2} for description of various lightweight
* compression techniques.
+ * @since 1.1.0
*/
public class RunLengthIntegerReaderV2 implements IntegerReader {
public static final Logger LOG =
LoggerFactory.getLogger(RunLengthIntegerReaderV2.class);
diff --git a/java/core/src/java/org/apache/orc/impl/RunLengthIntegerWriter.java
b/java/core/src/java/org/apache/orc/impl/RunLengthIntegerWriter.java
index d8cc9bb24..e2dcdd8c7 100644
--- a/java/core/src/java/org/apache/orc/impl/RunLengthIntegerWriter.java
+++ b/java/core/src/java/org/apache/orc/impl/RunLengthIntegerWriter.java
@@ -26,6 +26,7 @@ import java.util.function.Consumer;
* each run with positive values 0 to 127 meaning 3 to 130 repetitions, each
* repetition is offset by a delta. If the control byte is -1 to -128, 1 to 128
* literal vint values follow.
+ * @since 1.1.0
*/
public class RunLengthIntegerWriter implements IntegerWriter {
static final int MIN_REPEAT_SIZE = 3;
diff --git
a/java/core/src/java/org/apache/orc/impl/RunLengthIntegerWriterV2.java
b/java/core/src/java/org/apache/orc/impl/RunLengthIntegerWriterV2.java
index 65bf884c3..b483902d0 100644
--- a/java/core/src/java/org/apache/orc/impl/RunLengthIntegerWriterV2.java
+++ b/java/core/src/java/org/apache/orc/impl/RunLengthIntegerWriterV2.java
@@ -116,6 +116,7 @@ import java.util.function.Consumer;
* <li>Delta blob - only positive values. monotonicity and orderness are
decided
* based on the sign of the base value and delta base</li>
* </ul>
+ * @since 1.1.0
*/
public class RunLengthIntegerWriterV2 implements IntegerWriter {
diff --git a/java/core/src/java/org/apache/orc/impl/SchemaEvolution.java
b/java/core/src/java/org/apache/orc/impl/SchemaEvolution.java
index eacff4b06..d1a88a475 100644
--- a/java/core/src/java/org/apache/orc/impl/SchemaEvolution.java
+++ b/java/core/src/java/org/apache/orc/impl/SchemaEvolution.java
@@ -34,6 +34,7 @@ import java.util.regex.Pattern;
/**
* Infer and track the evolution between the schema as stored in the file and
* the schema that has been requested by the reader.
+ * @since 1.1.0
*/
public class SchemaEvolution {
// indexed by reader column id
diff --git a/java/core/src/java/org/apache/orc/impl/SerializationUtils.java
b/java/core/src/java/org/apache/orc/impl/SerializationUtils.java
index a5824aca6..aec0832d6 100644
--- a/java/core/src/java/org/apache/orc/impl/SerializationUtils.java
+++ b/java/core/src/java/org/apache/orc/impl/SerializationUtils.java
@@ -36,6 +36,9 @@ import java.sql.Date;
import java.util.Arrays;
import java.util.TimeZone;
+/**
+ * @since 1.1.0
+ */
public final class SerializationUtils {
private static final Logger LOG =
LoggerFactory.getLogger(SerializationUtils.class);
diff --git a/java/core/src/java/org/apache/orc/impl/SnappyCodec.java
b/java/core/src/java/org/apache/orc/impl/SnappyCodec.java
index 2c97e52a9..ea249c9bc 100644
--- a/java/core/src/java/org/apache/orc/impl/SnappyCodec.java
+++ b/java/core/src/java/org/apache/orc/impl/SnappyCodec.java
@@ -25,6 +25,9 @@ import org.apache.orc.CompressionKind;
import java.io.IOException;
import java.nio.ByteBuffer;
+/**
+ * @since 1.1.0
+ */
public class SnappyCodec extends AircompressorCodec
implements DirectDecompressionCodec{
private static final HadoopShims SHIMS = HadoopShimsFactory.get();
diff --git a/java/core/src/java/org/apache/orc/impl/StreamName.java
b/java/core/src/java/org/apache/orc/impl/StreamName.java
index b9c38de10..5d438bcd3 100644
--- a/java/core/src/java/org/apache/orc/impl/StreamName.java
+++ b/java/core/src/java/org/apache/orc/impl/StreamName.java
@@ -26,6 +26,7 @@ import org.jetbrains.annotations.NotNull;
* The name of a stream within a stripe.
* <p>
* Sorted by area, encryption, column, and then kind.
+ * @since 1.1.0
*/
public class StreamName implements Comparable<StreamName> {
private final int column;
diff --git
a/java/core/src/java/org/apache/orc/impl/StringHashTableDictionary.java
b/java/core/src/java/org/apache/orc/impl/StringHashTableDictionary.java
index e6cbb9483..95bfe8931 100644
--- a/java/core/src/java/org/apache/orc/impl/StringHashTableDictionary.java
+++ b/java/core/src/java/org/apache/orc/impl/StringHashTableDictionary.java
@@ -29,6 +29,7 @@ import java.nio.ByteBuffer;
* and an offset for each entry. It is using chaining for collision resolution.
* <p>
* This implementation is not thread-safe.
+ * @since 1.7.0
*/
public class StringHashTableDictionary implements Dictionary {
diff --git a/java/core/src/java/org/apache/orc/impl/StringRedBlackTree.java
b/java/core/src/java/org/apache/orc/impl/StringRedBlackTree.java
index 5655ebd32..1639fb0d6 100644
--- a/java/core/src/java/org/apache/orc/impl/StringRedBlackTree.java
+++ b/java/core/src/java/org/apache/orc/impl/StringRedBlackTree.java
@@ -27,6 +27,7 @@ import java.nio.ByteBuffer;
/**
* A red-black tree that stores strings. The strings are stored as UTF-8 bytes
* and an offset for each entry.
+ * @since 1.1.0
*/
public class StringRedBlackTree extends RedBlackTree implements Dictionary {
private final DynamicByteArray byteArray = new DynamicByteArray();
diff --git a/java/core/src/java/org/apache/orc/impl/StripeStatisticsImpl.java
b/java/core/src/java/org/apache/orc/impl/StripeStatisticsImpl.java
index c9f6ee481..ee837d59c 100644
--- a/java/core/src/java/org/apache/orc/impl/StripeStatisticsImpl.java
+++ b/java/core/src/java/org/apache/orc/impl/StripeStatisticsImpl.java
@@ -25,6 +25,9 @@ import org.apache.orc.TypeDescription;
import java.util.ArrayList;
import java.util.List;
+/**
+ * @since 1.6.0
+ */
public class StripeStatisticsImpl extends StripeStatistics {
public StripeStatisticsImpl(TypeDescription schema,
List<OrcProto.ColumnStatistics> list,
diff --git a/java/core/src/java/org/apache/orc/impl/TreeReaderFactory.java
b/java/core/src/java/org/apache/orc/impl/TreeReaderFactory.java
index 67c36825d..6c814fc5a 100644
--- a/java/core/src/java/org/apache/orc/impl/TreeReaderFactory.java
+++ b/java/core/src/java/org/apache/orc/impl/TreeReaderFactory.java
@@ -63,6 +63,7 @@ import java.util.function.Consumer;
/**
* Factory for creating ORC tree readers.
+ * @since 1.1.0
*/
public class TreeReaderFactory {
public interface Context {
diff --git a/java/core/src/java/org/apache/orc/impl/TypeUtils.java
b/java/core/src/java/org/apache/orc/impl/TypeUtils.java
index 40d22e2c4..a88123e13 100644
--- a/java/core/src/java/org/apache/orc/impl/TypeUtils.java
+++ b/java/core/src/java/org/apache/orc/impl/TypeUtils.java
@@ -34,6 +34,9 @@ import org.apache.orc.TypeDescription;
import java.util.List;
+/**
+ * @since 1.6.0
+ */
public class TypeUtils {
private TypeUtils() {}
diff --git a/java/core/src/java/org/apache/orc/impl/Utf8Utils.java
b/java/core/src/java/org/apache/orc/impl/Utf8Utils.java
index 0e98ccff3..5f1bf89cb 100644
--- a/java/core/src/java/org/apache/orc/impl/Utf8Utils.java
+++ b/java/core/src/java/org/apache/orc/impl/Utf8Utils.java
@@ -20,6 +20,9 @@ package org.apache.orc.impl;
import java.nio.charset.StandardCharsets;
+/**
+ * @since 1.6.0
+ */
public final class Utf8Utils {
public static int charLength(byte[] data, int offset, int length) {
diff --git a/java/core/src/java/org/apache/orc/impl/VisitorContextImpl.java
b/java/core/src/java/org/apache/orc/impl/VisitorContextImpl.java
index 425c510e2..c0d4fda30 100644
--- a/java/core/src/java/org/apache/orc/impl/VisitorContextImpl.java
+++ b/java/core/src/java/org/apache/orc/impl/VisitorContextImpl.java
@@ -27,6 +27,7 @@ import java.io.OutputStream;
/**
* Base implementation for {@link
org.apache.orc.impl.Dictionary.VisitorContext} used to traversing
* all nodes in a dictionary.
+ * @since 1.7.0
*/
public class VisitorContextImpl implements Dictionary.VisitorContext {
private int originalPosition;
diff --git a/java/core/src/java/org/apache/orc/impl/WriterImpl.java
b/java/core/src/java/org/apache/orc/impl/WriterImpl.java
index eb85fe9d2..b064d1a0f 100644
--- a/java/core/src/java/org/apache/orc/impl/WriterImpl.java
+++ b/java/core/src/java/org/apache/orc/impl/WriterImpl.java
@@ -80,6 +80,7 @@ import java.util.TreeMap;
* Caveat: the MemoryManager is created during WriterOptions create, that has
* to be confined to a single thread as well.
*
+ * @since 1.1.0
*/
public class WriterImpl implements WriterInternal, MemoryManager.Callback {
diff --git a/java/core/src/java/org/apache/orc/impl/WriterInternal.java
b/java/core/src/java/org/apache/orc/impl/WriterInternal.java
index 29f5cf5c8..a02a51bed 100644
--- a/java/core/src/java/org/apache/orc/impl/WriterInternal.java
+++ b/java/core/src/java/org/apache/orc/impl/WriterInternal.java
@@ -22,6 +22,7 @@ import org.apache.orc.Writer;
/**
* The ORC internal API to the writer.
+ * @since 1.5.0
*/
public interface WriterInternal extends Writer {
diff --git a/java/core/src/java/org/apache/orc/impl/XerialSnappyCodec.java
b/java/core/src/java/org/apache/orc/impl/XerialSnappyCodec.java
index f5650053a..e5a94e09a 100644
--- a/java/core/src/java/org/apache/orc/impl/XerialSnappyCodec.java
+++ b/java/core/src/java/org/apache/orc/impl/XerialSnappyCodec.java
@@ -25,6 +25,9 @@ import org.xerial.snappy.Snappy;
import java.io.IOException;
import java.nio.ByteBuffer;
+/**
+ * @since 2.3.0
+ */
public class XerialSnappyCodec implements CompressionCodec,
DirectDecompressionCodec {
private static final ThreadLocal<byte[]> threadBuffer =
ThreadLocal.withInitial(() -> null);
diff --git a/java/core/src/java/org/apache/orc/impl/ZlibCodec.java
b/java/core/src/java/org/apache/orc/impl/ZlibCodec.java
index 428b3e74f..14042736e 100644
--- a/java/core/src/java/org/apache/orc/impl/ZlibCodec.java
+++ b/java/core/src/java/org/apache/orc/impl/ZlibCodec.java
@@ -27,6 +27,9 @@ import java.util.zip.DataFormatException;
import java.util.zip.Deflater;
import java.util.zip.Inflater;
+/**
+ * @since 1.1.0
+ */
public class ZlibCodec implements CompressionCodec, DirectDecompressionCodec {
private static final HadoopShims SHIMS = HadoopShimsFactory.get();
// Note: shim path does not care about levels and strategies (only used for
decompression).
diff --git a/java/core/src/java/org/apache/orc/impl/ZstdCodec.java
b/java/core/src/java/org/apache/orc/impl/ZstdCodec.java
index cf16adfb2..84b411221 100644
--- a/java/core/src/java/org/apache/orc/impl/ZstdCodec.java
+++ b/java/core/src/java/org/apache/orc/impl/ZstdCodec.java
@@ -26,6 +26,9 @@ import org.apache.orc.CompressionKind;
import java.io.IOException;
import java.nio.ByteBuffer;
+/**
+ * @since 2.1.0
+ */
public class ZstdCodec implements CompressionCodec, DirectDecompressionCodec {
private ZstdOptions zstdOptions = null;
private ZstdCompressCtx zstdCompressCtx = null;
diff --git a/java/core/src/java/org/apache/orc/impl/filter/AndFilter.java
b/java/core/src/java/org/apache/orc/impl/filter/AndFilter.java
index 02668626a..50ab53c5f 100644
--- a/java/core/src/java/org/apache/orc/impl/filter/AndFilter.java
+++ b/java/core/src/java/org/apache/orc/impl/filter/AndFilter.java
@@ -20,6 +20,9 @@ package org.apache.orc.impl.filter;
import org.apache.orc.OrcFilterContext;
+/**
+ * @since 1.7.0
+ */
public class AndFilter implements VectorFilter {
public final VectorFilter[] filters;
private final Selected andBound = new Selected();
diff --git a/java/core/src/java/org/apache/orc/impl/filter/FilterFactory.java
b/java/core/src/java/org/apache/orc/impl/filter/FilterFactory.java
index 4fceb97b9..06103b86f 100644
--- a/java/core/src/java/org/apache/orc/impl/filter/FilterFactory.java
+++ b/java/core/src/java/org/apache/orc/impl/filter/FilterFactory.java
@@ -37,6 +37,9 @@ import java.util.List;
import java.util.ServiceLoader;
import java.util.Set;
+/**
+ * @since 1.7.0
+ */
public class FilterFactory {
private static final Logger LOG =
LoggerFactory.getLogger(FilterFactory.class);
diff --git a/java/core/src/java/org/apache/orc/impl/filter/IsNotNullFilter.java
b/java/core/src/java/org/apache/orc/impl/filter/IsNotNullFilter.java
index d9828cc5c..312c92710 100644
--- a/java/core/src/java/org/apache/orc/impl/filter/IsNotNullFilter.java
+++ b/java/core/src/java/org/apache/orc/impl/filter/IsNotNullFilter.java
@@ -21,6 +21,9 @@ package org.apache.orc.impl.filter;
import org.apache.hadoop.hive.ql.exec.vector.ColumnVector;
import org.apache.orc.OrcFilterContext;
+/**
+ * @since 1.7.0
+ */
public class IsNotNullFilter implements VectorFilter {
private final String colName;
diff --git a/java/core/src/java/org/apache/orc/impl/filter/IsNullFilter.java
b/java/core/src/java/org/apache/orc/impl/filter/IsNullFilter.java
index 8189ddfe5..4c204495f 100644
--- a/java/core/src/java/org/apache/orc/impl/filter/IsNullFilter.java
+++ b/java/core/src/java/org/apache/orc/impl/filter/IsNullFilter.java
@@ -21,6 +21,9 @@ package org.apache.orc.impl.filter;
import org.apache.hadoop.hive.ql.exec.vector.ColumnVector;
import org.apache.orc.OrcFilterContext;
+/**
+ * @since 1.7.0
+ */
public class IsNullFilter implements VectorFilter {
private final String colName;
diff --git a/java/core/src/java/org/apache/orc/impl/filter/LeafFilter.java
b/java/core/src/java/org/apache/orc/impl/filter/LeafFilter.java
index fc59e5453..72d7c3d03 100644
--- a/java/core/src/java/org/apache/orc/impl/filter/LeafFilter.java
+++ b/java/core/src/java/org/apache/orc/impl/filter/LeafFilter.java
@@ -21,6 +21,9 @@ package org.apache.orc.impl.filter;
import org.apache.hadoop.hive.ql.exec.vector.ColumnVector;
import org.apache.orc.OrcFilterContext;
+/**
+ * @since 1.7.0
+ */
public abstract class LeafFilter implements VectorFilter {
public String getColName() {
return colName;
diff --git a/java/core/src/java/org/apache/orc/impl/filter/OrFilter.java
b/java/core/src/java/org/apache/orc/impl/filter/OrFilter.java
index 5b91f6112..212d97470 100644
--- a/java/core/src/java/org/apache/orc/impl/filter/OrFilter.java
+++ b/java/core/src/java/org/apache/orc/impl/filter/OrFilter.java
@@ -20,6 +20,9 @@ package org.apache.orc.impl.filter;
import org.apache.orc.OrcFilterContext;
+/**
+ * @since 1.7.0
+ */
public class OrFilter implements VectorFilter {
public final VectorFilter[] filters;
diff --git a/java/core/src/java/org/apache/orc/impl/filter/Selected.java
b/java/core/src/java/org/apache/orc/impl/filter/Selected.java
index e237d7f3b..2ae426b0e 100644
--- a/java/core/src/java/org/apache/orc/impl/filter/Selected.java
+++ b/java/core/src/java/org/apache/orc/impl/filter/Selected.java
@@ -22,6 +22,7 @@ import org.apache.orc.OrcFilterContext;
/**
* Wrapper class for the selected vector that centralizes the convenience
functions
+ * @since 1.7.0
*/
public class Selected {
// Sorted array of row indices
diff --git a/java/core/src/java/org/apache/orc/impl/filter/VectorFilter.java
b/java/core/src/java/org/apache/orc/impl/filter/VectorFilter.java
index 90c35133f..67f1e7d67 100644
--- a/java/core/src/java/org/apache/orc/impl/filter/VectorFilter.java
+++ b/java/core/src/java/org/apache/orc/impl/filter/VectorFilter.java
@@ -26,6 +26,7 @@ import org.apache.orc.OrcFilterContext;
* <p>
* This is the interface that is the basis of both the leaf filters such as
Equals, In and logical
* filters such as And, Or and Not
+ * @since 1.7.0
*/
public interface VectorFilter {
diff --git
a/java/core/src/java/org/apache/orc/impl/filter/leaf/LeafFilterFactory.java
b/java/core/src/java/org/apache/orc/impl/filter/leaf/LeafFilterFactory.java
index c97e72cb7..5c1a6c759 100644
--- a/java/core/src/java/org/apache/orc/impl/filter/leaf/LeafFilterFactory.java
+++ b/java/core/src/java/org/apache/orc/impl/filter/leaf/LeafFilterFactory.java
@@ -36,6 +36,9 @@ import java.util.stream.Collectors;
import static org.apache.orc.impl.TreeReaderFactory.isDecimalAsLong;
+/**
+ * @since 1.7.0
+ */
public class LeafFilterFactory {
private LeafFilterFactory() {}
diff --git a/java/core/src/java/org/apache/orc/impl/mask/DecimalIdentity.java
b/java/core/src/java/org/apache/orc/impl/mask/DecimalIdentity.java
index 86621394f..24daaaeba 100644
--- a/java/core/src/java/org/apache/orc/impl/mask/DecimalIdentity.java
+++ b/java/core/src/java/org/apache/orc/impl/mask/DecimalIdentity.java
@@ -24,6 +24,7 @@ import org.apache.orc.DataMask;
/**
* An identity data mask for decimal types.
+ * @since 1.5.0
*/
public class DecimalIdentity implements DataMask {
@Override
diff --git a/java/core/src/java/org/apache/orc/impl/mask/DoubleIdentity.java
b/java/core/src/java/org/apache/orc/impl/mask/DoubleIdentity.java
index 2660a6ccc..c5b6aa0a0 100644
--- a/java/core/src/java/org/apache/orc/impl/mask/DoubleIdentity.java
+++ b/java/core/src/java/org/apache/orc/impl/mask/DoubleIdentity.java
@@ -24,6 +24,7 @@ import org.apache.orc.DataMask;
/**
* An identity data mask for floating point types.
+ * @since 1.5.0
*/
public class DoubleIdentity implements DataMask {
@Override
diff --git a/java/core/src/java/org/apache/orc/impl/mask/ListIdentity.java
b/java/core/src/java/org/apache/orc/impl/mask/ListIdentity.java
index 7ba7594d0..75e07307c 100644
--- a/java/core/src/java/org/apache/orc/impl/mask/ListIdentity.java
+++ b/java/core/src/java/org/apache/orc/impl/mask/ListIdentity.java
@@ -25,6 +25,7 @@ import org.apache.orc.DataMask;
/**
* A data mask for list types that applies the given masks to its
* children, but doesn't mask at this level.
+ * @since 1.5.0
*/
public class ListIdentity implements DataMask {
private final DataMask child;
diff --git a/java/core/src/java/org/apache/orc/impl/mask/LongIdentity.java
b/java/core/src/java/org/apache/orc/impl/mask/LongIdentity.java
index 69a0718fa..b0d7dd2ea 100644
--- a/java/core/src/java/org/apache/orc/impl/mask/LongIdentity.java
+++ b/java/core/src/java/org/apache/orc/impl/mask/LongIdentity.java
@@ -24,6 +24,7 @@ import org.apache.orc.DataMask;
/**
* An identity data mask for integer types.
+ * @since 1.5.0
*/
public class LongIdentity implements DataMask {
@Override
diff --git a/java/core/src/java/org/apache/orc/impl/mask/MapIdentity.java
b/java/core/src/java/org/apache/orc/impl/mask/MapIdentity.java
index d7e9f4729..0d0dc6b13 100644
--- a/java/core/src/java/org/apache/orc/impl/mask/MapIdentity.java
+++ b/java/core/src/java/org/apache/orc/impl/mask/MapIdentity.java
@@ -25,6 +25,7 @@ import org.apache.orc.DataMask;
/**
* A data mask for map types that applies the given masks to its
* children, but doesn't mask at this level.
+ * @since 1.5.0
*/
public class MapIdentity implements DataMask {
private final DataMask keyMask;
diff --git a/java/core/src/java/org/apache/orc/impl/mask/MaskFactory.java
b/java/core/src/java/org/apache/orc/impl/mask/MaskFactory.java
index 6879af50e..e2421921d 100644
--- a/java/core/src/java/org/apache/orc/impl/mask/MaskFactory.java
+++ b/java/core/src/java/org/apache/orc/impl/mask/MaskFactory.java
@@ -28,6 +28,7 @@ import java.util.List;
* A mask factory framework that automatically builds a recursive mask.
* The subclass defines how to mask the primitive types and the factory
* builds a recursive tree of data masks that matches the schema tree.
+ * @since 1.5.0
*/
public abstract class MaskFactory {
diff --git a/java/core/src/java/org/apache/orc/impl/mask/MaskProvider.java
b/java/core/src/java/org/apache/orc/impl/mask/MaskProvider.java
index 9e783d1ed..fa77d159f 100644
--- a/java/core/src/java/org/apache/orc/impl/mask/MaskProvider.java
+++ b/java/core/src/java/org/apache/orc/impl/mask/MaskProvider.java
@@ -24,6 +24,7 @@ import org.apache.orc.TypeDescription;
/**
* The Provider for all of the built-in data masks.
+ * @since 1.5.0
*/
public class MaskProvider implements DataMask.Provider {
diff --git a/java/core/src/java/org/apache/orc/impl/mask/NullifyMask.java
b/java/core/src/java/org/apache/orc/impl/mask/NullifyMask.java
index 7228a1b00..da0f1a23d 100644
--- a/java/core/src/java/org/apache/orc/impl/mask/NullifyMask.java
+++ b/java/core/src/java/org/apache/orc/impl/mask/NullifyMask.java
@@ -23,6 +23,7 @@ import org.apache.orc.DataMask;
/**
* Masking routine that converts every value to NULL.
+ * @since 1.5.0
*/
public class NullifyMask implements DataMask {
diff --git a/java/core/src/java/org/apache/orc/impl/mask/RedactMaskFactory.java
b/java/core/src/java/org/apache/orc/impl/mask/RedactMaskFactory.java
index 9851415bb..0c8126f95 100644
--- a/java/core/src/java/org/apache/orc/impl/mask/RedactMaskFactory.java
+++ b/java/core/src/java/org/apache/orc/impl/mask/RedactMaskFactory.java
@@ -65,6 +65,7 @@ import java.util.concurrent.TimeUnit;
* second (0 to 59, default 0)
* <p>
* Parameters use "_" for preserve original.
+ * @since 1.5.0
*/
public class RedactMaskFactory extends MaskFactory {
diff --git a/java/core/src/java/org/apache/orc/impl/mask/SHA256MaskFactory.java
b/java/core/src/java/org/apache/orc/impl/mask/SHA256MaskFactory.java
index 819f6df80..a4ec899e1 100644
--- a/java/core/src/java/org/apache/orc/impl/mask/SHA256MaskFactory.java
+++ b/java/core/src/java/org/apache/orc/impl/mask/SHA256MaskFactory.java
@@ -59,6 +59,7 @@ import java.util.Arrays;
* All Binary type of any length will be converted to 32 byte length SHA256
* hash.
* </p>
+ * @since 1.5.0
*/
public class SHA256MaskFactory extends MaskFactory {
diff --git a/java/core/src/java/org/apache/orc/impl/mask/StructIdentity.java
b/java/core/src/java/org/apache/orc/impl/mask/StructIdentity.java
index 45cd53b54..e3adc470c 100644
--- a/java/core/src/java/org/apache/orc/impl/mask/StructIdentity.java
+++ b/java/core/src/java/org/apache/orc/impl/mask/StructIdentity.java
@@ -25,6 +25,7 @@ import org.apache.orc.DataMask;
/**
* A data mask for struct types that applies the given masks to its
* children, but doesn't mask at this level.
+ * @since 1.5.0
*/
public class StructIdentity implements DataMask {
private final DataMask[] children;
diff --git a/java/core/src/java/org/apache/orc/impl/mask/UnionIdentity.java
b/java/core/src/java/org/apache/orc/impl/mask/UnionIdentity.java
index 0f17a19a5..40ee57e99 100644
--- a/java/core/src/java/org/apache/orc/impl/mask/UnionIdentity.java
+++ b/java/core/src/java/org/apache/orc/impl/mask/UnionIdentity.java
@@ -25,6 +25,7 @@ import org.apache.orc.DataMask;
/**
* A data mask for union types that applies the given masks to its
* children, but doesn't mask at this level.
+ * @since 1.5.0
*/
public class UnionIdentity implements DataMask {
private final DataMask[] children;
diff --git
a/java/core/src/java/org/apache/orc/impl/reader/ReaderEncryption.java
b/java/core/src/java/org/apache/orc/impl/reader/ReaderEncryption.java
index 6262ee457..729751d99 100644
--- a/java/core/src/java/org/apache/orc/impl/reader/ReaderEncryption.java
+++ b/java/core/src/java/org/apache/orc/impl/reader/ReaderEncryption.java
@@ -31,6 +31,9 @@ import java.io.IOException;
import java.security.SecureRandom;
import java.util.List;
+/**
+ * @since 1.6.0
+ */
public class ReaderEncryption {
private final KeyProvider keyProvider;
private final ReaderEncryptionKey[] keys;
diff --git
a/java/core/src/java/org/apache/orc/impl/reader/ReaderEncryptionKey.java
b/java/core/src/java/org/apache/orc/impl/reader/ReaderEncryptionKey.java
index 8fa7b643c..4eecbb5d9 100644
--- a/java/core/src/java/org/apache/orc/impl/reader/ReaderEncryptionKey.java
+++ b/java/core/src/java/org/apache/orc/impl/reader/ReaderEncryptionKey.java
@@ -30,6 +30,7 @@ import java.util.List;
/**
* This tracks the keys for reading encrypted columns.
+ * @since 1.6.0
*/
public class ReaderEncryptionKey implements EncryptionKey {
private final String name;
diff --git
a/java/core/src/java/org/apache/orc/impl/reader/ReaderEncryptionVariant.java
b/java/core/src/java/org/apache/orc/impl/reader/ReaderEncryptionVariant.java
index fea647aa0..eed1b0534 100644
--- a/java/core/src/java/org/apache/orc/impl/reader/ReaderEncryptionVariant.java
+++ b/java/core/src/java/org/apache/orc/impl/reader/ReaderEncryptionVariant.java
@@ -46,6 +46,7 @@ import java.util.Map;
/**
* Information about an encrypted column.
+ * @since 1.6.0
*/
public class ReaderEncryptionVariant implements EncryptionVariant {
private static final Logger LOG =
diff --git a/java/core/src/java/org/apache/orc/impl/reader/StripePlanner.java
b/java/core/src/java/org/apache/orc/impl/reader/StripePlanner.java
index 32d71c833..38b524422 100644
--- a/java/core/src/java/org/apache/orc/impl/reader/StripePlanner.java
+++ b/java/core/src/java/org/apache/orc/impl/reader/StripePlanner.java
@@ -59,6 +59,7 @@ import java.util.Set;
* <li>row group selection</li>
* <li>encryption</li>
* </ul>
+ * @since 1.6.0
*/
public class StripePlanner {
private static final Logger LOG =
LoggerFactory.getLogger(StripePlanner.class);
diff --git
a/java/core/src/java/org/apache/orc/impl/reader/tree/BatchReader.java
b/java/core/src/java/org/apache/orc/impl/reader/tree/BatchReader.java
index 8d7d685eb..a742ce0db 100644
--- a/java/core/src/java/org/apache/orc/impl/reader/tree/BatchReader.java
+++ b/java/core/src/java/org/apache/orc/impl/reader/tree/BatchReader.java
@@ -27,6 +27,7 @@ import java.io.IOException;
/**
* The top level interface that the reader uses to read the columns from the
* ORC file.
+ * @since 1.7.0
*/
public abstract class BatchReader {
// The row type reader
diff --git
a/java/core/src/java/org/apache/orc/impl/reader/tree/PrimitiveBatchReader.java
b/java/core/src/java/org/apache/orc/impl/reader/tree/PrimitiveBatchReader.java
index fe285ab33..139e33062 100644
---
a/java/core/src/java/org/apache/orc/impl/reader/tree/PrimitiveBatchReader.java
+++
b/java/core/src/java/org/apache/orc/impl/reader/tree/PrimitiveBatchReader.java
@@ -24,6 +24,9 @@ import org.apache.orc.impl.reader.StripePlanner;
import java.io.IOException;
+/**
+ * @since 1.7.0
+ */
public class PrimitiveBatchReader extends BatchReader {
public PrimitiveBatchReader(TypeReader rowReader) {
diff --git
a/java/core/src/java/org/apache/orc/impl/reader/tree/StructBatchReader.java
b/java/core/src/java/org/apache/orc/impl/reader/tree/StructBatchReader.java
index 731e490aa..6c073d44d 100644
--- a/java/core/src/java/org/apache/orc/impl/reader/tree/StructBatchReader.java
+++ b/java/core/src/java/org/apache/orc/impl/reader/tree/StructBatchReader.java
@@ -31,6 +31,7 @@ import java.io.IOException;
* Handles the Struct rootType for batch handling. The handling assumes that
the root
* {@link org.apache.orc.impl.TreeReaderFactory.StructTreeReader} no nulls.
Root Struct vector is
* not represented as part of the final {@link
org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch}.
+ * @since 1.7.0
*/
public class StructBatchReader extends BatchReader {
// The reader context including row-filtering details
diff --git a/java/core/src/java/org/apache/orc/impl/reader/tree/TypeReader.java
b/java/core/src/java/org/apache/orc/impl/reader/tree/TypeReader.java
index 3ffb43736..931a9f5d6 100644
--- a/java/core/src/java/org/apache/orc/impl/reader/tree/TypeReader.java
+++ b/java/core/src/java/org/apache/orc/impl/reader/tree/TypeReader.java
@@ -27,6 +27,9 @@ import org.apache.orc.impl.reader.StripePlanner;
import java.io.IOException;
import java.util.EnumSet;
+/**
+ * @since 1.7.0
+ */
public interface TypeReader {
/**
* Check the encoding of the column.
diff --git
a/java/core/src/java/org/apache/orc/impl/writer/BinaryTreeWriter.java
b/java/core/src/java/org/apache/orc/impl/writer/BinaryTreeWriter.java
index f92a4d7ca..ad1ea9397 100644
--- a/java/core/src/java/org/apache/orc/impl/writer/BinaryTreeWriter.java
+++ b/java/core/src/java/org/apache/orc/impl/writer/BinaryTreeWriter.java
@@ -32,6 +32,9 @@ import org.apache.orc.impl.StreamName;
import java.io.IOException;
import java.util.function.Consumer;
+/**
+ * @since 1.5.0
+ */
public class BinaryTreeWriter extends TreeWriterBase {
private final PositionedOutputStream stream;
private final IntegerWriter length;
diff --git
a/java/core/src/java/org/apache/orc/impl/writer/BooleanTreeWriter.java
b/java/core/src/java/org/apache/orc/impl/writer/BooleanTreeWriter.java
index aa5fdd841..b968f2e20 100644
--- a/java/core/src/java/org/apache/orc/impl/writer/BooleanTreeWriter.java
+++ b/java/core/src/java/org/apache/orc/impl/writer/BooleanTreeWriter.java
@@ -31,6 +31,9 @@ import org.apache.orc.impl.StreamName;
import java.io.IOException;
+/**
+ * @since 1.5.0
+ */
public class BooleanTreeWriter extends TreeWriterBase {
private final BitFieldWriter writer;
diff --git a/java/core/src/java/org/apache/orc/impl/writer/ByteTreeWriter.java
b/java/core/src/java/org/apache/orc/impl/writer/ByteTreeWriter.java
index af68052a1..bc9510810 100644
--- a/java/core/src/java/org/apache/orc/impl/writer/ByteTreeWriter.java
+++ b/java/core/src/java/org/apache/orc/impl/writer/ByteTreeWriter.java
@@ -30,6 +30,9 @@ import org.apache.orc.impl.StreamName;
import java.io.IOException;
+/**
+ * @since 1.5.0
+ */
public class ByteTreeWriter extends TreeWriterBase {
private final RunLengthByteWriter writer;
diff --git a/java/core/src/java/org/apache/orc/impl/writer/CharTreeWriter.java
b/java/core/src/java/org/apache/orc/impl/writer/CharTreeWriter.java
index dec74022f..b8cc6bf09 100644
--- a/java/core/src/java/org/apache/orc/impl/writer/CharTreeWriter.java
+++ b/java/core/src/java/org/apache/orc/impl/writer/CharTreeWriter.java
@@ -29,6 +29,7 @@ import java.util.Arrays;
/**
* Under the covers, char is written to ORC the same way as string.
+ * @since 1.5.0
*/
public class CharTreeWriter extends StringBaseTreeWriter {
private final int maxLength;
diff --git a/java/core/src/java/org/apache/orc/impl/writer/DateTreeWriter.java
b/java/core/src/java/org/apache/orc/impl/writer/DateTreeWriter.java
index 3f1f978aa..b24ab3f65 100644
--- a/java/core/src/java/org/apache/orc/impl/writer/DateTreeWriter.java
+++ b/java/core/src/java/org/apache/orc/impl/writer/DateTreeWriter.java
@@ -32,6 +32,9 @@ import org.apache.orc.impl.StreamName;
import java.io.IOException;
+/**
+ * @since 1.5.0
+ */
public class DateTreeWriter extends TreeWriterBase {
private final IntegerWriter writer;
private final boolean isDirectV2;
diff --git
a/java/core/src/java/org/apache/orc/impl/writer/Decimal64TreeWriter.java
b/java/core/src/java/org/apache/orc/impl/writer/Decimal64TreeWriter.java
index b47cfcd1b..19db04e4c 100644
--- a/java/core/src/java/org/apache/orc/impl/writer/Decimal64TreeWriter.java
+++ b/java/core/src/java/org/apache/orc/impl/writer/Decimal64TreeWriter.java
@@ -35,6 +35,7 @@ import java.io.IOException;
/**
* Writer for short decimals in ORCv2.
+ * @since 1.5.0
*/
public class Decimal64TreeWriter extends TreeWriterBase {
private final RunLengthIntegerWriterV2 valueWriter;
diff --git
a/java/core/src/java/org/apache/orc/impl/writer/DecimalTreeWriter.java
b/java/core/src/java/org/apache/orc/impl/writer/DecimalTreeWriter.java
index d257a17b3..df88c0fbf 100644
--- a/java/core/src/java/org/apache/orc/impl/writer/DecimalTreeWriter.java
+++ b/java/core/src/java/org/apache/orc/impl/writer/DecimalTreeWriter.java
@@ -36,6 +36,9 @@ import org.apache.orc.impl.StreamName;
import java.io.IOException;
import java.util.function.Consumer;
+/**
+ * @since 1.5.0
+ */
public class DecimalTreeWriter extends TreeWriterBase {
private final PositionedOutputStream valueStream;
private final SerializationUtils utils = new SerializationUtils();
diff --git
a/java/core/src/java/org/apache/orc/impl/writer/DoubleTreeWriter.java
b/java/core/src/java/org/apache/orc/impl/writer/DoubleTreeWriter.java
index 4b50d103a..2fd641213 100644
--- a/java/core/src/java/org/apache/orc/impl/writer/DoubleTreeWriter.java
+++ b/java/core/src/java/org/apache/orc/impl/writer/DoubleTreeWriter.java
@@ -31,6 +31,9 @@ import org.apache.orc.impl.StreamName;
import java.io.IOException;
+/**
+ * @since 1.5.0
+ */
public class DoubleTreeWriter extends TreeWriterBase {
private final PositionedOutputStream stream;
private final SerializationUtils utils;
diff --git
a/java/core/src/java/org/apache/orc/impl/writer/EncryptionTreeWriter.java
b/java/core/src/java/org/apache/orc/impl/writer/EncryptionTreeWriter.java
index 771004098..0b95e92ef 100644
--- a/java/core/src/java/org/apache/orc/impl/writer/EncryptionTreeWriter.java
+++ b/java/core/src/java/org/apache/orc/impl/writer/EncryptionTreeWriter.java
@@ -32,6 +32,7 @@ import java.io.IOException;
* TreeWriter that handles column encryption.
* We create a TreeWriter for each of the alternatives with an WriterContext
* that creates encrypted streams.
+ * @since 1.6.0
*/
public class EncryptionTreeWriter implements TreeWriter {
// the different writers
diff --git a/java/core/src/java/org/apache/orc/impl/writer/FloatTreeWriter.java
b/java/core/src/java/org/apache/orc/impl/writer/FloatTreeWriter.java
index d17119e25..d86b84c88 100644
--- a/java/core/src/java/org/apache/orc/impl/writer/FloatTreeWriter.java
+++ b/java/core/src/java/org/apache/orc/impl/writer/FloatTreeWriter.java
@@ -31,6 +31,9 @@ import org.apache.orc.impl.StreamName;
import java.io.IOException;
+/**
+ * @since 1.5.0
+ */
public class FloatTreeWriter extends TreeWriterBase {
private final PositionedOutputStream stream;
private final SerializationUtils utils;
diff --git
a/java/core/src/java/org/apache/orc/impl/writer/GeospatialTreeWriter.java
b/java/core/src/java/org/apache/orc/impl/writer/GeospatialTreeWriter.java
index 676ca32a9..092d66dd9 100644
--- a/java/core/src/java/org/apache/orc/impl/writer/GeospatialTreeWriter.java
+++ b/java/core/src/java/org/apache/orc/impl/writer/GeospatialTreeWriter.java
@@ -31,6 +31,9 @@ import org.apache.orc.impl.StreamName;
import java.io.IOException;
import java.util.function.Consumer;
+/**
+ * @since 2.2.0
+ */
public class GeospatialTreeWriter extends TreeWriterBase {
private final PositionedOutputStream stream;
private final IntegerWriter length;
diff --git
a/java/core/src/java/org/apache/orc/impl/writer/IntegerTreeWriter.java
b/java/core/src/java/org/apache/orc/impl/writer/IntegerTreeWriter.java
index 7c486e2d8..9669abbc9 100644
--- a/java/core/src/java/org/apache/orc/impl/writer/IntegerTreeWriter.java
+++ b/java/core/src/java/org/apache/orc/impl/writer/IntegerTreeWriter.java
@@ -31,6 +31,9 @@ import org.apache.orc.impl.StreamName;
import java.io.IOException;
+/**
+ * @since 1.5.0
+ */
public class IntegerTreeWriter extends TreeWriterBase {
private final IntegerWriter writer;
private boolean isDirectV2 = true;
diff --git a/java/core/src/java/org/apache/orc/impl/writer/ListTreeWriter.java
b/java/core/src/java/org/apache/orc/impl/writer/ListTreeWriter.java
index cf8eccfb7..5f30c9db7 100644
--- a/java/core/src/java/org/apache/orc/impl/writer/ListTreeWriter.java
+++ b/java/core/src/java/org/apache/orc/impl/writer/ListTreeWriter.java
@@ -31,6 +31,9 @@ import org.apache.orc.impl.StreamName;
import java.io.IOException;
+/**
+ * @since 1.5.0
+ */
public class ListTreeWriter extends TreeWriterBase {
private final IntegerWriter lengths;
private final boolean isDirectV2;
diff --git a/java/core/src/java/org/apache/orc/impl/writer/MapTreeWriter.java
b/java/core/src/java/org/apache/orc/impl/writer/MapTreeWriter.java
index a9dbee49b..0ac6ee77f 100644
--- a/java/core/src/java/org/apache/orc/impl/writer/MapTreeWriter.java
+++ b/java/core/src/java/org/apache/orc/impl/writer/MapTreeWriter.java
@@ -32,6 +32,9 @@ import org.apache.orc.impl.StreamName;
import java.io.IOException;
import java.util.List;
+/**
+ * @since 1.5.0
+ */
public class MapTreeWriter extends TreeWriterBase {
private final IntegerWriter lengths;
private final boolean isDirectV2;
diff --git a/java/core/src/java/org/apache/orc/impl/writer/StreamOptions.java
b/java/core/src/java/org/apache/orc/impl/writer/StreamOptions.java
index 28bb7afaf..7e26c8ef0 100644
--- a/java/core/src/java/org/apache/orc/impl/writer/StreamOptions.java
+++ b/java/core/src/java/org/apache/orc/impl/writer/StreamOptions.java
@@ -27,6 +27,7 @@ import java.util.function.Consumer;
/**
* The compression and encryption options for writing a stream.
+ * @since 1.6.0
*/
public class StreamOptions {
private CompressionCodec codec;
diff --git
a/java/core/src/java/org/apache/orc/impl/writer/StringBaseTreeWriter.java
b/java/core/src/java/org/apache/orc/impl/writer/StringBaseTreeWriter.java
index 1afa6e73e..a08e85c82 100644
--- a/java/core/src/java/org/apache/orc/impl/writer/StringBaseTreeWriter.java
+++ b/java/core/src/java/org/apache/orc/impl/writer/StringBaseTreeWriter.java
@@ -44,6 +44,9 @@ import static org.apache.orc.OrcConf.DICTIONARY_IMPL;
import static org.apache.orc.impl.Dictionary.INITIAL_DICTIONARY_SIZE;
+/**
+ * @since 1.5.0
+ */
public abstract class StringBaseTreeWriter extends TreeWriterBase {
// Stream for dictionary's key
private final OutStream stringOutput;
diff --git
a/java/core/src/java/org/apache/orc/impl/writer/StringTreeWriter.java
b/java/core/src/java/org/apache/orc/impl/writer/StringTreeWriter.java
index 6f0b8a61c..13c0b6d6b 100644
--- a/java/core/src/java/org/apache/orc/impl/writer/StringTreeWriter.java
+++ b/java/core/src/java/org/apache/orc/impl/writer/StringTreeWriter.java
@@ -25,6 +25,9 @@ import org.apache.orc.TypeDescription;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
+/**
+ * @since 1.5.0
+ */
public class StringTreeWriter extends StringBaseTreeWriter {
StringTreeWriter(TypeDescription schema,
WriterEncryptionVariant encryption,
diff --git
a/java/core/src/java/org/apache/orc/impl/writer/StructTreeWriter.java
b/java/core/src/java/org/apache/orc/impl/writer/StructTreeWriter.java
index cebcb57eb..44a578327 100644
--- a/java/core/src/java/org/apache/orc/impl/writer/StructTreeWriter.java
+++ b/java/core/src/java/org/apache/orc/impl/writer/StructTreeWriter.java
@@ -28,6 +28,9 @@ import org.apache.orc.TypeDescription;
import java.io.IOException;
import java.util.List;
+/**
+ * @since 1.5.0
+ */
public class StructTreeWriter extends TreeWriterBase {
final TreeWriter[] childrenWriters;
diff --git
a/java/core/src/java/org/apache/orc/impl/writer/TimestampTreeWriter.java
b/java/core/src/java/org/apache/orc/impl/writer/TimestampTreeWriter.java
index 551d42abe..e94cf84cc 100644
--- a/java/core/src/java/org/apache/orc/impl/writer/TimestampTreeWriter.java
+++ b/java/core/src/java/org/apache/orc/impl/writer/TimestampTreeWriter.java
@@ -36,6 +36,9 @@ import java.text.SimpleDateFormat;
import java.util.TimeZone;
import java.util.function.Consumer;
+/**
+ * @since 1.5.0
+ */
public class TimestampTreeWriter extends TreeWriterBase {
public static final int MILLIS_PER_SECOND = 1000;
public static final String BASE_TIMESTAMP_STRING = "2015-01-01 00:00:00";
diff --git a/java/core/src/java/org/apache/orc/impl/writer/TreeWriter.java
b/java/core/src/java/org/apache/orc/impl/writer/TreeWriter.java
index de63f9efb..d94f65cfa 100644
--- a/java/core/src/java/org/apache/orc/impl/writer/TreeWriter.java
+++ b/java/core/src/java/org/apache/orc/impl/writer/TreeWriter.java
@@ -30,6 +30,7 @@ import java.io.IOException;
/**
* The writers for the specific writers of each type. This provides
* the generic API that they must all implement.
+ * @since 1.5.0
*/
public interface TreeWriter {
diff --git a/java/core/src/java/org/apache/orc/impl/writer/TreeWriterBase.java
b/java/core/src/java/org/apache/orc/impl/writer/TreeWriterBase.java
index ef93a315a..cfe6962b4 100644
--- a/java/core/src/java/org/apache/orc/impl/writer/TreeWriterBase.java
+++ b/java/core/src/java/org/apache/orc/impl/writer/TreeWriterBase.java
@@ -47,6 +47,7 @@ import java.util.List;
* is written by an instance of this class. The compound types (struct,
* list, map, and union) have children tree writers that write the children
* types.
+ * @since 1.5.0
*/
public abstract class TreeWriterBase implements TreeWriter {
protected final int id;
diff --git a/java/core/src/java/org/apache/orc/impl/writer/UnionTreeWriter.java
b/java/core/src/java/org/apache/orc/impl/writer/UnionTreeWriter.java
index a54ac94c4..07762ff98 100644
--- a/java/core/src/java/org/apache/orc/impl/writer/UnionTreeWriter.java
+++ b/java/core/src/java/org/apache/orc/impl/writer/UnionTreeWriter.java
@@ -32,6 +32,9 @@ import org.apache.orc.impl.StreamName;
import java.io.IOException;
import java.util.List;
+/**
+ * @since 1.5.0
+ */
public class UnionTreeWriter extends TreeWriterBase {
private final RunLengthByteWriter tags;
private final TreeWriter[] childrenWriters;
diff --git
a/java/core/src/java/org/apache/orc/impl/writer/VarcharTreeWriter.java
b/java/core/src/java/org/apache/orc/impl/writer/VarcharTreeWriter.java
index 506b55f3a..635df6cbd 100644
--- a/java/core/src/java/org/apache/orc/impl/writer/VarcharTreeWriter.java
+++ b/java/core/src/java/org/apache/orc/impl/writer/VarcharTreeWriter.java
@@ -28,6 +28,7 @@ import java.nio.charset.StandardCharsets;
/**
* Under the covers, varchar is written to ORC the same way as string.
+ * @since 1.5.0
*/
public class VarcharTreeWriter extends StringBaseTreeWriter {
private final int maxLength;
diff --git a/java/core/src/java/org/apache/orc/impl/writer/WriterContext.java
b/java/core/src/java/org/apache/orc/impl/writer/WriterContext.java
index c9570fef7..b976d4e0f 100644
--- a/java/core/src/java/org/apache/orc/impl/writer/WriterContext.java
+++ b/java/core/src/java/org/apache/orc/impl/writer/WriterContext.java
@@ -28,6 +28,9 @@ import org.apache.orc.impl.StreamName;
import java.io.IOException;
+/**
+ * @since 1.5.0
+ */
public interface WriterContext {
/**
diff --git
a/java/core/src/java/org/apache/orc/impl/writer/WriterEncryptionKey.java
b/java/core/src/java/org/apache/orc/impl/writer/WriterEncryptionKey.java
index 947300a8d..5703c6f26 100644
--- a/java/core/src/java/org/apache/orc/impl/writer/WriterEncryptionKey.java
+++ b/java/core/src/java/org/apache/orc/impl/writer/WriterEncryptionKey.java
@@ -27,6 +27,9 @@ import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
+/**
+ * @since 1.6.0
+ */
public class WriterEncryptionKey implements EncryptionKey {
private final HadoopShims.KeyMetadata metadata;
private final List<WriterEncryptionVariant> roots = new ArrayList<>();
diff --git
a/java/core/src/java/org/apache/orc/impl/writer/WriterEncryptionVariant.java
b/java/core/src/java/org/apache/orc/impl/writer/WriterEncryptionVariant.java
index 9f730d4ce..934cf23a0 100644
--- a/java/core/src/java/org/apache/orc/impl/writer/WriterEncryptionVariant.java
+++ b/java/core/src/java/org/apache/orc/impl/writer/WriterEncryptionVariant.java
@@ -28,6 +28,9 @@ import java.security.Key;
import java.util.ArrayList;
import java.util.List;
+/**
+ * @since 1.6.0
+ */
public class WriterEncryptionVariant implements EncryptionVariant {
private int id;
private final WriterEncryptionKey key;
diff --git a/java/core/src/java/org/apache/orc/impl/writer/WriterImplV2.java
b/java/core/src/java/org/apache/orc/impl/writer/WriterImplV2.java
index 41465960c..28fed840d 100644
--- a/java/core/src/java/org/apache/orc/impl/writer/WriterImplV2.java
+++ b/java/core/src/java/org/apache/orc/impl/writer/WriterImplV2.java
@@ -45,6 +45,7 @@ import java.io.IOException;
* Caveat: the MemoryManager is created during WriterOptions create, that has
* to be confined to a single thread as well.
*
+ * @since 1.5.0
*/
public class WriterImplV2 extends WriterImpl {
diff --git a/java/core/src/java/org/apache/orc/util/BloomFilter.java
b/java/core/src/java/org/apache/orc/util/BloomFilter.java
index e5af56f74..e01b16ffe 100644
--- a/java/core/src/java/org/apache/orc/util/BloomFilter.java
+++ b/java/core/src/java/org/apache/orc/util/BloomFilter.java
@@ -42,6 +42,7 @@ import java.util.Arrays;
* Note that this class is here for backwards compatibility, because it uses
* the JVM default character set for strings. All new users should
* BloomFilterUtf8, which always uses UTF8 for the encoding.
+ * @since 1.3.0
*/
public class BloomFilter {
public static final double DEFAULT_FPP = 0.05;
diff --git a/java/core/src/java/org/apache/orc/util/BloomFilterIO.java
b/java/core/src/java/org/apache/orc/util/BloomFilterIO.java
index 700e37793..7b9f89f04 100644
--- a/java/core/src/java/org/apache/orc/util/BloomFilterIO.java
+++ b/java/core/src/java/org/apache/orc/util/BloomFilterIO.java
@@ -26,6 +26,9 @@ import org.apache.orc.TypeDescription;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
+/**
+ * @since 1.3.0
+ */
public class BloomFilterIO {
public enum Encoding {
diff --git a/java/core/src/java/org/apache/orc/util/BloomFilterUtf8.java
b/java/core/src/java/org/apache/orc/util/BloomFilterUtf8.java
index dba83a7bb..b2d0234cf 100644
--- a/java/core/src/java/org/apache/orc/util/BloomFilterUtf8.java
+++ b/java/core/src/java/org/apache/orc/util/BloomFilterUtf8.java
@@ -23,6 +23,7 @@ import java.nio.charset.StandardCharsets;
/**
* This class represents the fix from ORC-101 where we fixed the bloom filter
* from using the JVM's default character set to always using UTF-8.
+ * @since 1.3.0
*/
public class BloomFilterUtf8 extends BloomFilter {
diff --git a/java/core/src/java/org/apache/orc/util/CuckooSetBytes.java
b/java/core/src/java/org/apache/orc/util/CuckooSetBytes.java
index 6af1faa8c..4a6a1d513 100644
--- a/java/core/src/java/org/apache/orc/util/CuckooSetBytes.java
+++ b/java/core/src/java/org/apache/orc/util/CuckooSetBytes.java
@@ -32,6 +32,7 @@ import java.util.Random;
* Elsevier Science preprint, Dec. 2003.
https://www.itu.dk/people/pagh/papers/cuckoo-jour.pdf.
* <p>
* Copied from CuckooSetBytes@Apache Hive project for convenience
+ * @since 1.7.0
*/
public class CuckooSetBytes {
private byte[][] t1;
diff --git a/java/core/src/java/org/apache/orc/util/Murmur3.java
b/java/core/src/java/org/apache/orc/util/Murmur3.java
index c01855bb8..2dbaf8ce6 100644
--- a/java/core/src/java/org/apache/orc/util/Murmur3.java
+++ b/java/core/src/java/org/apache/orc/util/Murmur3.java
@@ -29,6 +29,7 @@ package org.apache.orc.util;
* From homepage of MurmurHash (https://code.google.com/p/smhasher/),
* "All MurmurHash versions are public domain software, and the author
disclaims all copyright
* to their code."
+ * @since 1.3.0
*/
public class Murmur3 {
// from 64-bit linear congruential generator
diff --git
a/java/core/src/java/org/apache/orc/util/StreamWrapperFileSystem.java
b/java/core/src/java/org/apache/orc/util/StreamWrapperFileSystem.java
index d14dbd3a3..5be428e20 100644
--- a/java/core/src/java/org/apache/orc/util/StreamWrapperFileSystem.java
+++ b/java/core/src/java/org/apache/orc/util/StreamWrapperFileSystem.java
@@ -36,6 +36,7 @@ import java.net.URI;
* This class provides an adaptor so that tools that want to read an ORC
* file from an FSDataInputStream can do so. Create an instance with the
* stream, path, and fileSize and pass it in to the reader as the FileSystem.
+ * @since 1.7.0
*/
public class StreamWrapperFileSystem extends FileSystem {
private final FSDataInputStream stream;