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();
+
+}

Reply via email to