JDK 12 RFR of JDK-8213256: Clarify runtime vs ,compile time annotations for ,RoundEnvironment.getElementsAnnotatedWith(Class) (original) (raw)

Jan Lahoda jan.lahoda at oracle.com
Fri Nov 2 19:36:18 UTC 2018


Looks good to me.

Jan

On 2.11.2018 18:02, joe darcy wrote:

Hello,

As a follow-up to recent discussions, please review the proposed changes and CSR for JDK-8213256: Clarify runtime vs ,compile time annotations for ,RoundEnvironment.getElementsAnnotatedWith(Class) CSR: https://bugs.openjdk.java.net/browse/JDK-8213310 webrev: http://cr.openjdk.java.net/~darcy/8213256.0/ Patch below. Thanks, -Joe --- old/src/java.compiler/share/classes/javax/annotation/processing/RoundEnvironment.java 2018-11-02 09:55:44.074001000 -0700 +++ new/src/java.compiler/share/classes/javax/annotation/processing/RoundEnvironment.java 2018-11-02 09:55:43.902001000 -0700 @@ -143,11 +143,26 @@ * simply because a {@code module-info} file for that module was * created. * + *

Note: An implementation of this method typically performs

+ * an internal conversion from the runtime reflective + * representation of an annotation type as a {@code Class} object + * to a different representation used for annotation + * processing. The set of annotation types present in the runtime + * context may differ from the set of annotation types present in + * the context of annotation processing in a particular + * environmental configuration. If an runtime annotation type is + * not present in the annotation processing context, the situation + * is not treated as an error and no elements are found for that + * annotation type. + * * @param a annotation type being requested * @return the elements annotated with the given annotation type, * or an empty set if there are none * @throws IllegalArgumentException if the argument does not * represent an annotation type + * + * @see AnnotatedConstruct.getAnnotation(Class) + * @see AnnotatedConstruct.getAnnotationsByType(Class) */ Set<? extends Element> getElementsAnnotatedWith(Class<? extends_ _Annotation> a); @@ -155,6 +170,18 @@ * Returns the elements annotated with one or more of the given * annotation types. * + *

Note: An implementation of this method typically performs

+ * an internal conversion from the runtime reflective + * representation of an annotation type as a {@code Class} object + * to a different representation used for annotation + * processing. The set of annotation types present in the runtime + * context may differ from the set of annotation types present in + * the context of annotation processing in a particular + * environmental configuration. If an runtime annotation type is + * not present in the annotation processing context, the situation + * is not treated as an error and no elements are found for that + * annotation type. + * * @apiNote This method may be useful when processing repeating * annotations by looking for an annotation type and its * containing annotation type at the same time. @@ -172,6 +199,10 @@ * @throws IllegalArgumentException if the any elements of the * argument set do not represent an annotation type * @jls 9.6.3 Repeatable Annotation Types + * + * @see AnnotatedConstruct.getAnnotation(Class) + * @see AnnotatedConstruct.getAnnotationsByType(Class) + * * @since 9 */ default Set<? extends Element> getElementsAnnotatedWithAny(Set<Class<? extends Annotation>> annotations){



More information about the compiler-dev mailing list