Carlos Vara (JIRA) wrote:
[
https://issues.apache.org/jira/browse/BVAL-12?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Carlos Vara updated BVAL-12:
----------------------------
Attachment: ReturnAccess.java
ParameterAccess.java
method-validation.diff
FIx for the issue
Current implementation of method validation (appendix C of JSR-303) doesn't
work with some constraints
------------------------------------------------------------------------------------------------------
Key: BVAL-12
URL: https://issues.apache.org/jira/browse/BVAL-12
Project: BeanValidation
Issue Type: Improvement
Components: jsr303
Affects Versions: 0.1-incubating
Reporter: Carlos Vara
Attachments: method-validation.diff, ParameterAccess.java,
ReturnAccess.java
Original Estimate: 0.5h
Remaining Estimate: 0.5h
The methods processAnnotation and processAnnotations in
MethodValidatorMetaBeanFactory don't have enough information to infer the the
parameter/return value types, so they default to the type of the class that
contains the methods. Because of this, the selection of the correct validator
throws an exception (for example with a @Size constraint), or works in a
suboptimal manner (it always selects NotEmptyValidator instead of for example
NotEmptyValidatorForString when validating a String).
To fix it, I have created two new AccessStrategies (ParameterAccess and
ReturnAccess), and modified the processAnnotation and processAnnotations
signatures to take the strategies as parameters so they can pass them to the
Jsr303MetaBeanFactory.applyConstraint method (which at the moment receives a
null).
I attach the fix, along with a few more tests that check that constraints such
as @Size or @Pattern can be applied to method parameters and return types.
HI Carlos,
thanks for the improvements! I will have a closer look at them these
days. But, you know what? I never took my experiments with
method-level-validation seriously. It was just a trial implementation,
to see, how much effort the real thing would be (and because i did not
see such features in the reference implementation ;-) ) So I am not
surprised, that it does not yet work properly. Also there have to be
much more tests of it.
Besides: i never checked the test coverage of the project so far. Would
be nice if someone could help here with the configuration of a
maven-plugin to see, where additional tests are missing.
Bye,
Roman