JDK 12 RFR of JDK-8213256: Clarify runtime vs ,compile time annotations for ,RoundEnvironment.getElementsAnnotatedWith(Class)
joe darcy
joe.darcy at oracle.com
Fri Nov 2 17:02:42 UTC 2018
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.
*
+ * <p> 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.
*
+ * <p> 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