]> source.dussan.org Git - aspectj.git/commitdiff
declaremixin
authoraclement <aclement>
Wed, 4 Mar 2009 00:53:46 +0000 (00:53 +0000)
committeraclement <aclement>
Wed, 4 Mar 2009 00:53:46 +0000 (00:53 +0000)
aspectj5rt/java5-src/org/aspectj/lang/annotation/DeclareMixin.java [new file with mode: 0644]

diff --git a/aspectj5rt/java5-src/org/aspectj/lang/annotation/DeclareMixin.java b/aspectj5rt/java5-src/org/aspectj/lang/annotation/DeclareMixin.java
new file mode 100644 (file)
index 0000000..b099177
--- /dev/null
@@ -0,0 +1,34 @@
+package org.aspectj.lang.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * DeclareMixin annotation - see design and usage in
+ * https://bugs.eclipse.org/bugs/show_bug.cgi?id=266552
+ *
+ * <p>Attached to a factory method, this annotation indicates that any types
+ * matching the pattern specified in the annotation value will have new
+ * methods mixed in.  The methods will be selected based on a combination
+ * of the return type of the factory method, possibly sub-setted by any
+ * list of interfaces specified in the interfaces annotation value.
+ */
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.METHOD)
+public @interface DeclareMixin {
+
+       /**
+        * The target types expression
+        */
+       String value();
+
+       /**
+        * Array of interfaces that are to be mixed in. This is optional and if not
+        * specified the return type of the annotated method will be used to
+        * determine the interface/class to mix in.
+        */
+       Class[] interfaces() default { Object.class };
+
+}