From sanjal at redhat.com Thu Apr 12 02:35:30 2012 Content-Type: multipart/mixed; boundary="===============6164442845349914650==" MIME-Version: 1.0 From: Shireesh Anjal To: devel at ovirt.org Subject: [Engine-devel] Query regarding ValidationUtils#validateInputs Date: Thu, 12 Apr 2012 12:05:25 +0530 Message-ID: <4F8677AD.2090304@redhat.com> --===============6164442845349914650== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable This is a multi-part message in MIME format. --------------060906010904020105000601 Content-Type: text/plain; charset=3DISO-8859-1; format=3Dflowed Content-Transfer-Encoding: 7bit Hi, This is regarding the following validation method we have in = ValidationUtils: /public static ArrayList = validateInputs(List> 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 errors =3D = ValidationUtils.validateInputs(getValidationGroups(), brick); if(errors !=3D null) { for(String error : errors) { addCanDoActionMessage(error); } } } ... } Regards, Shireesh --------------060906010904020105000601 Content-Type: text/html; charset=3DISO-8859-1 Content-Transfer-Encoding: 7bit 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 =3D ValidationUtils.validateInputs(getValidationGroups(), brick);
        if(errors !=3D null) {
            for(= String error : errors) {
            = ;    addCanDoActionMessage(error);
            }
        }
    }
...
}

Regards,
Shireesh
--------------060906010904020105000601-- --===============6164442845349914650== Content-Type: multipart/alternative MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.bin" VGhpcyBpcyBhIG11bHRpLXBhcnQgbWVzc2FnZSBpbiBNSU1FIGZvcm1hdC4KLS0tLS0tLS0tLS0t LS0wNjA5MDYwMTA5MDQwMjAxMDUwMDA2MDEKQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFy c2V0PUlTTy04ODU5LTE7IGZvcm1hdD1mbG93ZWQKQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzog N2JpdAoKSGksCgpUaGlzIGlzIHJlZ2FyZGluZyB0aGUgZm9sbG93aW5nIHZhbGlkYXRpb24gbWV0 aG9kIHdlIGhhdmUgaW4gClZhbGlkYXRpb25VdGlsczoKCi9wdWJsaWMgc3RhdGljIDxUIGV4dGVu ZHMgVmRjQWN0aW9uUGFyYW1ldGVyc0Jhc2U+IEFycmF5TGlzdDxTdHJpbmc+IAp2YWxpZGF0ZUlu cHV0cyhMaXN0PENsYXNzPD8+PiB2YWxpZGF0aW9uR3JvdXBMaXN0LCBUIHBhcmFtZXRlcnMpOy8K CkkgdGhlcmUgYW55IHBhcnRpY3VsYXIgcmVhc29uIGZvciBzdXBwb3J0aW5nIHRoZSB2YWxpZGF0 aW9ucyBvbmx5IG9uIApvYmplY3RzIG9mIGNsYXNzZXMgZGVyaXZlZCBmcm9tIFZkY0FjdGlvblBh cmFtZXRlcnNCYXNlPyBJIGd1ZXNzIHRoaXMgCndhcyBkb25lIGJlY2F1c2UgdGhpcyBtZXRob2Qg aXMgcHJpbWFyaWx5IGludGVuZGVkIHRvIHZhbGlkYXRlIHRoZSAKYWN0aW9uIHBhcmFtZXRlcnMg cGFzc2VkIHRvIGEgQkxMIGFjdGlvbiwgdXNpbmcgdGhlIHZhbGlkYXRpb24gCmFubm90YXRpb25z IG9uIHRoZSBwYXJhbWV0ZXIgY2xhc3MuIEhvd2V2ZXIgSSB0aGluayB0aGlzIG1ldGhvZCBjYW4g YmUgCnVzZWZ1bCBmb3IgZ2VuZXJhbCB1c2UgYXMgd2VsbC4gZS5nLiBJIGNhbm5vdCBhZGQgYSAi QFZhbGlkIiBhbm5vdGF0aW9uIApvbiBhICJsaXN0IiBvciBhICJtYXAiIGluIGEgcGFyYW1ldGVy IGNsYXNzLiBTbyBJIG5lZWQgdG8gaXRlcmF0ZSBvdmVyIAp0aGUgbGlzdC9tYXAsIGFuZCB2YWxp ZGF0ZSBlYWNoIGVsZW1lbnQgaW5zaWRlIHRoZSBsb29wLiBUaGUgdmFsaWRhdGlvbiAKaW5zaWRl IHRoZSBsb29wIGNhbiBhbHNvIHV0aWxpemUgdGhlIGFib3ZlIG1ldGhvZCBpZiB0aGUgcmVzdHJp Y3Rpb24gCiJleHRlbmRzIFZkY0FjdGlvblBhcmFtZXRlcnNCYXNlIiBpcyByZW1vdmVkLiBUaGlz IHdpbGwgYWxsb3cgbWUgdG8gZG8gCnRoZSBmb2xsb3dpbmcgaW4gdGhlIGNhbkRvQWN0aW9uIG1l dGhvZDoKCnByb3RlY3RlZCBib29sZWFuIGNhbkRvQWN0aW9uKCkgewouLi4KICAgICBmb3IoR2x1 c3RlckJyaWNrRW50aXR5IGJyaWNrIDogCmdldFBhcmFtZXRlcnMoKS5nZXRHbHVzdGVyVm9sdW1l KCkuZ2V0QnJpY2tzKCkpIHsKICAgICAgICAgTGlzdDxTdHJpbmc+IGVycm9ycyA9IApWYWxpZGF0 aW9uVXRpbHMudmFsaWRhdGVJbnB1dHMoZ2V0VmFsaWRhdGlvbkdyb3VwcygpLCBicmljayk7CiAg ICAgICAgIGlmKGVycm9ycyAhPSBudWxsKSB7CiAgICAgICAgICAgICBmb3IoU3RyaW5nIGVycm9y IDogZXJyb3JzKSB7CiAgICAgICAgICAgICAgICAgYWRkQ2FuRG9BY3Rpb25NZXNzYWdlKGVycm9y KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KLi4uCn0KClJlZ2FyZHMsClNoaXJl ZXNoCgotLS0tLS0tLS0tLS0tLTA2MDkwNjAxMDkwNDAyMDEwNTAwMDYwMQpDb250ZW50LVR5cGU6 IHRleHQvaHRtbDsgY2hhcnNldD1JU08tODg1OS0xCkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6 IDdiaXQKCjxodG1sPgogIDxoZWFkPgoKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlw ZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEiPgogIDwvaGVhZD4KICA8 Ym9keSBiZ2NvbG9yPSIjRkZGRkZGIiB0ZXh0PSIjMDAwMDAwIj4KICAgIEhpLDxicj4KICAgIDxi cj4KICAgIFRoaXMgaXMgcmVnYXJkaW5nIHRoZSBmb2xsb3dpbmcgdmFsaWRhdGlvbiBtZXRob2Qg d2UgaGF2ZSBpbgogICAgVmFsaWRhdGlvblV0aWxzOjxicj4KICAgIDxicj4KICAgIDxpPnB1Ymxp YyBzdGF0aWMgJmx0O1QgZXh0ZW5kcyBWZGNBY3Rpb25QYXJhbWV0ZXJzQmFzZSZndDsKICAgICAg QXJyYXlMaXN0Jmx0O1N0cmluZyZndDsgdmFsaWRhdGVJbnB1dHMoTGlzdCZsdDtDbGFzcyZsdDs/ Jmd0OyZndDsKICAgICAgdmFsaWRhdGlvbkdyb3VwTGlzdCwgVCBwYXJhbWV0ZXJzKTs8L2k+PGJy PgogICAgPGJyPgogICAgSSB0aGVyZSBhbnkgcGFydGljdWxhciByZWFzb24gZm9yIHN1cHBvcnRp bmcgdGhlIHZhbGlkYXRpb25zIG9ubHkgb24KICAgIG9iamVjdHMgb2YgY2xhc3NlcyBkZXJpdmVk IGZyb20gVmRjQWN0aW9uUGFyYW1ldGVyc0Jhc2U/IEkgZ3Vlc3MKICAgIHRoaXMgd2FzIGRvbmUg YmVjYXVzZSB0aGlzIG1ldGhvZCBpcyBwcmltYXJpbHkgaW50ZW5kZWQgdG8gdmFsaWRhdGUKICAg IHRoZSBhY3Rpb24gcGFyYW1ldGVycyBwYXNzZWQgdG8gYSBCTEwgYWN0aW9uLCB1c2luZyB0aGUg dmFsaWRhdGlvbgogICAgYW5ub3RhdGlvbnMgb24gdGhlIHBhcmFtZXRlciBjbGFzcy4gSG93ZXZl ciBJIHRoaW5rIHRoaXMgbWV0aG9kIGNhbgogICAgYmUgdXNlZnVsIGZvciBnZW5lcmFsIHVzZSBh cyB3ZWxsLiBlLmcuIEkgY2Fubm90IGFkZCBhICJAVmFsaWQiCiAgICBhbm5vdGF0aW9uIG9uIGEg Imxpc3QiIG9yIGEgIm1hcCIgaW4gYSBwYXJhbWV0ZXIgY2xhc3MuIFNvIEkgbmVlZCB0bwogICAg aXRlcmF0ZSBvdmVyIHRoZSBsaXN0L21hcCwgYW5kIHZhbGlkYXRlIGVhY2ggZWxlbWVudCBpbnNp ZGUgdGhlCiAgICBsb29wLiBUaGUgdmFsaWRhdGlvbiBpbnNpZGUgdGhlIGxvb3AgY2FuIGFsc28g dXRpbGl6ZSB0aGUgYWJvdmUKICAgIG1ldGhvZCBpZiB0aGUgcmVzdHJpY3Rpb24gImV4dGVuZHMg VmRjQWN0aW9uUGFyYW1ldGVyc0Jhc2UiIGlzCiAgICByZW1vdmVkLiBUaGlzIHdpbGwgYWxsb3cg bWUgdG8gZG8gdGhlIGZvbGxvd2luZyBpbiB0aGUgY2FuRG9BY3Rpb24KICAgIG1ldGhvZDo8YnI+ CiAgICA8YnI+CiAgICBwcm90ZWN0ZWQgYm9vbGVhbiBjYW5Eb0FjdGlvbigpIHs8YnI+CiAgICAu Li48YnI+CiAgICAmbmJzcDsmbmJzcDsmbmJzcDsgZm9yKEdsdXN0ZXJCcmlja0VudGl0eSBicmlj ayA6CiAgICBnZXRQYXJhbWV0ZXJzKCkuZ2V0R2x1c3RlclZvbHVtZSgpLmdldEJyaWNrcygpKSB7 PGJyPgogICAgJm5ic3A7Jm5ic3A7Jm5ic3A7ICZuYnNwOyZuYnNwOyZuYnNwOyBMaXN0Jmx0O1N0 cmluZyZndDsgZXJyb3JzID0KICAgIFZhbGlkYXRpb25VdGlscy52YWxpZGF0ZUlucHV0cyhnZXRW YWxpZGF0aW9uR3JvdXBzKCksIGJyaWNrKTs8YnI+CiAgICAmbmJzcDsmbmJzcDsmbmJzcDsgJm5i c3A7Jm5ic3A7Jm5ic3A7IGlmKGVycm9ycyAhPSBudWxsKSB7PGJyPgogICAgJm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IGZv cihTdHJpbmcgZXJyb3IgOiBlcnJvcnMpIHs8YnI+CiAgICAmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsgYWRkQ2FuRG9BY3Rpb25NZXNzYWdlKGVycm9yKTs8YnI+CiAgICAmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsgfTxicj4KICAgICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyB9 PGJyPgogICAgJm5ic3A7Jm5ic3A7Jm5ic3A7IH08YnI+CiAgICAuLi48YnI+CiAgICB9PGJyPgog ICAgPGJyPgogICAgUmVnYXJkcyw8YnI+CiAgICBTaGlyZWVzaDxicj4KICA8L2JvZHk+CjwvaHRt bD4KCi0tLS0tLS0tLS0tLS0tMDYwOTA2MDEwOTA0MDIwMTA1MDAwNjAxLS0K --===============6164442845349914650==--