Repository: incubator-edgent Updated Branches: refs/heads/develop d8d6c40fc -> 3f71d45df
- Added a "KafkaVersion" annotation type so Vino can start adding version constraints to his code. Project: http://git-wip-us.apache.org/repos/asf/incubator-edgent/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-edgent/commit/3f71d45d Tree: http://git-wip-us.apache.org/repos/asf/incubator-edgent/tree/3f71d45d Diff: http://git-wip-us.apache.org/repos/asf/incubator-edgent/diff/3f71d45d Branch: refs/heads/develop Commit: 3f71d45df3c898ad41d3e05ae940f09c2ace7f2b Parents: d8d6c40 Author: Christofer Dutz <christofer.d...@c-ware.de> Authored: Tue Mar 20 10:28:01 2018 +0100 Committer: Christofer Dutz <christofer.d...@c-ware.de> Committed: Tue Mar 20 10:28:01 2018 +0100 ---------------------------------------------------------------------- .../kafka/annotations/KafkaVersion.java | 28 ++++++++++++++++++++ 1 file changed, 28 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-edgent/blob/3f71d45d/connectors/kafka/src/main/java/org/apache/edgent/connectors/kafka/annotations/KafkaVersion.java ---------------------------------------------------------------------- diff --git a/connectors/kafka/src/main/java/org/apache/edgent/connectors/kafka/annotations/KafkaVersion.java b/connectors/kafka/src/main/java/org/apache/edgent/connectors/kafka/annotations/KafkaVersion.java new file mode 100644 index 0000000..f33bc09 --- /dev/null +++ b/connectors/kafka/src/main/java/org/apache/edgent/connectors/kafka/annotations/KafkaVersion.java @@ -0,0 +1,28 @@ +package org.apache.edgent.connectors.kafka.annotations; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * In order to prevent the need to implement multiple versions of kafka-adapters. + * The {@link KafkaVersion} annotation allows specifying a minimum and maximum version + * of Kafka that supports a given functionality. This information currently can only + * be provided on a class/type (includes all methods) or individual method level. + * + * This information is then used by an aspect that wraps access to version constrained + * methods and throws meaningful exceptions when being used without satisfying the + * version criteria. + */ +// We need the information to be available at runtime. +@Retention(RetentionPolicy.RUNTIME) +// We will only annotate methods or classes with this version check. +@Target({ElementType.METHOD, ElementType.TYPE}) +public @interface KafkaVersion { + + String fromVersion(); + + String toVersion(); + +}