Hi all,
At J1 there was an interesting talk on what's new in JDK 8 regarding annotations [1]. There are some things which are beneficial for the Bean Validation use case:
* JSR 308 (annotations on types): Will allow us to do things like private List<@Email String> emails;
Yeah!
* Repeating annotations: One can put the same annotation several times to an element:
@Size(min=8, groups=Default.class)
@Size(min=16, groups=Admin.class)
private String password;
The compiler puts that into a container annotation (e.g. @Size.List) and there will be updates to the reflection API to retrieve repeated annotations.
* javax.lang.model backed by Core Reflection:
The model API will be usable at runtime, taking reflection types as input:
TypeElement someClassElement = createMirror(SomeClass.class);
So this will allow to share code between a Bean Validation runtime (which typically uses reflection) and an annotation processor (which typically uses the model API) for checking constraints etc.
Hardy, as a bonus, this will make it finally dead easy to discover overridden methods :) :
ExecutableElement superFoo = createMirror(Super.class.getDeclaredMethod("foo"));
ExecutableElement childFoo = createMirror(Child.class.getDeclaredMethod("foo"));
TypeElement childElement = createMirror(Child.class);
assert getElements().overrides(childFoo, superFoo, childElement) == true
So it seems there is a BV 1.2 due once JDK 8 is through the door :)
--Gunnar