checked out the code, looks good Rohit. It will give us a handle to keep the API from becoming even more inconsistent, and maybe even improve.
On Thu, Apr 21, 2016 at 1:07 PM, Rohit Yadav <rohit.ya...@shapeblue.com> wrote: > All, > > Whenever we've to write new APIs, we end up putting a lot of validations > such as Strings.isNullOrEmpty or checks on API args such as on id we do > this a lot getId() != null && getId() > 0 and on failing throw server api > exception (as cloudstack entity ids are always > 0, such as ids of vms, > volumes etc). > > While working on recent dynamic-roles PR, I ended up writing several such > validations for all the new APIs and based on suggestions from John I could > rid of all such checks by introducing a new @Parameter annotation field > call validators() which is a list of validators we want to run for an API > arg. This does not break any existing API which might have inconsistent > assumptions (such as few accept id to be -1), and on local env all existing > unit tests and smoke tests have passed. > > Please find an implementation in the dynamic-roles PR where all the new > dynamic roles APIs use these annotations: > https://github.com/apache/cloudstack/pull/1489 > > Ticket: https://issues.apache.org/jira/browse/CLOUDSTACK-9361 > > As soon as the PR is accepted and merged, I'll update the wiki page and we > can get this pattern adopted over time: > > https://cwiki.apache.org/confluence/display/CLOUDSTACK/Annotations+use+in+the+API > > Regards, > Rohit Yadav > > Regards, > > Rohit Yadav > > rohit.ya...@shapeblue.com > www.shapeblue.com > 53 Chandos Place, Covent Garden, London WC2N 4HSUK > @shapeblue > -- Daan