summaryrefslogtreecommitdiffstats
path: root/aspectj5rt
diff options
context:
space:
mode:
authoraclement <aclement>2009-03-04 00:53:46 +0000
committeraclement <aclement>2009-03-04 00:53:46 +0000
commit957181a21c6606399b00b5f2b86b15e8e7cbaaae (patch)
treed9d642ed7409f61e8c57de8e63376af8ebf89b63 /aspectj5rt
parent98e2ebf7aec2dfe18c49a452a59d1412b4fbe9a2 (diff)
downloadaspectj-957181a21c6606399b00b5f2b86b15e8e7cbaaae.tar.gz
aspectj-957181a21c6606399b00b5f2b86b15e8e7cbaaae.zip
declaremixin
Diffstat (limited to 'aspectj5rt')
-rw-r--r--aspectj5rt/java5-src/org/aspectj/lang/annotation/DeclareMixin.java34
1 files changed, 34 insertions, 0 deletions
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
index 000000000..b0991773b
--- /dev/null
+++ b/aspectj5rt/java5-src/org/aspectj/lang/annotation/DeclareMixin.java
@@ -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 };
+
+}