Joseph, all, Thanks for the clarification.
Are there chances to establish such guaranteed ordering in a future Java version? As pointed out, it'd be very helpful to Bean Validation and I reckon other cases, too. Thanks, --Gunnar 2017-01-18 3:13 GMT+01:00 Joseph D. Darcy <joe.da...@oracle.com>: > Hello, > > Following up on Joel's message, IIRC this ordering issue did come up during > the design and testing of repeating annotations. > > As noted previously in the thread, while the ordering of the annotations in > a container annotation is guaranteed, there is *not* a general ordering > constraint on the annotations returned by the methods of the > AnnotatedElement interface. > > HTH, > > -Joe > > > On 1/13/2017 1:16 PM, Gunnar Morling wrote: >> >> Hi Yuri, >> >> Thanks for the pointer. >> >> But do you see any clear description of an order mandated for >> getDeclaredAnnotations()? The only references to an order I can find >> there are for repeatable annotations (where source code order is >> maintained when retrieving them via the container annotation type). >> But I cannot find any guaranteed order when obtaining all declared >> annotations from an element. >> >> The reason why I'm asking is Bean Validation, where we've seen >> requests of people that wish to validate the constraints of an element >> in a fixed order, aborting after the first failed constraint: >> >> @NotNull >> @Email >> String email; >> >> Here one may want to first validate @NotNull and don't proceed with >> validating @Email if the field is null. >> >> Relying on source order would be a very natural way to express the >> order of constraints. Without a guaranteed ordering of annotations >> we'd have to add some other means of ordering, e.g. an attribute with >> the index (@NotNull(order=0) @Email(order=1)) which is more verbose of >> course. >> >> --Gunnar >> >> >> >> >> >> 2017-01-13 21:15 GMT+01:00 Yuri Gaevsky <ygaev...@azulsystems.com>: >>> >>> Hi Gunnar, >>> >>> Please take a look at JDK-8010679 'Clarify "present" and annotation >>> ordering in Core Reflection for Annotations' [*]. >>> >>> Best regards, >>> -Yuri >>> >>> [*] https://bugs.openjdk.java.net/browse/JDK-8010679 >>> >>> >>> -----Original Message----- >>> From: core-libs-dev [mailto:core-libs-dev-boun...@openjdk.java.net] On >>> Behalf Of Gunnar Morling >>> Sent: Friday, January 13, 2017 08:14 PM >>> To: core-libs-dev@openjdk.java.net >>> Subject: Guaranteed order of annotations? >>> >>> Hi, >>> >>> Is there any order guaranteed in which an element's annotations are >>> returned by AnnotatedElement#getDeclaredAnnotations()? Specifically, >>> is this the order in which the annotations are given in the source >>> code? >>> >>> Section 9.7.5. of the JLS ("Multiple Annotations of the Same Type") >>> makes a statement of the source order being considered by the array of >>> the implicit container annotation created for a repeatable annotation >>> ("[...] all the base annotations in the left-to-right order in which >>> they appeared in the context"). >>> >>> But I couldn't find any authoritative description on the ordering >>> behaviour of getDeclaredAnnotations(). Should we assume that we cannot >>> rely on the order in the source? >>> >>> Thanks for any pointers, >>> >>> --Gunnar > >