You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@apex.apache.org by th...@apache.org on 2016/09/04 07:09:38 UTC

[2/3] apex-malhar git commit: Add @since tags and update change log for release 3.5.0

Add @since tags and update change log for release 3.5.0


Project: http://git-wip-us.apache.org/repos/asf/apex-malhar/repo
Commit: http://git-wip-us.apache.org/repos/asf/apex-malhar/commit/681a84a8
Tree: http://git-wip-us.apache.org/repos/asf/apex-malhar/tree/681a84a8
Diff: http://git-wip-us.apache.org/repos/asf/apex-malhar/diff/681a84a8

Branch: refs/heads/master
Commit: 681a84a87eaba350adc485e3f289234e675fd27d
Parents: 61fb774
Author: Thomas Weise <th...@datatorrent.com>
Authored: Sat Aug 27 23:04:18 2016 -0700
Committer: Thomas Weise <th...@datatorrent.com>
Committed: Sat Sep 3 23:36:54 2016 -0700

----------------------------------------------------------------------
 CHANGELOG.md                                    | 78 ++++++++++++++++++++
 .../contrib/enrich/DelimitedFSLoader.java       |  2 +
 .../contrib/enrich/JsonFSLoader.java            |  2 +
 .../contrib/hbase/HBaseFieldValueGenerator.java |  2 +
 .../malhar/contrib/parser/JsonKeyFinder.java    | 10 ++-
 .../contrib/parser/StreamingJsonParser.java     |  2 +
 .../malhar/stream/sample/MinimalWordCount.java  |  2 +
 .../malhar/stream/sample/WindowedWordCount.java |  2 +
 .../stream/sample/complete/AutoComplete.java    |  2 +
 .../sample/complete/CompletionCandidate.java    |  2 +
 .../stream/sample/complete/PojoEvent.java       |  2 +
 .../sample/complete/StreamingWordExtract.java   |  2 +
 .../stream/sample/complete/TopNByKey.java       |  2 +
 .../sample/complete/TopWikipediaSessions.java   |  2 +
 .../stream/sample/complete/TrafficRoutes.java   |  2 +
 .../sample/complete/TwitterAutoComplete.java    |  2 +
 .../sample/cookbook/CombinePerKeyExamples.java  |  2 +
 .../stream/sample/cookbook/DeDupExample.java    |  2 +
 .../stream/sample/cookbook/InputPojo.java       |  2 +
 .../sample/cookbook/MaxPerKeyExamples.java      |  2 +
 .../stream/sample/cookbook/OutputPojo.java      |  2 +
 .../stream/sample/cookbook/TriggerExample.java  |  2 +
 .../apex/malhar/hive/HiveOutputModule.java      |  2 +
 .../kafka/AbstractKafkaOutputOperator.java      |  2 +
 ...afkaSinglePortExactlyOnceOutputOperator.java |  2 +
 .../kafka/KafkaSinglePortOutputOperator.java    |  2 +
 .../bandwidth/BandwidthLimitingOperator.java    |  2 +
 .../lib/bandwidth/BandwidthManager.java         |  2 +
 .../lib/bandwidth/BandwidthPartitioner.java     |  3 +
 .../db/jdbc/AbstractJdbcPollInputOperator.java  |  2 +
 .../datatorrent/lib/db/jdbc/JdbcFieldInfo.java  |  2 +
 .../lib/db/jdbc/JdbcPOJOPollInputOperator.java  |  2 +
 .../lib/db/jdbc/JdbcPollInputOperator.java      |  2 +
 .../datatorrent/lib/filter/FilterOperator.java  |  2 +
 .../datatorrent/lib/io/fs/FSInputModule.java    |  2 +
 .../datatorrent/lib/io/fs/S3BlockReader.java    |  2 +
 .../datatorrent/lib/io/fs/S3InputModule.java    |  2 +
 .../apex/malhar/lib/dedup/AbstractDeduper.java  |  2 +
 .../malhar/lib/dedup/BoundedDedupOperator.java  |  2 +
 .../malhar/lib/dedup/DeduperStreamCodec.java    |  2 +
 .../lib/dedup/TimeBasedDedupOperator.java       |  2 +
 .../apex/malhar/lib/fs/FSRecordReader.java      |  2 +
 .../malhar/lib/fs/FSRecordReaderModule.java     |  2 +
 .../lib/join/AbstractInnerJoinOperator.java     |  2 +
 .../AbstractManagedStateInnerJoinOperator.java  |  2 +
 .../apex/malhar/lib/join/JoinStreamCodec.java   |  2 +
 .../malhar/lib/join/POJOInnerJoinOperator.java  |  2 +
 .../managed/ManagedTimeStateMultiValue.java     |  2 +
 .../SequentialSpillableIdentifierGenerator.java |  2 +
 .../state/spillable/SpillableArrayListImpl.java |  2 +
 .../SpillableByteArrayListMultimapImpl.java     |  2 +
 .../state/spillable/SpillableByteMapImpl.java   |  2 +
 .../SpillableComplexComponentImpl.java          |  2 +
 .../spillable/SpillableIdentifierGenerator.java |  2 +
 .../state/spillable/SpillableStateStore.java    |  2 +
 .../state/spillable/TimeBasedPriorityQueue.java |  2 +
 .../state/spillable/WindowBoundedMapCache.java  |  2 +
 .../lib/state/spillable/WindowListener.java     |  2 +
 .../inmem/InMemSpillableStateStore.java         |  2 +
 .../ManagedStateSpillableStateStore.java        |  3 +
 .../serde/PassThruByteArraySliceSerde.java      |  2 +
 .../lib/utils/serde/PassThruSliceSerde.java     |  2 +
 .../malhar/lib/utils/serde/SerdeIntSlice.java   |  2 +
 .../malhar/lib/utils/serde/SerdeListSlice.java  |  2 +
 .../lib/utils/serde/SerdeStringSlice.java       |  2 +
 .../apex/malhar/lib/utils/serde/SliceUtils.java |  2 +
 .../apex/malhar/lib/wal/FSWindowReplayWAL.java  |  2 +
 .../apex/malhar/lib/window/Accumulation.java    |  2 +
 .../apex/malhar/lib/window/ControlTuple.java    |  2 +
 .../malhar/lib/window/JoinAccumulation.java     |  2 +
 .../lib/window/SessionWindowedStorage.java      |  2 +
 .../apex/malhar/lib/window/TriggerOption.java   |  2 +
 .../apache/apex/malhar/lib/window/Tuple.java    |  2 +
 .../apache/apex/malhar/lib/window/Window.java   |  2 +
 .../apex/malhar/lib/window/WindowOption.java    |  2 +
 .../apex/malhar/lib/window/WindowState.java     |  2 +
 .../malhar/lib/window/WindowedKeyedStorage.java |  2 +
 .../malhar/lib/window/WindowedOperator.java     |  2 +
 .../apex/malhar/lib/window/WindowedStorage.java |  2 +
 .../malhar/lib/window/accumulation/Average.java |  2 +
 .../malhar/lib/window/accumulation/Count.java   |  2 +
 .../malhar/lib/window/accumulation/FoldFn.java  |  2 +
 .../malhar/lib/window/accumulation/Group.java   |  2 +
 .../malhar/lib/window/accumulation/Max.java     |  2 +
 .../malhar/lib/window/accumulation/Min.java     |  2 +
 .../lib/window/accumulation/ReduceFn.java       |  2 +
 .../window/accumulation/RemoveDuplicates.java   |  2 +
 .../lib/window/accumulation/SumDouble.java      |  2 +
 .../lib/window/accumulation/SumFloat.java       |  2 +
 .../malhar/lib/window/accumulation/SumInt.java  |  2 +
 .../malhar/lib/window/accumulation/SumLong.java |  2 +
 .../malhar/lib/window/accumulation/TopN.java    |  2 +
 .../lib/window/accumulation/TopNByKey.java      |  2 +
 .../window/impl/AbstractWindowedOperator.java   |  2 +
 .../impl/InMemoryWindowedKeyedStorage.java      |  2 +
 .../window/impl/InMemoryWindowedStorage.java    |  2 +
 .../window/impl/KeyedWindowedOperatorImpl.java  |  2 +
 .../malhar/lib/window/impl/WatermarkImpl.java   |  2 +
 .../lib/window/impl/WindowedOperatorImpl.java   |  2 +
 .../stream/api/CompositeStreamTransform.java    |  2 +
 .../apache/apex/malhar/stream/api/Option.java   |  2 +
 .../stream/api/impl/TupleWrapperOperator.java   |  2 +
 102 files changed, 286 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/apex-malhar/blob/681a84a8/CHANGELOG.md
----------------------------------------------------------------------
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 728e111..447a70a 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,84 @@
 Apex Malhar Changelog
 ========================================================================================================================
 
+Version 3.5.0 - 2016-08-31
+------------------------------------------------------------------------------------------------------------------------
+
+### Sub-task
+* [APEXMALHAR-2047] - Create Factory Which Can Easily Create A Single Spillable Data Structure
+* [APEXMALHAR-2048] - Create concrete implementation of ArrayListMultiMap using managed state.
+* [APEXMALHAR-2070] - Create In Memory Implementation of ArrayList Multimap
+* [APEXMALHAR-2202] - Move accumulations to correct package
+* [APEXMALHAR-2208] - High-level API beam examples
+
+### Bug
+* [APEXMALHAR-998] - Compilation error while using UniqueValueCount operator.
+* [APEXMALHAR-1988] - CassandraInputOperator fetches less number of records inconsistenly
+* [APEXMALHAR-2103] - Scanner issues in FileSplitterInput class
+* [APEXMALHAR-2104] - BytesFileOutputOperator Refactoring
+* [APEXMALHAR-2112] - Contrib tests are failing because of inclusion of apache logger with geode dependency
+* [APEXMALHAR-2113] - Dag fails validation due to @NotNull on getUpdateCommand() in JdbcPOJOOutputOperator
+* [APEXMALHAR-2119] - Make DirectoryScanner in AbstractFileInputOperator inheritance friendly. 
+* [APEXMALHAR-2120] - Fix bugs on KafkaInputOperatorTest and AbstractKafkaInputOperator
+* [APEXMALHAR-2128] - Update twitter4j version to the one support twitter APIs
+* [APEXMALHAR-2134] - Catch NullPointerException if some Kafka partition has no leader broker
+* [APEXMALHAR-2135] - Upgrade Kafka 0.8 input operator to support 0.8.2 client
+* [APEXMALHAR-2136] - Null pointer exception in AbstractManagedStateImpl
+* [APEXMALHAR-2138] - Multiple declaration of org.mockito.mockito-all-1.8.5 in Malhar library pom 
+* [APEXMALHAR-2140] - Move ActiveFieldInfo class to com.datatorrent.lib.util
+* [APEXMALHAR-2158] - Duplication of data emitted when the Kafka Input Operator(0.8 version) redeploys
+* [APEXMALHAR-2168] - The setter method for double field is not generated correctly in JdbcPOJOInputOperator.
+* [APEXMALHAR-2169] - KafkaInputoperator: Remove the stuff related to Partition Based on throughput.
+* [APEXMALHAR-2171] - In CacheStore maxCacheSize is not applied
+* [APEXMALHAR-2174] - S3 File Reader reading more data than expected
+* [APEXMALHAR-2195] - LineReaderContext gives incorrect results for files not ending with the newline
+* [APEXMALHAR-2197] - TimeBasedPriorityQueue.removeLRU throws NoSuchElementException
+* [APEXMALHAR-2199] - 0.8 kafka input operator doesn't support chroot zookeeper path (multitenant kafka support)
+
+### Documentation
+* [APEXMALHAR-2153] - Add user documentation for Enricher
+
+### Improvement
+* [APEXMALHAR-1953] - Add generic (insert, update, delete) support to JDBC Output Operator
+* [APEXMALHAR-1957] - Improve HBasePOJOInputOperator with support for threaded read
+* [APEXMALHAR-1966] - Cassandra output operator improvements
+* [APEXMALHAR-2028] - Add System.err to ConsoleOutputOperator 
+* [APEXMALHAR-2045] - Bandwidth control feature
+* [APEXMALHAR-2063] - Integrate WAL to FS WindowDataManager
+* [APEXMALHAR-2069] - FileSplitterInput and TimeBasedDirectoryScanner - move operational fields initialization from constructor to setup
+* [APEXMALHAR-2075] - Support fields of type Date,Time and Timestamp in Pojo Class for JdbcPOJOInputOperator 
+* [APEXMALHAR-2087] - Hive output module
+* [APEXMALHAR-2096] - Add blockThreshold parameter to FSInputModule
+* [APEXMALHAR-2105] - Enhance CSV Formatter to take in schema similar to Csv Parser
+* [APEXMALHAR-2111] - Projection Operator config params shall use List instead of comma-separated field names
+* [APEXMALHAR-2121] - KafkaInputOperator emitTuple method should be able to emit more than just message
+* [APEXMALHAR-2148] - Reduce the noise of kafka input operator
+* [APEXMALHAR-2154] - Update kafka 0.9 input operator to use new CheckpointNotificationListener
+* [APEXMALHAR-2156] - JMS Input operator enhancements
+* [APEXMALHAR-2157] - Improvements in JSON Formatter
+* [APEXMALHAR-2172] - Update JDBC poll input operator to fix issues
+* [APEXMALHAR-2180] - KafkaInput Operator partitions has to be unchanged in case of dynamic scaling of ONE_TO_MANY strategy.
+* [APEXMALHAR-2185] - Add a Deduper implementation for Bounded data
+
+### New Feature
+* [APEXMALHAR-1701] - Deduper backed by Managed State
+* [APEXMALHAR-2019] - S3 Input Module
+* [APEXMALHAR-2026] - Spill-able Datastructures
+* [APEXMALHAR-2066] - JDBC poller input operator
+* [APEXMALHAR-2082] - Data Filter Operator 
+* [APEXMALHAR-2085] - Implement Windowed Operators
+* [APEXMALHAR-2100] - Inner Join Operator using Spillable Datastructures
+* [APEXMALHAR-2116] - File Record reader module
+* [APEXMALHAR-2142] - High-level API window support
+* [APEXMALHAR-2151] - Enricher - Add delimited file format support to FSLoader
+
+### Task
+* [APEXMALHAR-2129] - ManagedState: Disable purging based on system time
+* [APEXMALHAR-2200] - Enable checkstyle for demos
+
+### Test
+* [APEXMALHAR-2161] - Add tests for AbstractThroughputFileInputOperator
+
 Version 3.4.0 - 2016-05-24
 ------------------------------------------------------------------------------------------------------------------------
 

http://git-wip-us.apache.org/repos/asf/apex-malhar/blob/681a84a8/contrib/src/main/java/com/datatorrent/contrib/enrich/DelimitedFSLoader.java
----------------------------------------------------------------------
diff --git a/contrib/src/main/java/com/datatorrent/contrib/enrich/DelimitedFSLoader.java b/contrib/src/main/java/com/datatorrent/contrib/enrich/DelimitedFSLoader.java
index 25f283c..9fa7129 100644
--- a/contrib/src/main/java/com/datatorrent/contrib/enrich/DelimitedFSLoader.java
+++ b/contrib/src/main/java/com/datatorrent/contrib/enrich/DelimitedFSLoader.java
@@ -43,6 +43,8 @@ import com.datatorrent.lib.util.ReusableStringReader;
  * file.User needs to provide a schema as a string specified in a json format as
  * per {@link DelimitedSchema} that contains information of name and type of
  * field
+ *
+ * @since 3.5.0
  */
 @InterfaceStability.Evolving
 public class DelimitedFSLoader extends FSLoader

http://git-wip-us.apache.org/repos/asf/apex-malhar/blob/681a84a8/contrib/src/main/java/com/datatorrent/contrib/enrich/JsonFSLoader.java
----------------------------------------------------------------------
diff --git a/contrib/src/main/java/com/datatorrent/contrib/enrich/JsonFSLoader.java b/contrib/src/main/java/com/datatorrent/contrib/enrich/JsonFSLoader.java
index a1d139a..183d07a 100644
--- a/contrib/src/main/java/com/datatorrent/contrib/enrich/JsonFSLoader.java
+++ b/contrib/src/main/java/com/datatorrent/contrib/enrich/JsonFSLoader.java
@@ -44,6 +44,8 @@ import org.apache.hadoop.classification.InterfaceStability;
  * fields/value.
  * <p>
  *
+ *
+ * @since 3.5.0
  */
 @InterfaceStability.Evolving
 public class JsonFSLoader extends FSLoader

http://git-wip-us.apache.org/repos/asf/apex-malhar/blob/681a84a8/contrib/src/main/java/com/datatorrent/contrib/hbase/HBaseFieldValueGenerator.java
----------------------------------------------------------------------
diff --git a/contrib/src/main/java/com/datatorrent/contrib/hbase/HBaseFieldValueGenerator.java b/contrib/src/main/java/com/datatorrent/contrib/hbase/HBaseFieldValueGenerator.java
index 52b6f4b..fea56a0 100644
--- a/contrib/src/main/java/com/datatorrent/contrib/hbase/HBaseFieldValueGenerator.java
+++ b/contrib/src/main/java/com/datatorrent/contrib/hbase/HBaseFieldValueGenerator.java
@@ -25,6 +25,8 @@ import com.datatorrent.lib.util.PojoUtils;
 
 /**
  * A {@link FieldValueGenerator} implementation for {@link HBaseFieldInfo}
+ *
+ * @since 3.5.0
  */
 public class HBaseFieldValueGenerator extends FieldValueGenerator<HBaseFieldInfo>
 {

http://git-wip-us.apache.org/repos/asf/apex-malhar/blob/681a84a8/contrib/src/main/java/org/apache/apex/malhar/contrib/parser/JsonKeyFinder.java
----------------------------------------------------------------------
diff --git a/contrib/src/main/java/org/apache/apex/malhar/contrib/parser/JsonKeyFinder.java b/contrib/src/main/java/org/apache/apex/malhar/contrib/parser/JsonKeyFinder.java
index 51aee27..fc6c692 100644
--- a/contrib/src/main/java/org/apache/apex/malhar/contrib/parser/JsonKeyFinder.java
+++ b/contrib/src/main/java/org/apache/apex/malhar/contrib/parser/JsonKeyFinder.java
@@ -18,10 +18,6 @@
  */
 package org.apache.apex.malhar.contrib.parser;
 
-/**
- * A concrete implementation of Json ContentHandler<br>
- * Matches JSON keys set from the {@link StreamingJsonParser }
- * */
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -30,6 +26,12 @@ import org.json.simple.parser.ContentHandler;
 
 import com.google.protobuf.TextFormat.ParseException;
 
+/**
+ * A concrete implementation of Json ContentHandler<br>
+ * Matches JSON keys set from the {@link StreamingJsonParser }
+ *
+ * @since 3.5.0
+ */
 public class JsonKeyFinder implements ContentHandler
 {
   public JsonKeyFinder()

http://git-wip-us.apache.org/repos/asf/apex-malhar/blob/681a84a8/contrib/src/main/java/org/apache/apex/malhar/contrib/parser/StreamingJsonParser.java
----------------------------------------------------------------------
diff --git a/contrib/src/main/java/org/apache/apex/malhar/contrib/parser/StreamingJsonParser.java b/contrib/src/main/java/org/apache/apex/malhar/contrib/parser/StreamingJsonParser.java
index 7cc5821..38a4804 100644
--- a/contrib/src/main/java/org/apache/apex/malhar/contrib/parser/StreamingJsonParser.java
+++ b/contrib/src/main/java/org/apache/apex/malhar/contrib/parser/StreamingJsonParser.java
@@ -65,6 +65,8 @@ import com.datatorrent.lib.util.PojoUtils;
  * @displayName SimpleStreamingJsonParser
  * @category Parsers
  * @tags json pojo parser streaming
+ *
+ * @since 3.5.0
  */
 @InterfaceStability.Evolving
 public class StreamingJsonParser extends Parser<byte[], KeyValPair<String, String>>

http://git-wip-us.apache.org/repos/asf/apex-malhar/blob/681a84a8/demos/highlevelapi/src/main/java/org/apache/apex/malhar/stream/sample/MinimalWordCount.java
----------------------------------------------------------------------
diff --git a/demos/highlevelapi/src/main/java/org/apache/apex/malhar/stream/sample/MinimalWordCount.java b/demos/highlevelapi/src/main/java/org/apache/apex/malhar/stream/sample/MinimalWordCount.java
index 03579ab..327c882 100644
--- a/demos/highlevelapi/src/main/java/org/apache/apex/malhar/stream/sample/MinimalWordCount.java
+++ b/demos/highlevelapi/src/main/java/org/apache/apex/malhar/stream/sample/MinimalWordCount.java
@@ -41,6 +41,8 @@ import static org.apache.apex.malhar.stream.api.Option.Options.name;
 
 /**
  * Beam MinimalWordCount Example
+ *
+ * @since 3.5.0
  */
 @ApplicationAnnotation(name = "MinimalWordCount")
 public class MinimalWordCount implements StreamingApplication

http://git-wip-us.apache.org/repos/asf/apex-malhar/blob/681a84a8/demos/highlevelapi/src/main/java/org/apache/apex/malhar/stream/sample/WindowedWordCount.java
----------------------------------------------------------------------
diff --git a/demos/highlevelapi/src/main/java/org/apache/apex/malhar/stream/sample/WindowedWordCount.java b/demos/highlevelapi/src/main/java/org/apache/apex/malhar/stream/sample/WindowedWordCount.java
index f020ddf..5b83bd0 100644
--- a/demos/highlevelapi/src/main/java/org/apache/apex/malhar/stream/sample/WindowedWordCount.java
+++ b/demos/highlevelapi/src/main/java/org/apache/apex/malhar/stream/sample/WindowedWordCount.java
@@ -52,6 +52,8 @@ import static org.apache.apex.malhar.stream.api.Option.Options.name;
 
 /**
  * Beam WindowedWordCount Example.
+ *
+ * @since 3.5.0
  */
 @ApplicationAnnotation(name = "WindowedWordCount")
 public class WindowedWordCount implements StreamingApplication

http://git-wip-us.apache.org/repos/asf/apex-malhar/blob/681a84a8/demos/highlevelapi/src/main/java/org/apache/apex/malhar/stream/sample/complete/AutoComplete.java
----------------------------------------------------------------------
diff --git a/demos/highlevelapi/src/main/java/org/apache/apex/malhar/stream/sample/complete/AutoComplete.java b/demos/highlevelapi/src/main/java/org/apache/apex/malhar/stream/sample/complete/AutoComplete.java
index 7ac6621..6b208aa 100644
--- a/demos/highlevelapi/src/main/java/org/apache/apex/malhar/stream/sample/complete/AutoComplete.java
+++ b/demos/highlevelapi/src/main/java/org/apache/apex/malhar/stream/sample/complete/AutoComplete.java
@@ -64,6 +64,8 @@ import static org.apache.apex.malhar.stream.api.Option.Options.name;
  *
  * <p>This will update the datastore every 10 seconds based on the last
  * 30 minutes of data received.
+ *
+ * @since 3.5.0
  */
 @ApplicationAnnotation(name = "AutoComplete")
 public class AutoComplete implements StreamingApplication

http://git-wip-us.apache.org/repos/asf/apex-malhar/blob/681a84a8/demos/highlevelapi/src/main/java/org/apache/apex/malhar/stream/sample/complete/CompletionCandidate.java
----------------------------------------------------------------------
diff --git a/demos/highlevelapi/src/main/java/org/apache/apex/malhar/stream/sample/complete/CompletionCandidate.java b/demos/highlevelapi/src/main/java/org/apache/apex/malhar/stream/sample/complete/CompletionCandidate.java
index 5531b5e..991424e 100644
--- a/demos/highlevelapi/src/main/java/org/apache/apex/malhar/stream/sample/complete/CompletionCandidate.java
+++ b/demos/highlevelapi/src/main/java/org/apache/apex/malhar/stream/sample/complete/CompletionCandidate.java
@@ -20,6 +20,8 @@ package org.apache.apex.malhar.stream.sample.complete;
 
 /**
  * Class used to store tag-count pairs in Auto Complete Demo.
+ *
+ * @since 3.5.0
  */
 public class CompletionCandidate implements Comparable<CompletionCandidate>
 {

http://git-wip-us.apache.org/repos/asf/apex-malhar/blob/681a84a8/demos/highlevelapi/src/main/java/org/apache/apex/malhar/stream/sample/complete/PojoEvent.java
----------------------------------------------------------------------
diff --git a/demos/highlevelapi/src/main/java/org/apache/apex/malhar/stream/sample/complete/PojoEvent.java b/demos/highlevelapi/src/main/java/org/apache/apex/malhar/stream/sample/complete/PojoEvent.java
index e7eb90c..ee15d90 100644
--- a/demos/highlevelapi/src/main/java/org/apache/apex/malhar/stream/sample/complete/PojoEvent.java
+++ b/demos/highlevelapi/src/main/java/org/apache/apex/malhar/stream/sample/complete/PojoEvent.java
@@ -20,6 +20,8 @@ package org.apache.apex.malhar.stream.sample.complete;
 
 /**
  * Tuple Class for JdbcOutput of StreamingWordExtract.
+ *
+ * @since 3.5.0
  */
 public class PojoEvent extends Object
 {

http://git-wip-us.apache.org/repos/asf/apex-malhar/blob/681a84a8/demos/highlevelapi/src/main/java/org/apache/apex/malhar/stream/sample/complete/StreamingWordExtract.java
----------------------------------------------------------------------
diff --git a/demos/highlevelapi/src/main/java/org/apache/apex/malhar/stream/sample/complete/StreamingWordExtract.java b/demos/highlevelapi/src/main/java/org/apache/apex/malhar/stream/sample/complete/StreamingWordExtract.java
index 845901a..07f01d0 100644
--- a/demos/highlevelapi/src/main/java/org/apache/apex/malhar/stream/sample/complete/StreamingWordExtract.java
+++ b/demos/highlevelapi/src/main/java/org/apache/apex/malhar/stream/sample/complete/StreamingWordExtract.java
@@ -39,6 +39,8 @@ import static java.sql.Types.VARCHAR;
 
 /**
  * Beam StreamingWordExtract Example.
+ *
+ * @since 3.5.0
  */
 @ApplicationAnnotation(name = "StreamingWordExtract")
 public class StreamingWordExtract implements StreamingApplication

http://git-wip-us.apache.org/repos/asf/apex-malhar/blob/681a84a8/demos/highlevelapi/src/main/java/org/apache/apex/malhar/stream/sample/complete/TopNByKey.java
----------------------------------------------------------------------
diff --git a/demos/highlevelapi/src/main/java/org/apache/apex/malhar/stream/sample/complete/TopNByKey.java b/demos/highlevelapi/src/main/java/org/apache/apex/malhar/stream/sample/complete/TopNByKey.java
index a9e7744..c7ccae3 100644
--- a/demos/highlevelapi/src/main/java/org/apache/apex/malhar/stream/sample/complete/TopNByKey.java
+++ b/demos/highlevelapi/src/main/java/org/apache/apex/malhar/stream/sample/complete/TopNByKey.java
@@ -28,6 +28,8 @@ import org.apache.apex.malhar.lib.window.Accumulation;
 
 /**
  * Specialized TopNByKey accumulation for AutoComplete Demo.
+ *
+ * @since 3.5.0
  */
 public class TopNByKey implements
     Accumulation<CompletionCandidate, Map<String, Long>, List<CompletionCandidate>>

http://git-wip-us.apache.org/repos/asf/apex-malhar/blob/681a84a8/demos/highlevelapi/src/main/java/org/apache/apex/malhar/stream/sample/complete/TopWikipediaSessions.java
----------------------------------------------------------------------
diff --git a/demos/highlevelapi/src/main/java/org/apache/apex/malhar/stream/sample/complete/TopWikipediaSessions.java b/demos/highlevelapi/src/main/java/org/apache/apex/malhar/stream/sample/complete/TopWikipediaSessions.java
index a697d52..5ac3e7f 100644
--- a/demos/highlevelapi/src/main/java/org/apache/apex/malhar/stream/sample/complete/TopWikipediaSessions.java
+++ b/demos/highlevelapi/src/main/java/org/apache/apex/malhar/stream/sample/complete/TopWikipediaSessions.java
@@ -52,6 +52,8 @@ import static org.apache.apex.malhar.stream.api.Option.Options.name;
 
 /**
  * Beam's TopWikipediaSessions Example.
+ *
+ * @since 3.5.0
  */
 @ApplicationAnnotation(name = "TopWikipediaSessions")
 public class TopWikipediaSessions implements StreamingApplication

http://git-wip-us.apache.org/repos/asf/apex-malhar/blob/681a84a8/demos/highlevelapi/src/main/java/org/apache/apex/malhar/stream/sample/complete/TrafficRoutes.java
----------------------------------------------------------------------
diff --git a/demos/highlevelapi/src/main/java/org/apache/apex/malhar/stream/sample/complete/TrafficRoutes.java b/demos/highlevelapi/src/main/java/org/apache/apex/malhar/stream/sample/complete/TrafficRoutes.java
index 08aa8c8..e6a53d6 100644
--- a/demos/highlevelapi/src/main/java/org/apache/apex/malhar/stream/sample/complete/TrafficRoutes.java
+++ b/demos/highlevelapi/src/main/java/org/apache/apex/malhar/stream/sample/complete/TrafficRoutes.java
@@ -56,6 +56,8 @@ import static org.apache.apex.malhar.stream.api.Option.Options.name;
 
 /**
  * Beam's TrafficRoutes example.
+ *
+ * @since 3.5.0
  */
 @ApplicationAnnotation(name = "TrafficRoutes")
 public class TrafficRoutes implements StreamingApplication

http://git-wip-us.apache.org/repos/asf/apex-malhar/blob/681a84a8/demos/highlevelapi/src/main/java/org/apache/apex/malhar/stream/sample/complete/TwitterAutoComplete.java
----------------------------------------------------------------------
diff --git a/demos/highlevelapi/src/main/java/org/apache/apex/malhar/stream/sample/complete/TwitterAutoComplete.java b/demos/highlevelapi/src/main/java/org/apache/apex/malhar/stream/sample/complete/TwitterAutoComplete.java
index a4fdf24..ffd2a03 100644
--- a/demos/highlevelapi/src/main/java/org/apache/apex/malhar/stream/sample/complete/TwitterAutoComplete.java
+++ b/demos/highlevelapi/src/main/java/org/apache/apex/malhar/stream/sample/complete/TwitterAutoComplete.java
@@ -59,6 +59,8 @@ import static org.apache.apex.malhar.stream.api.Option.Options.name;
  * Your application consumer secret,
  * Your twitter access token, and
  * Your twitter access token secret.
+ *
+ * @since 3.5.0
  */
 @ApplicationAnnotation(name = "TwitterAutoComplete")
 public class TwitterAutoComplete implements StreamingApplication

http://git-wip-us.apache.org/repos/asf/apex-malhar/blob/681a84a8/demos/highlevelapi/src/main/java/org/apache/apex/malhar/stream/sample/cookbook/CombinePerKeyExamples.java
----------------------------------------------------------------------
diff --git a/demos/highlevelapi/src/main/java/org/apache/apex/malhar/stream/sample/cookbook/CombinePerKeyExamples.java b/demos/highlevelapi/src/main/java/org/apache/apex/malhar/stream/sample/cookbook/CombinePerKeyExamples.java
index 653207a..bfdb268 100644
--- a/demos/highlevelapi/src/main/java/org/apache/apex/malhar/stream/sample/cookbook/CombinePerKeyExamples.java
+++ b/demos/highlevelapi/src/main/java/org/apache/apex/malhar/stream/sample/cookbook/CombinePerKeyExamples.java
@@ -53,6 +53,8 @@ import static org.apache.apex.malhar.stream.api.Option.Options.name;
  * <p>Concepts: the combine transform, which lets you combine the values in a
  * key-grouped Collection
  *
+ *
+ * @since 3.5.0
  */
 @ApplicationAnnotation(name = "CombinePerKeyExamples")
 public class CombinePerKeyExamples implements StreamingApplication

http://git-wip-us.apache.org/repos/asf/apex-malhar/blob/681a84a8/demos/highlevelapi/src/main/java/org/apache/apex/malhar/stream/sample/cookbook/DeDupExample.java
----------------------------------------------------------------------
diff --git a/demos/highlevelapi/src/main/java/org/apache/apex/malhar/stream/sample/cookbook/DeDupExample.java b/demos/highlevelapi/src/main/java/org/apache/apex/malhar/stream/sample/cookbook/DeDupExample.java
index d13e2c3..4df5fe7 100644
--- a/demos/highlevelapi/src/main/java/org/apache/apex/malhar/stream/sample/cookbook/DeDupExample.java
+++ b/demos/highlevelapi/src/main/java/org/apache/apex/malhar/stream/sample/cookbook/DeDupExample.java
@@ -43,6 +43,8 @@ import static org.apache.apex.malhar.stream.api.Option.Options.name;
 
 /**
  * Beam DeDupExample.
+ *
+ * @since 3.5.0
  */
 @ApplicationAnnotation(name = "DeDupExample")
 public class DeDupExample implements StreamingApplication

http://git-wip-us.apache.org/repos/asf/apex-malhar/blob/681a84a8/demos/highlevelapi/src/main/java/org/apache/apex/malhar/stream/sample/cookbook/InputPojo.java
----------------------------------------------------------------------
diff --git a/demos/highlevelapi/src/main/java/org/apache/apex/malhar/stream/sample/cookbook/InputPojo.java b/demos/highlevelapi/src/main/java/org/apache/apex/malhar/stream/sample/cookbook/InputPojo.java
index 1ba2a90..834964c 100644
--- a/demos/highlevelapi/src/main/java/org/apache/apex/malhar/stream/sample/cookbook/InputPojo.java
+++ b/demos/highlevelapi/src/main/java/org/apache/apex/malhar/stream/sample/cookbook/InputPojo.java
@@ -20,6 +20,8 @@ package org.apache.apex.malhar.stream.sample.cookbook;
 
 /**
  * Tuple class for JDBC input of {@link MaxPerKeyExamples}.
+ *
+ * @since 3.5.0
  */
 public class InputPojo extends Object
 {

http://git-wip-us.apache.org/repos/asf/apex-malhar/blob/681a84a8/demos/highlevelapi/src/main/java/org/apache/apex/malhar/stream/sample/cookbook/MaxPerKeyExamples.java
----------------------------------------------------------------------
diff --git a/demos/highlevelapi/src/main/java/org/apache/apex/malhar/stream/sample/cookbook/MaxPerKeyExamples.java b/demos/highlevelapi/src/main/java/org/apache/apex/malhar/stream/sample/cookbook/MaxPerKeyExamples.java
index 4538aef..4fafa5a 100644
--- a/demos/highlevelapi/src/main/java/org/apache/apex/malhar/stream/sample/cookbook/MaxPerKeyExamples.java
+++ b/demos/highlevelapi/src/main/java/org/apache/apex/malhar/stream/sample/cookbook/MaxPerKeyExamples.java
@@ -51,6 +51,8 @@ import static org.apache.apex.malhar.stream.api.Option.Options.name;
 
 /**
  * MaxPerKeyExamples Application from Beam
+ *
+ * @since 3.5.0
  */
 @ApplicationAnnotation(name = "MaxPerKeyExamples")
 public class MaxPerKeyExamples implements StreamingApplication

http://git-wip-us.apache.org/repos/asf/apex-malhar/blob/681a84a8/demos/highlevelapi/src/main/java/org/apache/apex/malhar/stream/sample/cookbook/OutputPojo.java
----------------------------------------------------------------------
diff --git a/demos/highlevelapi/src/main/java/org/apache/apex/malhar/stream/sample/cookbook/OutputPojo.java b/demos/highlevelapi/src/main/java/org/apache/apex/malhar/stream/sample/cookbook/OutputPojo.java
index 59831b7..f3d0c64 100644
--- a/demos/highlevelapi/src/main/java/org/apache/apex/malhar/stream/sample/cookbook/OutputPojo.java
+++ b/demos/highlevelapi/src/main/java/org/apache/apex/malhar/stream/sample/cookbook/OutputPojo.java
@@ -20,6 +20,8 @@ package org.apache.apex.malhar.stream.sample.cookbook;
 
 /**
  * OutputPojo Tuple Class for jdbcOutput of {@link MaxPerKeyExamples}.
+ *
+ * @since 3.5.0
  */
 public class OutputPojo
 {

http://git-wip-us.apache.org/repos/asf/apex-malhar/blob/681a84a8/demos/highlevelapi/src/main/java/org/apache/apex/malhar/stream/sample/cookbook/TriggerExample.java
----------------------------------------------------------------------
diff --git a/demos/highlevelapi/src/main/java/org/apache/apex/malhar/stream/sample/cookbook/TriggerExample.java b/demos/highlevelapi/src/main/java/org/apache/apex/malhar/stream/sample/cookbook/TriggerExample.java
index dd09352..962faa5 100644
--- a/demos/highlevelapi/src/main/java/org/apache/apex/malhar/stream/sample/cookbook/TriggerExample.java
+++ b/demos/highlevelapi/src/main/java/org/apache/apex/malhar/stream/sample/cookbook/TriggerExample.java
@@ -115,6 +115,8 @@ import com.datatorrent.lib.util.KeyValPair;
  *
  * <p> The example will try to cancel the pipelines on the signal to terminate the process (CTRL-C)
  * and then exits.
+ *
+ * @since 3.5.0
  */
 
 public class TriggerExample

http://git-wip-us.apache.org/repos/asf/apex-malhar/blob/681a84a8/hive/src/main/java/org/apache/apex/malhar/hive/HiveOutputModule.java
----------------------------------------------------------------------
diff --git a/hive/src/main/java/org/apache/apex/malhar/hive/HiveOutputModule.java b/hive/src/main/java/org/apache/apex/malhar/hive/HiveOutputModule.java
index 4f58cf4..3491b3c 100644
--- a/hive/src/main/java/org/apache/apex/malhar/hive/HiveOutputModule.java
+++ b/hive/src/main/java/org/apache/apex/malhar/hive/HiveOutputModule.java
@@ -42,6 +42,8 @@ import com.datatorrent.contrib.hive.HiveStore;
  * HiveOutputModule provides abstraction for the operators needed for writing
  * tuples to hive. This module will be expanded to FSPojoToHiveOperator and
  * HiveOperator in physical plan.
+ *
+ * @since 3.5.0
  */
 @org.apache.hadoop.classification.InterfaceStability.Evolving
 public class HiveOutputModule implements Module

http://git-wip-us.apache.org/repos/asf/apex-malhar/blob/681a84a8/kafka/src/main/java/org/apache/apex/malhar/kafka/AbstractKafkaOutputOperator.java
----------------------------------------------------------------------
diff --git a/kafka/src/main/java/org/apache/apex/malhar/kafka/AbstractKafkaOutputOperator.java b/kafka/src/main/java/org/apache/apex/malhar/kafka/AbstractKafkaOutputOperator.java
index 56d9611..f38ead9 100644
--- a/kafka/src/main/java/org/apache/apex/malhar/kafka/AbstractKafkaOutputOperator.java
+++ b/kafka/src/main/java/org/apache/apex/malhar/kafka/AbstractKafkaOutputOperator.java
@@ -34,6 +34,8 @@ import com.datatorrent.api.Operator;
  * @category Messaging
  * @tags output operator
  *
+ *
+ * @since 3.5.0
  */
 @org.apache.hadoop.classification.InterfaceStability.Evolving
 public abstract class AbstractKafkaOutputOperator<K, V> implements Operator

http://git-wip-us.apache.org/repos/asf/apex-malhar/blob/681a84a8/kafka/src/main/java/org/apache/apex/malhar/kafka/KafkaSinglePortExactlyOnceOutputOperator.java
----------------------------------------------------------------------
diff --git a/kafka/src/main/java/org/apache/apex/malhar/kafka/KafkaSinglePortExactlyOnceOutputOperator.java b/kafka/src/main/java/org/apache/apex/malhar/kafka/KafkaSinglePortExactlyOnceOutputOperator.java
index 29b2584..6511cd4 100644
--- a/kafka/src/main/java/org/apache/apex/malhar/kafka/KafkaSinglePortExactlyOnceOutputOperator.java
+++ b/kafka/src/main/java/org/apache/apex/malhar/kafka/KafkaSinglePortExactlyOnceOutputOperator.java
@@ -88,6 +88,8 @@ import static org.apache.kafka.clients.consumer.ConsumerConfig.VALUE_DESERIALIZE
  * @category Messaging
  * @tags output operator
  *
+ *
+ * @since 3.5.0
  */
 @org.apache.hadoop.classification.InterfaceStability.Evolving
 public class KafkaSinglePortExactlyOnceOutputOperator<T> extends AbstractKafkaOutputOperator<String, T>

http://git-wip-us.apache.org/repos/asf/apex-malhar/blob/681a84a8/kafka/src/main/java/org/apache/apex/malhar/kafka/KafkaSinglePortOutputOperator.java
----------------------------------------------------------------------
diff --git a/kafka/src/main/java/org/apache/apex/malhar/kafka/KafkaSinglePortOutputOperator.java b/kafka/src/main/java/org/apache/apex/malhar/kafka/KafkaSinglePortOutputOperator.java
index a08c7a2..500602c 100644
--- a/kafka/src/main/java/org/apache/apex/malhar/kafka/KafkaSinglePortOutputOperator.java
+++ b/kafka/src/main/java/org/apache/apex/malhar/kafka/KafkaSinglePortOutputOperator.java
@@ -25,6 +25,8 @@ import com.datatorrent.api.DefaultInputPort;
 /**
  * Kafka output operator with single input port (inputPort).
  * It supports atleast once processing guarantees
+ *
+ * @since 3.5.0
  */
 @org.apache.hadoop.classification.InterfaceStability.Evolving
 public class KafkaSinglePortOutputOperator<K,V> extends AbstractKafkaOutputOperator

http://git-wip-us.apache.org/repos/asf/apex-malhar/blob/681a84a8/library/src/main/java/com/datatorrent/lib/bandwidth/BandwidthLimitingOperator.java
----------------------------------------------------------------------
diff --git a/library/src/main/java/com/datatorrent/lib/bandwidth/BandwidthLimitingOperator.java b/library/src/main/java/com/datatorrent/lib/bandwidth/BandwidthLimitingOperator.java
index 2ff964d..79c61af 100644
--- a/library/src/main/java/com/datatorrent/lib/bandwidth/BandwidthLimitingOperator.java
+++ b/library/src/main/java/com/datatorrent/lib/bandwidth/BandwidthLimitingOperator.java
@@ -22,6 +22,8 @@ import com.datatorrent.api.Operator;
 
 /**
  * Operator which limits bandwidth consumption. It should have instance of BandwidthManager.
+ *
+ * @since 3.5.0
  */
 public interface BandwidthLimitingOperator extends Operator
 {

http://git-wip-us.apache.org/repos/asf/apex-malhar/blob/681a84a8/library/src/main/java/com/datatorrent/lib/bandwidth/BandwidthManager.java
----------------------------------------------------------------------
diff --git a/library/src/main/java/com/datatorrent/lib/bandwidth/BandwidthManager.java b/library/src/main/java/com/datatorrent/lib/bandwidth/BandwidthManager.java
index 303a3a6..54bb4d5 100644
--- a/library/src/main/java/com/datatorrent/lib/bandwidth/BandwidthManager.java
+++ b/library/src/main/java/com/datatorrent/lib/bandwidth/BandwidthManager.java
@@ -33,6 +33,8 @@ import com.datatorrent.api.Context.OperatorContext;
  * BandwidthManager keeps track of bandwidth consumption and provides limit on maximum bandwidth that can be consumed at
  * any moment. This accumulates bandwidth upto certain limits so that accumulated bandwidth can be used over a period of
  * time.
+ *
+ * @since 3.5.0
  */
 public class BandwidthManager implements Component<Context.OperatorContext>
 {

http://git-wip-us.apache.org/repos/asf/apex-malhar/blob/681a84a8/library/src/main/java/com/datatorrent/lib/bandwidth/BandwidthPartitioner.java
----------------------------------------------------------------------
diff --git a/library/src/main/java/com/datatorrent/lib/bandwidth/BandwidthPartitioner.java b/library/src/main/java/com/datatorrent/lib/bandwidth/BandwidthPartitioner.java
index 6d876a7..2b503ed 100644
--- a/library/src/main/java/com/datatorrent/lib/bandwidth/BandwidthPartitioner.java
+++ b/library/src/main/java/com/datatorrent/lib/bandwidth/BandwidthPartitioner.java
@@ -25,6 +25,9 @@ import org.slf4j.LoggerFactory;
 
 import com.datatorrent.common.partitioner.StatelessPartitioner;
 
+/**
+ * @since 3.5.0
+ */
 public class BandwidthPartitioner<T extends BandwidthLimitingOperator> extends StatelessPartitioner<T>
 {
   private static final long serialVersionUID = -7502505996637650237L;

http://git-wip-us.apache.org/repos/asf/apex-malhar/blob/681a84a8/library/src/main/java/com/datatorrent/lib/db/jdbc/AbstractJdbcPollInputOperator.java
----------------------------------------------------------------------
diff --git a/library/src/main/java/com/datatorrent/lib/db/jdbc/AbstractJdbcPollInputOperator.java b/library/src/main/java/com/datatorrent/lib/db/jdbc/AbstractJdbcPollInputOperator.java
index edb3aaa..f9fb714 100644
--- a/library/src/main/java/com/datatorrent/lib/db/jdbc/AbstractJdbcPollInputOperator.java
+++ b/library/src/main/java/com/datatorrent/lib/db/jdbc/AbstractJdbcPollInputOperator.java
@@ -87,6 +87,8 @@ import static org.jooq.impl.DSL.field;
  * @displayName Jdbc Polling Input Operator
  * @category Input
  * @tags database, sql, jdbc, partitionable, idepotent, pollable
+ *
+ * @since 3.5.0
  */
 @Evolving
 @OperatorAnnotation(checkpointableWithinAppWindow = false)

http://git-wip-us.apache.org/repos/asf/apex-malhar/blob/681a84a8/library/src/main/java/com/datatorrent/lib/db/jdbc/JdbcFieldInfo.java
----------------------------------------------------------------------
diff --git a/library/src/main/java/com/datatorrent/lib/db/jdbc/JdbcFieldInfo.java b/library/src/main/java/com/datatorrent/lib/db/jdbc/JdbcFieldInfo.java
index 5c7e6e8..596c108 100644
--- a/library/src/main/java/com/datatorrent/lib/db/jdbc/JdbcFieldInfo.java
+++ b/library/src/main/java/com/datatorrent/lib/db/jdbc/JdbcFieldInfo.java
@@ -26,6 +26,8 @@ import com.datatorrent.lib.util.FieldInfo;
  * An {@link FieldInfo} object used for JDBC output sources must have the SQL data types.
  * This is needed to create correct getters and setters for the POJO,
  * as well as setting the right parameter types in the JDBC prepared statement.
+ *
+ * @since 3.5.0
  */
 public class JdbcFieldInfo extends FieldInfo
 {

http://git-wip-us.apache.org/repos/asf/apex-malhar/blob/681a84a8/library/src/main/java/com/datatorrent/lib/db/jdbc/JdbcPOJOPollInputOperator.java
----------------------------------------------------------------------
diff --git a/library/src/main/java/com/datatorrent/lib/db/jdbc/JdbcPOJOPollInputOperator.java b/library/src/main/java/com/datatorrent/lib/db/jdbc/JdbcPOJOPollInputOperator.java
index 91821be..40919a2 100644
--- a/library/src/main/java/com/datatorrent/lib/db/jdbc/JdbcPOJOPollInputOperator.java
+++ b/library/src/main/java/com/datatorrent/lib/db/jdbc/JdbcPOJOPollInputOperator.java
@@ -55,6 +55,8 @@ import com.datatorrent.lib.util.PojoUtils;
  * @displayName Jdbc Polling Input Operator
  * @category Input
  * @tags database, sql, jdbc
+ *
+ * @since 3.5.0
  */
 @Evolving
 public class JdbcPOJOPollInputOperator extends AbstractJdbcPollInputOperator<Object>

http://git-wip-us.apache.org/repos/asf/apex-malhar/blob/681a84a8/library/src/main/java/com/datatorrent/lib/db/jdbc/JdbcPollInputOperator.java
----------------------------------------------------------------------
diff --git a/library/src/main/java/com/datatorrent/lib/db/jdbc/JdbcPollInputOperator.java b/library/src/main/java/com/datatorrent/lib/db/jdbc/JdbcPollInputOperator.java
index 518ac17..d139379 100644
--- a/library/src/main/java/com/datatorrent/lib/db/jdbc/JdbcPollInputOperator.java
+++ b/library/src/main/java/com/datatorrent/lib/db/jdbc/JdbcPollInputOperator.java
@@ -37,6 +37,8 @@ import com.datatorrent.api.annotation.OutputPortFieldAnnotation;
  * @displayName Jdbc Polling Input Operator
  * @category Input
  * @tags database, sql, jdbc
+ *
+ * @since 3.5.0
  */
 @Evolving
 public class JdbcPollInputOperator extends AbstractJdbcPollInputOperator<String>

http://git-wip-us.apache.org/repos/asf/apex-malhar/blob/681a84a8/library/src/main/java/com/datatorrent/lib/filter/FilterOperator.java
----------------------------------------------------------------------
diff --git a/library/src/main/java/com/datatorrent/lib/filter/FilterOperator.java b/library/src/main/java/com/datatorrent/lib/filter/FilterOperator.java
index 8d61d00..4f566b0 100644
--- a/library/src/main/java/com/datatorrent/lib/filter/FilterOperator.java
+++ b/library/src/main/java/com/datatorrent/lib/filter/FilterOperator.java
@@ -54,6 +54,8 @@ import com.datatorrent.lib.util.PojoUtils;
  * - falsePort emits POJOs not meeting the given condition
  * - error port emits any error situation while evaluating expression
  * 
+ *
+ * @since 3.5.0
  */
 @InterfaceStability.Evolving
 public class FilterOperator extends BaseOperator implements Operator.ActivationListener

http://git-wip-us.apache.org/repos/asf/apex-malhar/blob/681a84a8/library/src/main/java/com/datatorrent/lib/io/fs/FSInputModule.java
----------------------------------------------------------------------
diff --git a/library/src/main/java/com/datatorrent/lib/io/fs/FSInputModule.java b/library/src/main/java/com/datatorrent/lib/io/fs/FSInputModule.java
index e8af9aa..d276dd7 100644
--- a/library/src/main/java/com/datatorrent/lib/io/fs/FSInputModule.java
+++ b/library/src/main/java/com/datatorrent/lib/io/fs/FSInputModule.java
@@ -44,6 +44,8 @@ import com.datatorrent.netlet.util.Slice;
  * 6. readersCount: count of readers to read input file<br/>
  * 7. sequencialFileRead: If emit file blocks in sequence?<br/>
  * 8. blocksThreshold: number of blocks emitted per window
+ *
+ * @since 3.5.0
  */
 
 public class FSInputModule implements Module

http://git-wip-us.apache.org/repos/asf/apex-malhar/blob/681a84a8/library/src/main/java/com/datatorrent/lib/io/fs/S3BlockReader.java
----------------------------------------------------------------------
diff --git a/library/src/main/java/com/datatorrent/lib/io/fs/S3BlockReader.java b/library/src/main/java/com/datatorrent/lib/io/fs/S3BlockReader.java
index 8ce1304..42231bb 100644
--- a/library/src/main/java/com/datatorrent/lib/io/fs/S3BlockReader.java
+++ b/library/src/main/java/com/datatorrent/lib/io/fs/S3BlockReader.java
@@ -38,6 +38,8 @@ import com.datatorrent.lib.io.block.ReaderContext;
 /**
  * S3BlockReader extends from BlockReader and serves the functionality of read objects and
  * parse Block metadata
+ *
+ * @since 3.5.0
  */
 @org.apache.hadoop.classification.InterfaceStability.Evolving
 public class S3BlockReader extends FSSliceReader

http://git-wip-us.apache.org/repos/asf/apex-malhar/blob/681a84a8/library/src/main/java/com/datatorrent/lib/io/fs/S3InputModule.java
----------------------------------------------------------------------
diff --git a/library/src/main/java/com/datatorrent/lib/io/fs/S3InputModule.java b/library/src/main/java/com/datatorrent/lib/io/fs/S3InputModule.java
index 52e7ff0..bd55161 100644
--- a/library/src/main/java/com/datatorrent/lib/io/fs/S3InputModule.java
+++ b/library/src/main/java/com/datatorrent/lib/io/fs/S3InputModule.java
@@ -39,6 +39,8 @@ import com.datatorrent.lib.io.block.FSSliceReader;
  * 5. blockSize: block size used to read input blocks of file<br/>
  * 6. readersCount: count of readers to read input file<br/>
  * 7. sequencialFileRead: Is emit file blocks in sequence?
+ *
+ * @since 3.5.0
  */
 @org.apache.hadoop.classification.InterfaceStability.Evolving
 public class S3InputModule extends FSInputModule

http://git-wip-us.apache.org/repos/asf/apex-malhar/blob/681a84a8/library/src/main/java/org/apache/apex/malhar/lib/dedup/AbstractDeduper.java
----------------------------------------------------------------------
diff --git a/library/src/main/java/org/apache/apex/malhar/lib/dedup/AbstractDeduper.java b/library/src/main/java/org/apache/apex/malhar/lib/dedup/AbstractDeduper.java
index 13a3475..0512ebd 100644
--- a/library/src/main/java/org/apache/apex/malhar/lib/dedup/AbstractDeduper.java
+++ b/library/src/main/java/org/apache/apex/malhar/lib/dedup/AbstractDeduper.java
@@ -63,6 +63,8 @@ import com.datatorrent.netlet.util.Slice;
  * 3. Otherwise the tuple is a unique tuple.
  *
  * @param <T> type of events
+ *
+ * @since 3.5.0
  */
 @Evolving
 @OperatorAnnotation(checkpointableWithinAppWindow = false)

http://git-wip-us.apache.org/repos/asf/apex-malhar/blob/681a84a8/library/src/main/java/org/apache/apex/malhar/lib/dedup/BoundedDedupOperator.java
----------------------------------------------------------------------
diff --git a/library/src/main/java/org/apache/apex/malhar/lib/dedup/BoundedDedupOperator.java b/library/src/main/java/org/apache/apex/malhar/lib/dedup/BoundedDedupOperator.java
index e71762e..5509ba0 100644
--- a/library/src/main/java/org/apache/apex/malhar/lib/dedup/BoundedDedupOperator.java
+++ b/library/src/main/java/org/apache/apex/malhar/lib/dedup/BoundedDedupOperator.java
@@ -55,6 +55,8 @@ import com.datatorrent.netlet.util.Slice;
  * that sqrt(max integer) = 46340. This implies that the number of buckets used will roughly be equal to the size of 
  * each bucket, thus spreading the load equally among each bucket.
  *
+ *
+ * @since 3.5.0
  */
 @Evolving
 public class BoundedDedupOperator extends AbstractDeduper<Object>

http://git-wip-us.apache.org/repos/asf/apex-malhar/blob/681a84a8/library/src/main/java/org/apache/apex/malhar/lib/dedup/DeduperStreamCodec.java
----------------------------------------------------------------------
diff --git a/library/src/main/java/org/apache/apex/malhar/lib/dedup/DeduperStreamCodec.java b/library/src/main/java/org/apache/apex/malhar/lib/dedup/DeduperStreamCodec.java
index d40a550..dc69cbd 100644
--- a/library/src/main/java/org/apache/apex/malhar/lib/dedup/DeduperStreamCodec.java
+++ b/library/src/main/java/org/apache/apex/malhar/lib/dedup/DeduperStreamCodec.java
@@ -30,6 +30,8 @@ import com.datatorrent.lib.util.PojoUtils.Getter;
  * This helps in partitioning the tuples depending on the key field in the tuple.
  * The {@link #getPartition(Object)} function returns the hash code of the key field
  *
+ *
+ * @since 3.5.0
  */
 @Evolving
 public class DeduperStreamCodec extends KryoSerializableStreamCodec<Object>

http://git-wip-us.apache.org/repos/asf/apex-malhar/blob/681a84a8/library/src/main/java/org/apache/apex/malhar/lib/dedup/TimeBasedDedupOperator.java
----------------------------------------------------------------------
diff --git a/library/src/main/java/org/apache/apex/malhar/lib/dedup/TimeBasedDedupOperator.java b/library/src/main/java/org/apache/apex/malhar/lib/dedup/TimeBasedDedupOperator.java
index 225c8a3..172a957 100644
--- a/library/src/main/java/org/apache/apex/malhar/lib/dedup/TimeBasedDedupOperator.java
+++ b/library/src/main/java/org/apache/apex/malhar/lib/dedup/TimeBasedDedupOperator.java
@@ -71,6 +71,8 @@ import com.datatorrent.netlet.util.Slice;
  * 2. {@link #timeExpression} - The java expression to extract the time field in the incoming tuple (POJO).
  * In case there is no time field in the tuple, system time, when the tuple is processed, will be used.
  *
+ *
+ * @since 3.5.0
  */
 @Evolving
 public class TimeBasedDedupOperator extends AbstractDeduper<Object> implements ActivationListener<Context>

http://git-wip-us.apache.org/repos/asf/apex-malhar/blob/681a84a8/library/src/main/java/org/apache/apex/malhar/lib/fs/FSRecordReader.java
----------------------------------------------------------------------
diff --git a/library/src/main/java/org/apache/apex/malhar/lib/fs/FSRecordReader.java b/library/src/main/java/org/apache/apex/malhar/lib/fs/FSRecordReader.java
index 44168c8..31f35aa 100644
--- a/library/src/main/java/org/apache/apex/malhar/lib/fs/FSRecordReader.java
+++ b/library/src/main/java/org/apache/apex/malhar/lib/fs/FSRecordReader.java
@@ -35,6 +35,8 @@ import com.datatorrent.lib.io.block.ReaderContext;
  * 
  * Typically, this operator will be connected to output of FileSplitterInput to
  * read records in parallel.
+ *
+ * @since 3.5.0
  */
 @org.apache.hadoop.classification.InterfaceStability.Evolving
 public class FSRecordReader extends FSSliceReader

http://git-wip-us.apache.org/repos/asf/apex-malhar/blob/681a84a8/library/src/main/java/org/apache/apex/malhar/lib/fs/FSRecordReaderModule.java
----------------------------------------------------------------------
diff --git a/library/src/main/java/org/apache/apex/malhar/lib/fs/FSRecordReaderModule.java b/library/src/main/java/org/apache/apex/malhar/lib/fs/FSRecordReaderModule.java
index b1df744..0a9b321 100644
--- a/library/src/main/java/org/apache/apex/malhar/lib/fs/FSRecordReaderModule.java
+++ b/library/src/main/java/org/apache/apex/malhar/lib/fs/FSRecordReaderModule.java
@@ -58,6 +58,8 @@ import com.datatorrent.lib.io.fs.FileSplitterInput;
  * instead of reading different offsets of the same file. <br/>
  * (File level parallelism instead of block level parallelism)<br/>
  * 8. blocksThreshold: number of blocks emitted per window
+ *
+ * @since 3.5.0
  */
 @org.apache.hadoop.classification.InterfaceStability.Evolving
 public class FSRecordReaderModule implements Module

http://git-wip-us.apache.org/repos/asf/apex-malhar/blob/681a84a8/library/src/main/java/org/apache/apex/malhar/lib/join/AbstractInnerJoinOperator.java
----------------------------------------------------------------------
diff --git a/library/src/main/java/org/apache/apex/malhar/lib/join/AbstractInnerJoinOperator.java b/library/src/main/java/org/apache/apex/malhar/lib/join/AbstractInnerJoinOperator.java
index dd58ea2..816ca58 100644
--- a/library/src/main/java/org/apache/apex/malhar/lib/join/AbstractInnerJoinOperator.java
+++ b/library/src/main/java/org/apache/apex/malhar/lib/join/AbstractInnerJoinOperator.java
@@ -62,6 +62,8 @@ import com.datatorrent.common.util.BaseOperator;
  *
  *  @displayName Abstract Inner Join Operator
  *  @tags join
+ *
+ * @since 3.5.0
  */
 @org.apache.hadoop.classification.InterfaceStability.Evolving
 @OperatorAnnotation(checkpointableWithinAppWindow = false)

http://git-wip-us.apache.org/repos/asf/apex-malhar/blob/681a84a8/library/src/main/java/org/apache/apex/malhar/lib/join/AbstractManagedStateInnerJoinOperator.java
----------------------------------------------------------------------
diff --git a/library/src/main/java/org/apache/apex/malhar/lib/join/AbstractManagedStateInnerJoinOperator.java b/library/src/main/java/org/apache/apex/malhar/lib/join/AbstractManagedStateInnerJoinOperator.java
index d0652ef..8b19ebc 100644
--- a/library/src/main/java/org/apache/apex/malhar/lib/join/AbstractManagedStateInnerJoinOperator.java
+++ b/library/src/main/java/org/apache/apex/malhar/lib/join/AbstractManagedStateInnerJoinOperator.java
@@ -42,6 +42,8 @@ import com.datatorrent.lib.fileaccess.FileAccessFSImpl;
  * <b>Properties:</b><br>
  * <b>noOfBuckets</b>: Number of buckets required for Managed state. <br>
  * <b>bucketSpanTime</b>: Indicates the length of the time bucket. <br>
+ *
+ * @since 3.5.0
  */
 @org.apache.hadoop.classification.InterfaceStability.Evolving
 public abstract class AbstractManagedStateInnerJoinOperator<K,T> extends AbstractInnerJoinOperator<K,T> implements

http://git-wip-us.apache.org/repos/asf/apex-malhar/blob/681a84a8/library/src/main/java/org/apache/apex/malhar/lib/join/JoinStreamCodec.java
----------------------------------------------------------------------
diff --git a/library/src/main/java/org/apache/apex/malhar/lib/join/JoinStreamCodec.java b/library/src/main/java/org/apache/apex/malhar/lib/join/JoinStreamCodec.java
index 7a34699..2bc12d1 100644
--- a/library/src/main/java/org/apache/apex/malhar/lib/join/JoinStreamCodec.java
+++ b/library/src/main/java/org/apache/apex/malhar/lib/join/JoinStreamCodec.java
@@ -23,6 +23,8 @@ import com.datatorrent.lib.util.PojoUtils;
 
 /**
  * Stream codec based on keyExpression for POJO Inner Join Operator.
+ *
+ * @since 3.5.0
  */
 @org.apache.hadoop.classification.InterfaceStability.Evolving
 public class JoinStreamCodec extends KryoSerializableStreamCodec<Object>

http://git-wip-us.apache.org/repos/asf/apex-malhar/blob/681a84a8/library/src/main/java/org/apache/apex/malhar/lib/join/POJOInnerJoinOperator.java
----------------------------------------------------------------------
diff --git a/library/src/main/java/org/apache/apex/malhar/lib/join/POJOInnerJoinOperator.java b/library/src/main/java/org/apache/apex/malhar/lib/join/POJOInnerJoinOperator.java
index 0b23808..d7f50c9 100644
--- a/library/src/main/java/org/apache/apex/malhar/lib/join/POJOInnerJoinOperator.java
+++ b/library/src/main/java/org/apache/apex/malhar/lib/join/POJOInnerJoinOperator.java
@@ -38,6 +38,8 @@ import com.datatorrent.lib.util.PojoUtils;
  *
  * @displayName POJO Inner Join Operator
  * @tags join
+ *
+ * @since 3.5.0
  */
 @org.apache.hadoop.classification.InterfaceStability.Evolving
 public class POJOInnerJoinOperator extends AbstractManagedStateInnerJoinOperator<Object,Object> implements Operator.ActivationListener<Context>

http://git-wip-us.apache.org/repos/asf/apex-malhar/blob/681a84a8/library/src/main/java/org/apache/apex/malhar/lib/state/managed/ManagedTimeStateMultiValue.java
----------------------------------------------------------------------
diff --git a/library/src/main/java/org/apache/apex/malhar/lib/state/managed/ManagedTimeStateMultiValue.java b/library/src/main/java/org/apache/apex/malhar/lib/state/managed/ManagedTimeStateMultiValue.java
index fd7250d..3ca43a4 100644
--- a/library/src/main/java/org/apache/apex/malhar/lib/state/managed/ManagedTimeStateMultiValue.java
+++ b/library/src/main/java/org/apache/apex/malhar/lib/state/managed/ManagedTimeStateMultiValue.java
@@ -48,6 +48,8 @@ import com.datatorrent.netlet.util.Slice;
  * <b>isKeyContainsMultiValue</b>: Specifies whether the key has multiple value or not. <br>
  * <b>timeBucket</b>: Specifies the lenght of the time bucket.
  *
+ *
+ * @since 3.5.0
  */
 @org.apache.hadoop.classification.InterfaceStability.Evolving
 public class ManagedTimeStateMultiValue<K,V> implements Spillable.SpillableByteArrayListMultimap<K,V>

http://git-wip-us.apache.org/repos/asf/apex-malhar/blob/681a84a8/library/src/main/java/org/apache/apex/malhar/lib/state/spillable/SequentialSpillableIdentifierGenerator.java
----------------------------------------------------------------------
diff --git a/library/src/main/java/org/apache/apex/malhar/lib/state/spillable/SequentialSpillableIdentifierGenerator.java b/library/src/main/java/org/apache/apex/malhar/lib/state/spillable/SequentialSpillableIdentifierGenerator.java
index 600fa98..1e70ad9 100644
--- a/library/src/main/java/org/apache/apex/malhar/lib/state/spillable/SequentialSpillableIdentifierGenerator.java
+++ b/library/src/main/java/org/apache/apex/malhar/lib/state/spillable/SequentialSpillableIdentifierGenerator.java
@@ -27,6 +27,8 @@ import com.google.common.collect.Sets;
 
 /**
  * This is an id generator that generates single byte ids for Spillable datastructures.
+ *
+ * @since 3.5.0
  */
 @InterfaceStability.Evolving
 public class SequentialSpillableIdentifierGenerator implements SpillableIdentifierGenerator

http://git-wip-us.apache.org/repos/asf/apex-malhar/blob/681a84a8/library/src/main/java/org/apache/apex/malhar/lib/state/spillable/SpillableArrayListImpl.java
----------------------------------------------------------------------
diff --git a/library/src/main/java/org/apache/apex/malhar/lib/state/spillable/SpillableArrayListImpl.java b/library/src/main/java/org/apache/apex/malhar/lib/state/spillable/SpillableArrayListImpl.java
index 5d46906..da5b140 100644
--- a/library/src/main/java/org/apache/apex/malhar/lib/state/spillable/SpillableArrayListImpl.java
+++ b/library/src/main/java/org/apache/apex/malhar/lib/state/spillable/SpillableArrayListImpl.java
@@ -41,6 +41,8 @@ import com.datatorrent.netlet.util.Slice;
 /**
  * A Spillable implementation of {@link List} backed by a {@link SpillableStateStore}.
  * @param <T> The type of object stored in the {@link SpillableArrayListImpl}.
+ *
+ * @since 3.5.0
  */
 @DefaultSerializer(FieldSerializer.class)
 @InterfaceStability.Evolving

http://git-wip-us.apache.org/repos/asf/apex-malhar/blob/681a84a8/library/src/main/java/org/apache/apex/malhar/lib/state/spillable/SpillableByteArrayListMultimapImpl.java
----------------------------------------------------------------------
diff --git a/library/src/main/java/org/apache/apex/malhar/lib/state/spillable/SpillableByteArrayListMultimapImpl.java b/library/src/main/java/org/apache/apex/malhar/lib/state/spillable/SpillableByteArrayListMultimapImpl.java
index ba0bb77..5c91350 100644
--- a/library/src/main/java/org/apache/apex/malhar/lib/state/spillable/SpillableByteArrayListMultimapImpl.java
+++ b/library/src/main/java/org/apache/apex/malhar/lib/state/spillable/SpillableByteArrayListMultimapImpl.java
@@ -43,6 +43,8 @@ import com.datatorrent.netlet.util.Slice;
 
 /**
  * This is an implementation of Guava's ListMultimap which spills data to a {@link SpillableStateStore}.
+ *
+ * @since 3.5.0
  */
 @DefaultSerializer(FieldSerializer.class)
 @InterfaceStability.Evolving

http://git-wip-us.apache.org/repos/asf/apex-malhar/blob/681a84a8/library/src/main/java/org/apache/apex/malhar/lib/state/spillable/SpillableByteMapImpl.java
----------------------------------------------------------------------
diff --git a/library/src/main/java/org/apache/apex/malhar/lib/state/spillable/SpillableByteMapImpl.java b/library/src/main/java/org/apache/apex/malhar/lib/state/spillable/SpillableByteMapImpl.java
index da313ee..f36f2dc 100644
--- a/library/src/main/java/org/apache/apex/malhar/lib/state/spillable/SpillableByteMapImpl.java
+++ b/library/src/main/java/org/apache/apex/malhar/lib/state/spillable/SpillableByteMapImpl.java
@@ -43,6 +43,8 @@ import com.datatorrent.netlet.util.Slice;
  * A Spillable implementation of {@link Map}
  * @param <K> The types of keys.
  * @param <V> The types of values.
+ *
+ * @since 3.5.0
  */
 @DefaultSerializer(FieldSerializer.class)
 @InterfaceStability.Evolving

http://git-wip-us.apache.org/repos/asf/apex-malhar/blob/681a84a8/library/src/main/java/org/apache/apex/malhar/lib/state/spillable/SpillableComplexComponentImpl.java
----------------------------------------------------------------------
diff --git a/library/src/main/java/org/apache/apex/malhar/lib/state/spillable/SpillableComplexComponentImpl.java b/library/src/main/java/org/apache/apex/malhar/lib/state/spillable/SpillableComplexComponentImpl.java
index b31adfd..aeb02c5 100644
--- a/library/src/main/java/org/apache/apex/malhar/lib/state/spillable/SpillableComplexComponentImpl.java
+++ b/library/src/main/java/org/apache/apex/malhar/lib/state/spillable/SpillableComplexComponentImpl.java
@@ -36,6 +36,8 @@ import com.datatorrent.netlet.util.Slice;
  * operator and forwarding the appropriate operator callbacks are called on the {@link SpillableComplexComponentImpl}.
  * Spillable datastructures are created by called the appropriate factory methods on the
  * {@link SpillableComplexComponentImpl} in the setup method of an operator.
+ *
+ * @since 3.5.0
  */
 @InterfaceStability.Evolving
 public class SpillableComplexComponentImpl implements SpillableComplexComponent

http://git-wip-us.apache.org/repos/asf/apex-malhar/blob/681a84a8/library/src/main/java/org/apache/apex/malhar/lib/state/spillable/SpillableIdentifierGenerator.java
----------------------------------------------------------------------
diff --git a/library/src/main/java/org/apache/apex/malhar/lib/state/spillable/SpillableIdentifierGenerator.java b/library/src/main/java/org/apache/apex/malhar/lib/state/spillable/SpillableIdentifierGenerator.java
index 17a52f0..0849f86 100644
--- a/library/src/main/java/org/apache/apex/malhar/lib/state/spillable/SpillableIdentifierGenerator.java
+++ b/library/src/main/java/org/apache/apex/malhar/lib/state/spillable/SpillableIdentifierGenerator.java
@@ -23,6 +23,8 @@ import org.apache.hadoop.classification.InterfaceStability;
 /**
  * Classes implementing this interface can be used as generators for identifiers for Spillable data structures. This is
  * mainly used in implementations of {@link SpillableComplexComponent}.
+ *
+ * @since 3.5.0
  */
 @InterfaceStability.Evolving
 public interface SpillableIdentifierGenerator

http://git-wip-us.apache.org/repos/asf/apex-malhar/blob/681a84a8/library/src/main/java/org/apache/apex/malhar/lib/state/spillable/SpillableStateStore.java
----------------------------------------------------------------------
diff --git a/library/src/main/java/org/apache/apex/malhar/lib/state/spillable/SpillableStateStore.java b/library/src/main/java/org/apache/apex/malhar/lib/state/spillable/SpillableStateStore.java
index 1db0eeb..b6ee3c0 100644
--- a/library/src/main/java/org/apache/apex/malhar/lib/state/spillable/SpillableStateStore.java
+++ b/library/src/main/java/org/apache/apex/malhar/lib/state/spillable/SpillableStateStore.java
@@ -27,6 +27,8 @@ import com.datatorrent.api.Operator;
 
 /**
  * Implementations of this interface are used by Spillable datastructures to spill data to disk.
+ *
+ * @since 3.5.0
  */
 @InterfaceStability.Evolving
 public interface SpillableStateStore extends BucketedState, Component<Context.OperatorContext>,

http://git-wip-us.apache.org/repos/asf/apex-malhar/blob/681a84a8/library/src/main/java/org/apache/apex/malhar/lib/state/spillable/TimeBasedPriorityQueue.java
----------------------------------------------------------------------
diff --git a/library/src/main/java/org/apache/apex/malhar/lib/state/spillable/TimeBasedPriorityQueue.java b/library/src/main/java/org/apache/apex/malhar/lib/state/spillable/TimeBasedPriorityQueue.java
index f28e0b2..b12f119 100644
--- a/library/src/main/java/org/apache/apex/malhar/lib/state/spillable/TimeBasedPriorityQueue.java
+++ b/library/src/main/java/org/apache/apex/malhar/lib/state/spillable/TimeBasedPriorityQueue.java
@@ -35,6 +35,8 @@ import com.google.common.collect.Sets;
  * A simple priority queue where the priority of an object is determined by the time at which it is inserted into the
  * queue. The object in the queue with the smallest time stamp is the first to be dequeued.
  * @param <T> The type of the objects inserted into the queue.
+ *
+ * @since 3.5.0
  */
 @InterfaceStability.Evolving
 public class TimeBasedPriorityQueue<T>

http://git-wip-us.apache.org/repos/asf/apex-malhar/blob/681a84a8/library/src/main/java/org/apache/apex/malhar/lib/state/spillable/WindowBoundedMapCache.java
----------------------------------------------------------------------
diff --git a/library/src/main/java/org/apache/apex/malhar/lib/state/spillable/WindowBoundedMapCache.java b/library/src/main/java/org/apache/apex/malhar/lib/state/spillable/WindowBoundedMapCache.java
index fcf219d..6db1f1a 100644
--- a/library/src/main/java/org/apache/apex/malhar/lib/state/spillable/WindowBoundedMapCache.java
+++ b/library/src/main/java/org/apache/apex/malhar/lib/state/spillable/WindowBoundedMapCache.java
@@ -33,6 +33,8 @@ import com.google.common.collect.Sets;
  * evicted from the cache.
  * @param <K> The type of the keys.
  * @param <V> The type of the values.
+ *
+ * @since 3.5.0
  */
 @InterfaceStability.Evolving
 public class WindowBoundedMapCache<K, V>

http://git-wip-us.apache.org/repos/asf/apex-malhar/blob/681a84a8/library/src/main/java/org/apache/apex/malhar/lib/state/spillable/WindowListener.java
----------------------------------------------------------------------
diff --git a/library/src/main/java/org/apache/apex/malhar/lib/state/spillable/WindowListener.java b/library/src/main/java/org/apache/apex/malhar/lib/state/spillable/WindowListener.java
index fa8cd9f..5cd2b64 100644
--- a/library/src/main/java/org/apache/apex/malhar/lib/state/spillable/WindowListener.java
+++ b/library/src/main/java/org/apache/apex/malhar/lib/state/spillable/WindowListener.java
@@ -25,6 +25,8 @@ import com.datatorrent.api.Operator;
 /**
  * This interface represents components which need to listen to the operator {@link Operator#beginWindow(long)} and
  * {@link Operator#endWindow()} callbacks.
+ *
+ * @since 3.5.0
  */
 @InterfaceStability.Evolving
 public interface WindowListener

http://git-wip-us.apache.org/repos/asf/apex-malhar/blob/681a84a8/library/src/main/java/org/apache/apex/malhar/lib/state/spillable/inmem/InMemSpillableStateStore.java
----------------------------------------------------------------------
diff --git a/library/src/main/java/org/apache/apex/malhar/lib/state/spillable/inmem/InMemSpillableStateStore.java b/library/src/main/java/org/apache/apex/malhar/lib/state/spillable/inmem/InMemSpillableStateStore.java
index 0e65344..61ab8a8 100644
--- a/library/src/main/java/org/apache/apex/malhar/lib/state/spillable/inmem/InMemSpillableStateStore.java
+++ b/library/src/main/java/org/apache/apex/malhar/lib/state/spillable/inmem/InMemSpillableStateStore.java
@@ -33,6 +33,8 @@ import com.datatorrent.netlet.util.Slice;
 
 /**
  * A simple in memory implementation of a {@link SpillableStateStore} backed by a {@link Map}.
+ *
+ * @since 3.5.0
  */
 @InterfaceStability.Evolving
 public class InMemSpillableStateStore implements SpillableStateStore

http://git-wip-us.apache.org/repos/asf/apex-malhar/blob/681a84a8/library/src/main/java/org/apache/apex/malhar/lib/state/spillable/managed/ManagedStateSpillableStateStore.java
----------------------------------------------------------------------
diff --git a/library/src/main/java/org/apache/apex/malhar/lib/state/spillable/managed/ManagedStateSpillableStateStore.java b/library/src/main/java/org/apache/apex/malhar/lib/state/spillable/managed/ManagedStateSpillableStateStore.java
index 6d68acc..fe2ab38 100644
--- a/library/src/main/java/org/apache/apex/malhar/lib/state/spillable/managed/ManagedStateSpillableStateStore.java
+++ b/library/src/main/java/org/apache/apex/malhar/lib/state/spillable/managed/ManagedStateSpillableStateStore.java
@@ -25,6 +25,9 @@ import com.esotericsoftware.kryo.DefaultSerializer;
 import com.esotericsoftware.kryo.serializers.FieldSerializer;
 
 @DefaultSerializer(FieldSerializer.class)
+/**
+ * @since 3.5.0
+ */
 public class ManagedStateSpillableStateStore extends ManagedStateImpl implements SpillableStateStore
 {
   public ManagedStateSpillableStateStore()

http://git-wip-us.apache.org/repos/asf/apex-malhar/blob/681a84a8/library/src/main/java/org/apache/apex/malhar/lib/utils/serde/PassThruByteArraySliceSerde.java
----------------------------------------------------------------------
diff --git a/library/src/main/java/org/apache/apex/malhar/lib/utils/serde/PassThruByteArraySliceSerde.java b/library/src/main/java/org/apache/apex/malhar/lib/utils/serde/PassThruByteArraySliceSerde.java
index 436e7f8..b22bf6f 100644
--- a/library/src/main/java/org/apache/apex/malhar/lib/utils/serde/PassThruByteArraySliceSerde.java
+++ b/library/src/main/java/org/apache/apex/malhar/lib/utils/serde/PassThruByteArraySliceSerde.java
@@ -28,6 +28,8 @@ import com.datatorrent.netlet.util.Slice;
  * out of the {@link Slice} object.
  *
  * <b>Note:</b> The deserialized method doesn't use the offset argument in this implementation.
+ *
+ * @since 3.5.0
  */
 public class PassThruByteArraySliceSerde implements Serde<byte[], Slice>
 {

http://git-wip-us.apache.org/repos/asf/apex-malhar/blob/681a84a8/library/src/main/java/org/apache/apex/malhar/lib/utils/serde/PassThruSliceSerde.java
----------------------------------------------------------------------
diff --git a/library/src/main/java/org/apache/apex/malhar/lib/utils/serde/PassThruSliceSerde.java b/library/src/main/java/org/apache/apex/malhar/lib/utils/serde/PassThruSliceSerde.java
index f9d93b3..2646c0e 100644
--- a/library/src/main/java/org/apache/apex/malhar/lib/utils/serde/PassThruSliceSerde.java
+++ b/library/src/main/java/org/apache/apex/malhar/lib/utils/serde/PassThruSliceSerde.java
@@ -26,6 +26,8 @@ import com.datatorrent.netlet.util.Slice;
 /**
  * This is a {@link Serde} implementation which simply allows an input slice to pass through. No serialization or
  * deserialization transformation is performed on the input {@link Slice}s.
+ *
+ * @since 3.5.0
  */
 @InterfaceStability.Evolving
 public class PassThruSliceSerde implements Serde<Slice, Slice>

http://git-wip-us.apache.org/repos/asf/apex-malhar/blob/681a84a8/library/src/main/java/org/apache/apex/malhar/lib/utils/serde/SerdeIntSlice.java
----------------------------------------------------------------------
diff --git a/library/src/main/java/org/apache/apex/malhar/lib/utils/serde/SerdeIntSlice.java b/library/src/main/java/org/apache/apex/malhar/lib/utils/serde/SerdeIntSlice.java
index c18af33..3275a93 100644
--- a/library/src/main/java/org/apache/apex/malhar/lib/utils/serde/SerdeIntSlice.java
+++ b/library/src/main/java/org/apache/apex/malhar/lib/utils/serde/SerdeIntSlice.java
@@ -26,6 +26,8 @@ import com.datatorrent.netlet.util.Slice;
 
 /**
  * This is an implementation of {@link Serde} which deserializes and serializes integers.
+ *
+ * @since 3.5.0
  */
 @InterfaceStability.Evolving
 public class SerdeIntSlice implements Serde<Integer, Slice>

http://git-wip-us.apache.org/repos/asf/apex-malhar/blob/681a84a8/library/src/main/java/org/apache/apex/malhar/lib/utils/serde/SerdeListSlice.java
----------------------------------------------------------------------
diff --git a/library/src/main/java/org/apache/apex/malhar/lib/utils/serde/SerdeListSlice.java b/library/src/main/java/org/apache/apex/malhar/lib/utils/serde/SerdeListSlice.java
index 2a7947d..68d11c8 100644
--- a/library/src/main/java/org/apache/apex/malhar/lib/utils/serde/SerdeListSlice.java
+++ b/library/src/main/java/org/apache/apex/malhar/lib/utils/serde/SerdeListSlice.java
@@ -33,6 +33,8 @@ import com.datatorrent.netlet.util.Slice;
 
 /**
  * This is an implementation of {@link Serde} which serializes and deserializes lists.
+ *
+ * @since 3.5.0
  */
 @InterfaceStability.Evolving
 public class SerdeListSlice<T> implements Serde<List<T>, Slice>

http://git-wip-us.apache.org/repos/asf/apex-malhar/blob/681a84a8/library/src/main/java/org/apache/apex/malhar/lib/utils/serde/SerdeStringSlice.java
----------------------------------------------------------------------
diff --git a/library/src/main/java/org/apache/apex/malhar/lib/utils/serde/SerdeStringSlice.java b/library/src/main/java/org/apache/apex/malhar/lib/utils/serde/SerdeStringSlice.java
index 80ee597..aaf0d61 100644
--- a/library/src/main/java/org/apache/apex/malhar/lib/utils/serde/SerdeStringSlice.java
+++ b/library/src/main/java/org/apache/apex/malhar/lib/utils/serde/SerdeStringSlice.java
@@ -26,6 +26,8 @@ import com.datatorrent.netlet.util.Slice;
 
 /**
  * An implementation of {@link Serde} which serializes and deserializes {@link String}s.
+ *
+ * @since 3.5.0
  */
 @InterfaceStability.Evolving
 public class SerdeStringSlice implements Serde<String, Slice>

http://git-wip-us.apache.org/repos/asf/apex-malhar/blob/681a84a8/library/src/main/java/org/apache/apex/malhar/lib/utils/serde/SliceUtils.java
----------------------------------------------------------------------
diff --git a/library/src/main/java/org/apache/apex/malhar/lib/utils/serde/SliceUtils.java b/library/src/main/java/org/apache/apex/malhar/lib/utils/serde/SliceUtils.java
index b6a61f4..2671d5e 100644
--- a/library/src/main/java/org/apache/apex/malhar/lib/utils/serde/SliceUtils.java
+++ b/library/src/main/java/org/apache/apex/malhar/lib/utils/serde/SliceUtils.java
@@ -24,6 +24,8 @@ import com.datatorrent.netlet.util.Slice;
 
 /**
  * A utility class which contains static methods for manipulating byte arrays and {@link Slice}s
+ *
+ * @since 3.5.0
  */
 @InterfaceStability.Evolving
 public class SliceUtils

http://git-wip-us.apache.org/repos/asf/apex-malhar/blob/681a84a8/library/src/main/java/org/apache/apex/malhar/lib/wal/FSWindowReplayWAL.java
----------------------------------------------------------------------
diff --git a/library/src/main/java/org/apache/apex/malhar/lib/wal/FSWindowReplayWAL.java b/library/src/main/java/org/apache/apex/malhar/lib/wal/FSWindowReplayWAL.java
index 326c7a3..74ca929 100644
--- a/library/src/main/java/org/apache/apex/malhar/lib/wal/FSWindowReplayWAL.java
+++ b/library/src/main/java/org/apache/apex/malhar/lib/wal/FSWindowReplayWAL.java
@@ -31,6 +31,8 @@ import com.datatorrent.netlet.util.Slice;
 
 /**
  * A {@link FileSystemWAL} that WindowDataManager uses to save state of every window.
+ *
+ * @since 3.5.0
  */
 public class FSWindowReplayWAL extends FileSystemWAL
 {

http://git-wip-us.apache.org/repos/asf/apex-malhar/blob/681a84a8/library/src/main/java/org/apache/apex/malhar/lib/window/Accumulation.java
----------------------------------------------------------------------
diff --git a/library/src/main/java/org/apache/apex/malhar/lib/window/Accumulation.java b/library/src/main/java/org/apache/apex/malhar/lib/window/Accumulation.java
index 17971bb..89215a1 100644
--- a/library/src/main/java/org/apache/apex/malhar/lib/window/Accumulation.java
+++ b/library/src/main/java/org/apache/apex/malhar/lib/window/Accumulation.java
@@ -28,6 +28,8 @@ import org.apache.hadoop.classification.InterfaceStability;
  * different. For example, if we are doing the AVERAGE of doubles, InputT will be double, and we need the SUM and the
  * COUNT stored as type AccumT, and AccumT will be a pair of double and long, in which double is the sum of the inputs,
  * and long is the number of inputs. OutputT will be double, because it represents the average of the inputs.
+ *
+ * @since 3.5.0
  */
 @InterfaceStability.Evolving
 public interface Accumulation<InputT, AccumT, OutputT>

http://git-wip-us.apache.org/repos/asf/apex-malhar/blob/681a84a8/library/src/main/java/org/apache/apex/malhar/lib/window/ControlTuple.java
----------------------------------------------------------------------
diff --git a/library/src/main/java/org/apache/apex/malhar/lib/window/ControlTuple.java b/library/src/main/java/org/apache/apex/malhar/lib/window/ControlTuple.java
index d4fca11..3288398 100644
--- a/library/src/main/java/org/apache/apex/malhar/lib/window/ControlTuple.java
+++ b/library/src/main/java/org/apache/apex/malhar/lib/window/ControlTuple.java
@@ -23,6 +23,8 @@ import org.apache.hadoop.classification.InterfaceStability;
 /**
  * Control tuple interface.
  * TODO: This should be removed or moved to Apex Core when Apex Core has native support for custom control tuples.
+ *
+ * @since 3.5.0
  */
 @InterfaceStability.Evolving
 public interface ControlTuple

http://git-wip-us.apache.org/repos/asf/apex-malhar/blob/681a84a8/library/src/main/java/org/apache/apex/malhar/lib/window/JoinAccumulation.java
----------------------------------------------------------------------
diff --git a/library/src/main/java/org/apache/apex/malhar/lib/window/JoinAccumulation.java b/library/src/main/java/org/apache/apex/malhar/lib/window/JoinAccumulation.java
index b485dd2..69240e0 100644
--- a/library/src/main/java/org/apache/apex/malhar/lib/window/JoinAccumulation.java
+++ b/library/src/main/java/org/apache/apex/malhar/lib/window/JoinAccumulation.java
@@ -22,6 +22,8 @@ import org.apache.hadoop.classification.InterfaceStability;
 
 /**
  * This is the interface for accumulation when joining multiple streams.
+ *
+ * @since 3.5.0
  */
 @InterfaceStability.Evolving
 public interface JoinAccumulation<InputT1, InputT2, InputT3, InputT4, InputT5, AccumT, OutputT> extends Accumulation<InputT1, AccumT, OutputT>

http://git-wip-us.apache.org/repos/asf/apex-malhar/blob/681a84a8/library/src/main/java/org/apache/apex/malhar/lib/window/SessionWindowedStorage.java
----------------------------------------------------------------------
diff --git a/library/src/main/java/org/apache/apex/malhar/lib/window/SessionWindowedStorage.java b/library/src/main/java/org/apache/apex/malhar/lib/window/SessionWindowedStorage.java
index c31885a..404e591 100644
--- a/library/src/main/java/org/apache/apex/malhar/lib/window/SessionWindowedStorage.java
+++ b/library/src/main/java/org/apache/apex/malhar/lib/window/SessionWindowedStorage.java
@@ -28,6 +28,8 @@ import org.apache.hadoop.classification.InterfaceStability;
  *
  * @param <K> The key type
  * @param <V> The value type
+ *
+ * @since 3.5.0
  */
 @InterfaceStability.Evolving
 public interface SessionWindowedStorage<K, V> extends WindowedKeyedStorage<K, V>

http://git-wip-us.apache.org/repos/asf/apex-malhar/blob/681a84a8/library/src/main/java/org/apache/apex/malhar/lib/window/TriggerOption.java
----------------------------------------------------------------------
diff --git a/library/src/main/java/org/apache/apex/malhar/lib/window/TriggerOption.java b/library/src/main/java/org/apache/apex/malhar/lib/window/TriggerOption.java
index 6727f7b..266577f 100644
--- a/library/src/main/java/org/apache/apex/malhar/lib/window/TriggerOption.java
+++ b/library/src/main/java/org/apache/apex/malhar/lib/window/TriggerOption.java
@@ -35,6 +35,8 @@ import com.esotericsoftware.kryo.serializers.JavaSerializer;
  * If a LATE trigger is specified and the accumulation mode is ACCUMULATING, it is important for the WindowOption to
  * specify the allowed lateness because otherwise, all states must be kept in storage.
  *
+ *
+ * @since 3.5.0
  */
 @InterfaceStability.Evolving
 public class TriggerOption

http://git-wip-us.apache.org/repos/asf/apex-malhar/blob/681a84a8/library/src/main/java/org/apache/apex/malhar/lib/window/Tuple.java
----------------------------------------------------------------------
diff --git a/library/src/main/java/org/apache/apex/malhar/lib/window/Tuple.java b/library/src/main/java/org/apache/apex/malhar/lib/window/Tuple.java
index af0b1ac..eaf4d29 100644
--- a/library/src/main/java/org/apache/apex/malhar/lib/window/Tuple.java
+++ b/library/src/main/java/org/apache/apex/malhar/lib/window/Tuple.java
@@ -25,6 +25,8 @@ import org.apache.hadoop.classification.InterfaceStability;
 
 /**
  * All tuples that use the WindowedOperator must be an implementation of this interface
+ *
+ * @since 3.5.0
  */
 @InterfaceStability.Evolving
 public interface Tuple<T>

http://git-wip-us.apache.org/repos/asf/apex-malhar/blob/681a84a8/library/src/main/java/org/apache/apex/malhar/lib/window/Window.java
----------------------------------------------------------------------
diff --git a/library/src/main/java/org/apache/apex/malhar/lib/window/Window.java b/library/src/main/java/org/apache/apex/malhar/lib/window/Window.java
index 1ba9acd..32a028a 100644
--- a/library/src/main/java/org/apache/apex/malhar/lib/window/Window.java
+++ b/library/src/main/java/org/apache/apex/malhar/lib/window/Window.java
@@ -24,6 +24,8 @@ import org.apache.hadoop.classification.InterfaceStability;
 
 /**
  * This interface describes the individual window.
+ *
+ * @since 3.5.0
  */
 @InterfaceStability.Evolving
 public interface Window

http://git-wip-us.apache.org/repos/asf/apex-malhar/blob/681a84a8/library/src/main/java/org/apache/apex/malhar/lib/window/WindowOption.java
----------------------------------------------------------------------
diff --git a/library/src/main/java/org/apache/apex/malhar/lib/window/WindowOption.java b/library/src/main/java/org/apache/apex/malhar/lib/window/WindowOption.java
index 525a0d6..de244fb 100644
--- a/library/src/main/java/org/apache/apex/malhar/lib/window/WindowOption.java
+++ b/library/src/main/java/org/apache/apex/malhar/lib/window/WindowOption.java
@@ -29,6 +29,8 @@ import com.esotericsoftware.kryo.serializers.JavaSerializer;
  * This class describes how windowing is done
  *
  *  This is used by both the high level API and by the WindowedOperator
+ *
+ * @since 3.5.0
  */
 @InterfaceStability.Evolving
 public interface WindowOption

http://git-wip-us.apache.org/repos/asf/apex-malhar/blob/681a84a8/library/src/main/java/org/apache/apex/malhar/lib/window/WindowState.java
----------------------------------------------------------------------
diff --git a/library/src/main/java/org/apache/apex/malhar/lib/window/WindowState.java b/library/src/main/java/org/apache/apex/malhar/lib/window/WindowState.java
index 315ad8d..e1b0728 100644
--- a/library/src/main/java/org/apache/apex/malhar/lib/window/WindowState.java
+++ b/library/src/main/java/org/apache/apex/malhar/lib/window/WindowState.java
@@ -23,6 +23,8 @@ import org.apache.hadoop.classification.InterfaceStability;
 /**
  * The state that needs to be stored for each window. The state helps determine whether to throw away a window
  * (with allowed lateness in WindowOption), and whether to fire a trigger (with TriggerOption)
+ *
+ * @since 3.5.0
  */
 @InterfaceStability.Evolving
 public class WindowState

http://git-wip-us.apache.org/repos/asf/apex-malhar/blob/681a84a8/library/src/main/java/org/apache/apex/malhar/lib/window/WindowedKeyedStorage.java
----------------------------------------------------------------------
diff --git a/library/src/main/java/org/apache/apex/malhar/lib/window/WindowedKeyedStorage.java b/library/src/main/java/org/apache/apex/malhar/lib/window/WindowedKeyedStorage.java
index 30ac3e7..d59ee40 100644
--- a/library/src/main/java/org/apache/apex/malhar/lib/window/WindowedKeyedStorage.java
+++ b/library/src/main/java/org/apache/apex/malhar/lib/window/WindowedKeyedStorage.java
@@ -31,6 +31,8 @@ import org.apache.hadoop.classification.InterfaceStability;
  *
  * Note that this interface expects that the implementation takes care of checkpoint recovery.
  *
+ *
+ * @since 3.5.0
  */
 @InterfaceStability.Unstable
 public interface WindowedKeyedStorage<K, V> extends WindowedStorage<Map<K, V>>

http://git-wip-us.apache.org/repos/asf/apex-malhar/blob/681a84a8/library/src/main/java/org/apache/apex/malhar/lib/window/WindowedOperator.java
----------------------------------------------------------------------
diff --git a/library/src/main/java/org/apache/apex/malhar/lib/window/WindowedOperator.java b/library/src/main/java/org/apache/apex/malhar/lib/window/WindowedOperator.java
index e9ee404..5da531c 100644
--- a/library/src/main/java/org/apache/apex/malhar/lib/window/WindowedOperator.java
+++ b/library/src/main/java/org/apache/apex/malhar/lib/window/WindowedOperator.java
@@ -32,6 +32,8 @@ import com.google.common.base.Function;
  * TODO: We may wanna just use the abstract class {@link org.apache.apex.malhar.lib.window.impl.AbstractWindowedOperator}
  *
  * @param <InputT> The type of the input tuple
+ *
+ * @since 3.5.0
  */
 @InterfaceStability.Evolving
 public interface WindowedOperator<InputT>

http://git-wip-us.apache.org/repos/asf/apex-malhar/blob/681a84a8/library/src/main/java/org/apache/apex/malhar/lib/window/WindowedStorage.java
----------------------------------------------------------------------
diff --git a/library/src/main/java/org/apache/apex/malhar/lib/window/WindowedStorage.java b/library/src/main/java/org/apache/apex/malhar/lib/window/WindowedStorage.java
index 8cd045c..c2b3f08 100644
--- a/library/src/main/java/org/apache/apex/malhar/lib/window/WindowedStorage.java
+++ b/library/src/main/java/org/apache/apex/malhar/lib/window/WindowedStorage.java
@@ -32,6 +32,8 @@ import org.apache.hadoop.classification.InterfaceStability;
  * @param <T> The type of the data that is stored per window
  *
  * TODO: Look at the possibility of integrating spillable data structure: https://issues.apache.org/jira/browse/APEXMALHAR-2026
+ *
+ * @since 3.5.0
  */
 @InterfaceStability.Unstable
 public interface WindowedStorage<T> extends Iterable<Map.Entry<Window, T>>

http://git-wip-us.apache.org/repos/asf/apex-malhar/blob/681a84a8/library/src/main/java/org/apache/apex/malhar/lib/window/accumulation/Average.java
----------------------------------------------------------------------
diff --git a/library/src/main/java/org/apache/apex/malhar/lib/window/accumulation/Average.java b/library/src/main/java/org/apache/apex/malhar/lib/window/accumulation/Average.java
index c669439..f0a66a4 100644
--- a/library/src/main/java/org/apache/apex/malhar/lib/window/accumulation/Average.java
+++ b/library/src/main/java/org/apache/apex/malhar/lib/window/accumulation/Average.java
@@ -23,6 +23,8 @@ import org.apache.commons.lang3.tuple.MutablePair;
 
 /**
  * Average Accumulation
+ *
+ * @since 3.5.0
  */
 public class Average implements Accumulation<Double, MutablePair<Double, Long>, Double>
 {

http://git-wip-us.apache.org/repos/asf/apex-malhar/blob/681a84a8/library/src/main/java/org/apache/apex/malhar/lib/window/accumulation/Count.java
----------------------------------------------------------------------
diff --git a/library/src/main/java/org/apache/apex/malhar/lib/window/accumulation/Count.java b/library/src/main/java/org/apache/apex/malhar/lib/window/accumulation/Count.java
index 180152b..62c5678 100644
--- a/library/src/main/java/org/apache/apex/malhar/lib/window/accumulation/Count.java
+++ b/library/src/main/java/org/apache/apex/malhar/lib/window/accumulation/Count.java
@@ -23,6 +23,8 @@ import org.apache.commons.lang3.mutable.MutableLong;
 
 /**
  * Count Accumulation
+ *
+ * @since 3.5.0
  */
 public class Count implements Accumulation<Long, MutableLong, Long>
 {

http://git-wip-us.apache.org/repos/asf/apex-malhar/blob/681a84a8/library/src/main/java/org/apache/apex/malhar/lib/window/accumulation/FoldFn.java
----------------------------------------------------------------------
diff --git a/library/src/main/java/org/apache/apex/malhar/lib/window/accumulation/FoldFn.java b/library/src/main/java/org/apache/apex/malhar/lib/window/accumulation/FoldFn.java
index dc344b3..33b3927 100644
--- a/library/src/main/java/org/apache/apex/malhar/lib/window/accumulation/FoldFn.java
+++ b/library/src/main/java/org/apache/apex/malhar/lib/window/accumulation/FoldFn.java
@@ -22,6 +22,8 @@ import org.apache.apex.malhar.lib.window.Accumulation;
 
 /**
  * Fold Accumulation Adaptor class
+ *
+ * @since 3.5.0
  */
 public abstract class FoldFn<INPUT, OUTPUT> implements Accumulation<INPUT, OUTPUT, OUTPUT>
 {

http://git-wip-us.apache.org/repos/asf/apex-malhar/blob/681a84a8/library/src/main/java/org/apache/apex/malhar/lib/window/accumulation/Group.java
----------------------------------------------------------------------
diff --git a/library/src/main/java/org/apache/apex/malhar/lib/window/accumulation/Group.java b/library/src/main/java/org/apache/apex/malhar/lib/window/accumulation/Group.java
index c34a8ac..f2affd1 100644
--- a/library/src/main/java/org/apache/apex/malhar/lib/window/accumulation/Group.java
+++ b/library/src/main/java/org/apache/apex/malhar/lib/window/accumulation/Group.java
@@ -25,6 +25,8 @@ import org.apache.apex.malhar.lib.window.Accumulation;
 
 /**
  * Group accumulation.
+ *
+ * @since 3.5.0
  */
 public class Group<T> implements Accumulation<T, List<T>, List<T>>
 {

http://git-wip-us.apache.org/repos/asf/apex-malhar/blob/681a84a8/library/src/main/java/org/apache/apex/malhar/lib/window/accumulation/Max.java
----------------------------------------------------------------------
diff --git a/library/src/main/java/org/apache/apex/malhar/lib/window/accumulation/Max.java b/library/src/main/java/org/apache/apex/malhar/lib/window/accumulation/Max.java
index 4164bb2..64ff0c4 100644
--- a/library/src/main/java/org/apache/apex/malhar/lib/window/accumulation/Max.java
+++ b/library/src/main/java/org/apache/apex/malhar/lib/window/accumulation/Max.java
@@ -23,6 +23,8 @@ import org.apache.apex.malhar.lib.window.Accumulation;
 
 /**
  * Max accumulation.
+ *
+ * @since 3.5.0
  */
 public class Max<T> implements Accumulation<T, T, T>
 {