Hi Fabio,

> -----Original Message-----
> From: Fabio Martelli [mailto:fabio.marte...@gmail.com]
> Sent: Donnerstag, 7. Februar 2013 11:04
> To: dev@syncope.apache.org
> Subject: Add a new method into the PolicyService
> 
> Hi All,
> I have to add a new rest method to retrieve sync policy correlation rules.
> As you can see this info is just related to the sync policies.
> 
> Since the PolicyService take the policy type as part of the path
> (@Path("policies/{type}")) how do you suggest to introduce a client method
> to retrieve this info?
> Should I do something like the following
> 
> @GET
@Path("correlationRules")
> List<String> getCorrelationRules(@PathParam("type") PolicyType type);
> 
> throwing an IllegalArgumentException in case of password or account type?

Since PolicyType  is part of the URL and not part of a POST body, I would 
suggest to rather throw a NotFoundException. This way a user will just get 
notified that there are no correlationRules available for any other kind of 
policy. (Caller doesn't need to know which part of the URL is mapped to a 
parameter, thus I think not found fits better in this case.)

Please be aware of my sample above to insert a @Path annotation. Otherwise you 
will have two methods for the same URL pattern (in this case list operation). 
Of course you can also use @Path("rules") if you like to shorten URL a little 
bit. Here is a sample of how the complete URL will look like:

http://localhost:9080:/syncope/policies/sync/rules --> This will call your 
method
http://localhost:9080:/syncope/policies/password/rules --> 404 NotFound
http://localhost:9080:/syncope/policies/xyzABC/rules --> 404 NotFound
http://localhost:9080:/syncope/policies/sync/someURL --> 404 NotFound
http://localhost:9080:/syncope/policies/sync --> Returns list of available sync 
policies

> 
> What are the best practices for this scenario?

Throw IllegalArgumentException if payload if message is corrupt 
and throw NotFoundException if URL does not match a valid useCase.

Best regards.
Jan

> 
> Best regards,
> F.

Reply via email to