Non Inherited repeated annotations should not be searched from child Class
Deven You
youdwei at linux.vnet.ibm.com
Wed Jun 5 05:26:16 UTC 2013
Hi All,
I didn't see this mail in the mailing list for a long time, so I just
comment here to ensure everyone can receive this message.
Thanks a lot!
On 06/04/2013 09:37 PM, Deven You wrote:
>
> Hi All,
>
> I have written a test case[1] to show this problem. (If it is
> confirmed a real bug, I will convert this test case to jtreg)
>
> My expected output is no any output but OpenJDK returns:
>
> @NonInheritedAnnotationRepeated(name=A)
> @NonInheritedAnnotationRepeated(name=B)
>
> The reasons are:
>
> 1. From the spec, Inherited means:
>
> Indicates that an annotation type is automatically inherited. If an
> Inherited meta-annotation is present on an annotation type
> declaration, and the user queries the annotation type on a class
> declaration, and the class declaration has no annotation for this
> type, then the class's superclass will automatically be queried for
> the annotation type. This process will be repeated until an annotation
> for this type is found, or the top of the class hierarchy (Object) is
> reached. If no superclass has an annotation for this type, then the
> query will indicate that the class in question has no such annotation.
>
> 2. For repeated annotations, according to the explanation of 1., If it
> is non-inherited, querying Child class of this annotation should
> return null.
>
> 3. Now the problem is if the repeated annotation is non-inherited, but
> its container annotation is inherited, OpenJDK will return the
> repeated annotations of Parent class if we query the Child class.
>
> It seems according to the Inherited semantics, even when container
> annotation is inherited, we should not retrieve parent class
> non-inherited repeated annotation from a child class.
>
> [1] http://cr.openjdk.java.net/~youdwei/ojdk-810/NonInheritedTest/
> <http://cr.openjdk.java.net/%7Eyoudwei/ojdk-810/NonInheritedTest/>
More information about the core-libs-dev
mailing list