RFR: 8268788: Annotations with lambda expressions can still cause AnnotationFormatError
Sergei Ustimenko
fdesu at protonmail.com
Wed Jul 7 16:17:12 UTC 2021
Hi Joe,
Thanks, I appreciate your feedback very much!
There was one more thing I wanted to discuss: there is something that
might be improved in the AnnotationInvocationHandler#validateAnnotationMethods
and I wanted to know if it makes sense to go ahead with the change.
There are `if` statements that set the variable called `valid` to false
in case validation fails. Later, depending on the value of the `valid`, an
instance of AnnotationFormatError being thrown. I was thinking if it makes sense
to simplify the validation loop (this is not the complete diff - just gives a
gist of what I mean):
@@ -493,10 +493,7 @@ class AnnotationInvocationHandler implements InvocationHandler, Serializable {
* Specification citations below are from JLS
* 9.6.1. Annotation Type Elements
*/
- boolean valid = true;
- Method currentMethod = null;
for(Method method : memberMethods) {
- currentMethod = method;
int modifiers = method.getModifiers();
// Skip over methods that may be a static initializer or
// similar construct. A static initializer may be used for
@@ -524,8 +521,7 @@ class AnnotationInvocationHandler implements InvocationHandler, Serializable {
method.isDefault() ||
method.getParameterCount() != 0 ||
method.getExceptionTypes().length != 0) {
- valid = false;
- break;
+ throw newAnnotationFormatErrorOf(method);
}
...
}
- if (valid)
- return;
- else
- throw new AnnotationFormatError("Malformed method on an annotation type: " +
- currentMethod.toString());
+ }
+
+ private static AnnotationFormatError newAnnotationFormatErrorOf(Method malformedMethod) {
+ return new AnnotationFormatError("Malformed method on an annotation type: " + malformedMethod);
}
What do you think? Does it make sense?
Thanks,
Sergei
‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐
On Tuesday, July 6th, 2021 at 16:01, Joe Darcy <joe.darcy at oracle.com> wrote:
> Hello,
>
> I should be able to look at this within the next week or two; thanks,
>
> -Joe
>
More information about the core-libs-dev
mailing list