Re: Guaranteed order of annotations?

2017-02-03 Thread Gunnar Morling
Hi Joe,

Thanks for your confirmation. Bean Validation may benefit from it, but
I understand that just a single request hardly justifies the change.

--Gunnar




2017-01-23 23:05 GMT+01:00 joe darcy <joe.da...@oracle.com>:
> Hi Gunnar,
>
> Annotations went into the platform way back in Java SE 5.0, with a GA during
> 2004. When working on repeating annotations, I was surprised to find there
> weren't stronger ordering guarantees for annotations from core reflection.
> However, requests to tighten this aspect of the platform haven't come up
> very often in the interim and I don't like it is likely to happen at this
> point.
>
> HTH,
>
> -Joe
>
>
>
> On 1/17/2017 11:26 PM, Gunnar Morling wrote:
>>
>> 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
>>>
>>>
>


Re: Guaranteed order of annotations?

2017-01-23 Thread joe darcy

Hi Gunnar,

Annotations went into the platform way back in Java SE 5.0, with a GA 
during 2004. When working on repeating annotations, I was surprised to 
find there weren't stronger ordering guarantees for annotations from 
core reflection. However, requests to tighten this aspect of the 
platform haven't come up very often in the interim and I don't like it 
is likely to happen at this point.


HTH,

-Joe


On 1/17/2017 11:26 PM, Gunnar Morling wrote:

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






Re: Guaranteed order of annotations?

2017-01-17 Thread Gunnar Morling
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
>
>


Re: Guaranteed order of annotations?

2017-01-17 Thread Joseph D. Darcy

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




Re: Guaranteed order of annotations?

2017-01-13 Thread Gunnar Morling
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


RE: Guaranteed order of annotations?

2017-01-13 Thread Yuri Gaevsky
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


Re: Guaranteed order of annotations?

2017-01-13 Thread Joel Borggrén-Franck
Iirc there are no guatantees but we try as best as we can to maintain
source code order. It has been a couple of years now but I think there are
a few corner cases with repeating annotations.

Cheers
/Joel

On Fri, 13 Jan 2017 at 18:14, Gunnar Morling  wrote:

> 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
>
>


Guaranteed order of annotations?

2017-01-13 Thread Gunnar Morling
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