[Engine-devel] Query regarding ValidationUtils#validateInputs
Shireesh Anjal
sanjal at redhat.com
Tue Apr 17 08:59:06 UTC 2012
On Sunday 15 April 2012 11:31 AM, Roy Golan wrote:
> On 04/12/2012 10:50 AM, Omer Frenkel wrote:
>>
>>
>> ------------------------------------------------------------------------
>>
>> *From: *"Shireesh Anjal" <sanjal at redhat.com>
>> *To: *engine-devel at ovirt.org
>> *Sent: *Thursday, April 12, 2012 9:35:25 AM
>> *Subject: *[Engine-devel] Query regarding
>> ValidationUtils#validateInputs
>>
>> Hi,
>>
>> This is regarding the following validation method we have in
>> ValidationUtils:
>>
>> /public static <T extends VdcActionParametersBase>
>> ArrayList<String> validateInputs(List<Class<?>>
>> validationGroupList, T parameters);/
>>
>> I there any particular reason for supporting the validations only
>> on objects of classes derived from VdcActionParametersBase? I
>> guess this was done because this method is primarily intended to
>> validate the action parameters passed to a BLL action, using the
>> validation annotations on the parameter class. However I think
>> this method can be useful for general use as well. e.g. I cannot
>> add a "@Valid" annotation on a "list" or a "map" in a parameter
>> class. So I need to iterate over the list/map, and validate each
>> element inside the loop. The validation inside the loop can also
>> utilize the above method if the restriction "extends
>> VdcActionParametersBase" is removed. This will allow me to do the
>> following in the canDoAction method:
>>
>> protected boolean canDoAction() {
>> ...
>> for(GlusterBrickEntity brick :
>> getParameters().getGlusterVolume().getBricks()) {
>> List<String> errors =
>> ValidationUtils.validateInputs(getValidationGroups(), brick);
>> if(errors != null) {
>> for(String error : errors) {
>> addCanDoActionMessage(error);
>> }
>> }
>> }
>> ...
>> }
>>
>> Regards,
>> Shireesh
>>
>> _______________________________________________
>> Engine-devel mailing list
>> Engine-devel at ovirt.org
>> http://lists.ovirt.org/mailman/listinfo/engine-devel
>>
>> i don't think there is a reason to restrict only for
>> VdcActionParametersBase, roy what do you think?
>>
>> also you can use here
>> getReturnValue().getCanDoActionMessages().addAll(errors);
>> instead of going over on all errors.
>
> pls see SetupNetworksParameters.java for validating a list of network
> interfaces.
>
> hibernate validator supports trivial object graphs and members that
> are arrays, list and java.util.map implementations.
> If your code looks like that it should work. If you are using special
> validation groups please add them to your command with
> addValidationGroups.
>
> this should work:
>
> GlusterCommandParameters.java
> @Valid
> List<Bricks> bricks
>
> Bricks.java
> @NotNull
> Guid id
Thanks! I had tried adding @Valid annotation as suggested above, which
had resulted in an exception from the validation engine, without any
specific information about the problem, and I assumed that @Valid may
not work on Lists. Digged deeper after reading your response, and found
that the @Valid annotation resulted in a call to equals method on the
entity, which had a bug, resulting in the exception. It all works well
after fixing the bug.
>
>
> _______________________________________________
> Engine-devel mailing list
> Engine-devel at ovirt.org
> http://lists.ovirt.org/mailman/listinfo/engine-devel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ovirt.org/pipermail/engine-devel/attachments/20120417/76f283d2/attachment.html>
More information about the Engine-devel
mailing list