I was a bit confused by the use of the `javax.ws.rs.Encoded` annotation. As I 
understand its meaning, it just says "do not decode this parameter; just pass 
the value as-is".

This made me think that the implementation would delegate to the user the 
responsibility of encoding the parameters, which would seem more consistent? If 
the method is annotated `@Encoded`, then jclouds will assume everything is 
properly encoded and won't attempt to encode anything. With this approach, and 
now that I properly understand the impl, it makes sense the original commit 
where the `@Encoded` annotation was at parameter level: parameters annotated 
`@Encoded` should *not* be encoded by jclouds, and the others will (and the URL 
as a whole won't be encoded if any parameter is annotated).

The current implementation, and apologies for not having understood properly 
this in the first review round, looks a bit difficult to understand: if the 
method is annotated `@Encoded`, then the URl as a whole won't be encoded but 
every path parameter will be encoded.

I think the first one (annotation per param) is consistent with the meaning of 
the `javax.ws.rs.Encoded` annotation, and the current one make sense too, but 
then I'd create a different annotation `@OnlyEncodeParameters` or similar, to 
properly illustrate the behavior.

Honestly I think the first approach is cleaner. Apologies for the 
misunderstanding!

---
Reply to this email directly or view it on GitHub:
https://github.com/jclouds/jclouds/pull/861#issuecomment-145785758

Reply via email to