RFR: 8004912: Repeating annotations - getAnnotationsByType is not working as expected
Peter Levart
peter.levart at gmail.com
Tue Oct 22 10:50:34 UTC 2013
Hi, I would just like to ask for a pointer to some specification
document that describes inheritance of repeating annotations. I couldn't
find one on the net.
I have a feeling there's something wrong with the logic of
AnnotationsSuport.getAssociatedAnnotations. Why? Because it is based on
two maps: declaredAnnotations map and allAnnotations map. The later is a
map of inherited and/or declared annotations which is aggregated without
the knowledge of repeating annotations (the containers). I doubt this
map keeps enough information to reconstruct a sound set of inherited
and/or declared repeating annotations in all situations.
But I'd like to 1st see the specification before showing you some
examples where problems arise.
Regards, Peter
On 10/22/2013 12:21 PM, Joel Borggrén-Franck wrote:
> Hi Andreas,
>
> A few nits:
>
> Class.java:
>
> import java.util.Collection;
> +import java.util.Collections;
> import java.util.HashSet;
>
> unused import.
>
> AnnotationSupport.java:
>
> + /**
> + * Equivalent to calling {@code getDirectlyAndIndirectlyPresentAnnotations(
> + * annotations, annoClass, false)}.
> + */
>
> I think it is equivalent to annotations, annoClass, true
>
> Otherwise looks good. I can sponsor this fix.
>
> cheers
> /Joel
>
> On 21 okt 2013, at 21:01, Andreas Lundblad <andreas.lundblad at oracle.com> wrote:
>
>> Hi,
>>
>> New revision up for review:
>>
>> http://aoeu.se/webrevs/8019420-and-8004912/webrev.01
>>
>> The following has been addressed since webrev.00:
>>
>> - Order of directly / indirectly present annotations now respects the order of the keys in the given map of annotations.
>>
>> - A new test has been added to test the above behavior.
>>
>> best regards,
>> Andreas
>>
>>
>> ----- Original Message -----
>> From: andreas.lundblad at oracle.com
>> To: core-libs-dev at openjdk.java.net
>> Sent: Wednesday, October 16, 2013 4:00:08 PM GMT +01:00 Amsterdam / Berlin / Bern / Rome / Stockholm / Vienna
>> Subject: RFR: 8004912: Repeating annotations - getAnnotationsByType is not working as expected
>>
>> Hi,
>>
>> Please review the fix for JDK-8004912 and JDK-8019420 below.
>>
>> Description:
>>
>> The behavior of Class.get[Declared]AnnotationsByType was wrong. These methods delegate to sun.reflect.annotation.AnnotationSupport which has been rewritten.
>>
>> NonInheritableContainee.java is added and contains the test referred to in JDK-8019420.
>>
>> RepeatedUnitTest.java have been updated to include the test cases in JDK-8004912.
>>
>> There are more tests available in tl/langtools/test/tools/javac/annotations/repeatingAnnotations/combo/ReflectionTest.java (NB. this file is in the langtools repo)
>>
>>
>> Link to web review:
>> http://cr.openjdk.java.net/~alundblad/8019420-and-8004912/
>>
>> Link to bug reports:
>> https://bugs.openjdk.java.net/browse/JDK-8004912
>> https://bugs.openjdk.java.net/browse/JDK-8019420
>>
>>
>> -- Andreas Lundblad
More information about the core-libs-dev
mailing list