You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by st...@apache.org on 2017/05/25 16:34:03 UTC
svn commit: r1796171 - in
/geronimo/specs/trunk/geronimo-jcdi_2.0_spec/src/main/java/javax/enterprise/inject/spi:
Annotated.java AnnotatedConstructor.java AnnotatedField.java
AnnotatedMethod.java AnnotatedParameter.java AnnotatedType.java
Author: struberg
Date: Thu May 25 16:34:03 2017
New Revision: 1796171
URL: http://svn.apache.org/viewvc?rev=1796171&view=rev
Log:
GERONIMO-6553 support for repeating annotations
Modified:
geronimo/specs/trunk/geronimo-jcdi_2.0_spec/src/main/java/javax/enterprise/inject/spi/Annotated.java
geronimo/specs/trunk/geronimo-jcdi_2.0_spec/src/main/java/javax/enterprise/inject/spi/AnnotatedConstructor.java
geronimo/specs/trunk/geronimo-jcdi_2.0_spec/src/main/java/javax/enterprise/inject/spi/AnnotatedField.java
geronimo/specs/trunk/geronimo-jcdi_2.0_spec/src/main/java/javax/enterprise/inject/spi/AnnotatedMethod.java
geronimo/specs/trunk/geronimo-jcdi_2.0_spec/src/main/java/javax/enterprise/inject/spi/AnnotatedParameter.java
geronimo/specs/trunk/geronimo-jcdi_2.0_spec/src/main/java/javax/enterprise/inject/spi/AnnotatedType.java
Modified: geronimo/specs/trunk/geronimo-jcdi_2.0_spec/src/main/java/javax/enterprise/inject/spi/Annotated.java
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-jcdi_2.0_spec/src/main/java/javax/enterprise/inject/spi/Annotated.java?rev=1796171&r1=1796170&r2=1796171&view=diff
==============================================================================
--- geronimo/specs/trunk/geronimo-jcdi_2.0_spec/src/main/java/javax/enterprise/inject/spi/Annotated.java (original)
+++ geronimo/specs/trunk/geronimo-jcdi_2.0_spec/src/main/java/javax/enterprise/inject/spi/Annotated.java Thu May 25 16:34:03 2017
@@ -54,6 +54,15 @@ public interface Annotated
<T extends Annotation> T getAnnotation(Class<T> annotationType);
/**
+ * Gets annotated element's annotation member if exist, null otherwise
+ *
+ * @param <T> generic annotatation class type
+ * @param annotationType class of the annotation
+ * @return annotations of the given type, if exist - empty collection otherwise
+ */
+ <T extends Annotation> Set<T> getAnnotations(Class<T> annotationType);
+
+ /**
* Gets annotated member all annotations.
*
* @return annotated member annotations
Modified: geronimo/specs/trunk/geronimo-jcdi_2.0_spec/src/main/java/javax/enterprise/inject/spi/AnnotatedConstructor.java
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-jcdi_2.0_spec/src/main/java/javax/enterprise/inject/spi/AnnotatedConstructor.java?rev=1796171&r1=1796170&r2=1796171&view=diff
==============================================================================
--- geronimo/specs/trunk/geronimo-jcdi_2.0_spec/src/main/java/javax/enterprise/inject/spi/AnnotatedConstructor.java (original)
+++ geronimo/specs/trunk/geronimo-jcdi_2.0_spec/src/main/java/javax/enterprise/inject/spi/AnnotatedConstructor.java Thu May 25 16:34:03 2017
@@ -18,7 +18,11 @@
*/
package javax.enterprise.inject.spi;
+import java.lang.annotation.Annotation;
import java.lang.reflect.Constructor;
+import java.util.Arrays;
+import java.util.LinkedHashSet;
+import java.util.Set;
/**
* Defines member constructor contract.
@@ -33,4 +37,10 @@ public interface AnnotatedConstructor<X>
* {@inheritDoc}
*/
Constructor<X> getJavaMember();
+
+ @Override
+ default <T extends Annotation> Set<T> getAnnotations(Class<T> annotationType)
+ {
+ return new LinkedHashSet<>(Arrays.asList(getJavaMember().getAnnotationsByType(annotationType)));
+ }
}
Modified: geronimo/specs/trunk/geronimo-jcdi_2.0_spec/src/main/java/javax/enterprise/inject/spi/AnnotatedField.java
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-jcdi_2.0_spec/src/main/java/javax/enterprise/inject/spi/AnnotatedField.java?rev=1796171&r1=1796170&r2=1796171&view=diff
==============================================================================
--- geronimo/specs/trunk/geronimo-jcdi_2.0_spec/src/main/java/javax/enterprise/inject/spi/AnnotatedField.java (original)
+++ geronimo/specs/trunk/geronimo-jcdi_2.0_spec/src/main/java/javax/enterprise/inject/spi/AnnotatedField.java Thu May 25 16:34:03 2017
@@ -18,7 +18,11 @@
*/
package javax.enterprise.inject.spi;
+import java.lang.annotation.Annotation;
import java.lang.reflect.Field;
+import java.util.Arrays;
+import java.util.LinkedHashSet;
+import java.util.Set;
/**
* Defines field member contract.
@@ -33,4 +37,11 @@ public interface AnnotatedField<X> exten
* {@inheritDoc}
*/
Field getJavaMember();
+
+ @Override
+ default <T extends Annotation> Set<T> getAnnotations(Class<T> annotationType)
+ {
+ return new LinkedHashSet<>(Arrays.asList(getJavaMember().getAnnotationsByType(annotationType)));
+ }
+
}
Modified: geronimo/specs/trunk/geronimo-jcdi_2.0_spec/src/main/java/javax/enterprise/inject/spi/AnnotatedMethod.java
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-jcdi_2.0_spec/src/main/java/javax/enterprise/inject/spi/AnnotatedMethod.java?rev=1796171&r1=1796170&r2=1796171&view=diff
==============================================================================
--- geronimo/specs/trunk/geronimo-jcdi_2.0_spec/src/main/java/javax/enterprise/inject/spi/AnnotatedMethod.java (original)
+++ geronimo/specs/trunk/geronimo-jcdi_2.0_spec/src/main/java/javax/enterprise/inject/spi/AnnotatedMethod.java Thu May 25 16:34:03 2017
@@ -18,7 +18,11 @@
*/
package javax.enterprise.inject.spi;
+import java.lang.annotation.Annotation;
import java.lang.reflect.Method;
+import java.util.Arrays;
+import java.util.LinkedHashSet;
+import java.util.Set;
/**
* Define method member contract.
@@ -33,4 +37,11 @@ public interface AnnotatedMethod<X> exte
* {@inheritDoc}
*/
Method getJavaMember();
+
+ @Override
+ default <T extends Annotation> Set<T> getAnnotations(Class<T> annotationType)
+ {
+ return new LinkedHashSet<>(Arrays.asList(getJavaMember().getAnnotationsByType(annotationType)));
+ }
+
}
Modified: geronimo/specs/trunk/geronimo-jcdi_2.0_spec/src/main/java/javax/enterprise/inject/spi/AnnotatedParameter.java
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-jcdi_2.0_spec/src/main/java/javax/enterprise/inject/spi/AnnotatedParameter.java?rev=1796171&r1=1796170&r2=1796171&view=diff
==============================================================================
--- geronimo/specs/trunk/geronimo-jcdi_2.0_spec/src/main/java/javax/enterprise/inject/spi/AnnotatedParameter.java (original)
+++ geronimo/specs/trunk/geronimo-jcdi_2.0_spec/src/main/java/javax/enterprise/inject/spi/AnnotatedParameter.java Thu May 25 16:34:03 2017
@@ -18,6 +18,14 @@
*/
package javax.enterprise.inject.spi;
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Executable;
+import java.lang.reflect.Member;
+import java.lang.reflect.Parameter;
+import java.util.Arrays;
+import java.util.LinkedHashSet;
+import java.util.Set;
+
/**
* Defines member parameter contract.
*
@@ -41,4 +49,20 @@ public interface AnnotatedParameter<X> e
*/
AnnotatedCallable<X> getDeclaringCallable();
+ default Parameter getJavaParameter()
+ {
+ final Member javaMember = getDeclaringCallable().getJavaMember();
+ if (!Executable.class.isInstance(javaMember))
+ {
+ throw new IllegalStateException("Parameter does not belong to a Constructor or Method: " + javaMember);
+ }
+ return ((Executable) javaMember).getParameters()[getPosition()];
+ }
+
+ @Override
+ default <T extends Annotation> Set<T> getAnnotations(Class<T> annotationType)
+ {
+ return new LinkedHashSet<>(Arrays.asList(getJavaParameter().getAnnotationsByType(annotationType)));
+ }
+
}
Modified: geronimo/specs/trunk/geronimo-jcdi_2.0_spec/src/main/java/javax/enterprise/inject/spi/AnnotatedType.java
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-jcdi_2.0_spec/src/main/java/javax/enterprise/inject/spi/AnnotatedType.java?rev=1796171&r1=1796170&r2=1796171&view=diff
==============================================================================
--- geronimo/specs/trunk/geronimo-jcdi_2.0_spec/src/main/java/javax/enterprise/inject/spi/AnnotatedType.java (original)
+++ geronimo/specs/trunk/geronimo-jcdi_2.0_spec/src/main/java/javax/enterprise/inject/spi/AnnotatedType.java Thu May 25 16:34:03 2017
@@ -19,6 +19,9 @@
package javax.enterprise.inject.spi;
import javax.enterprise.inject.spi.configurator.AnnotatedTypeConfigurator;
+import java.lang.annotation.Annotation;
+import java.util.Arrays;
+import java.util.LinkedHashSet;
import java.util.Set;
/**
@@ -61,4 +64,11 @@ public interface AnnotatedType<X> extend
* @return
*/
AnnotatedTypeConfigurator<X> configureAnnotatedType();
+
+ @Override
+ default <T extends Annotation> Set<T> getAnnotations(Class<T> annotationType)
+ {
+ return new LinkedHashSet<>(Arrays.asList(getJavaClass().getAnnotationsByType(annotationType)));
+ }
+
}