I like the annotation approach and agree that the flexibility needed in ARM, 
where they deploy new versions of the APIs quite often (but keeping backward 
compatibility) might not be needed here.

A couple questions:

* It would be worth considering the annotation at class level too. Could you 
implement that?
* I think it makes sense to reuse the `@SinceApiVersion` annotation for this 
purpose. It may affect existing methods, but it should be safe, as it just 
defines the versions where the annotated methods can work. jclouds is already 
using that annotation in a similar way. For example, providers that have a root 
API that delegates to feature APIs (such as the 
[AWSEC2Api](https://github.com/jclouds/jclouds/blob/master/providers/aws-ec2/src/main/java/org/jclouds/aws/ec2/AWSEC2Api.java))
 can return an `Optional`. If those methods are annotated with the 
`@SinceApiVersion`, jclouds will return `absent` instead of the API class 
(magic is done 
[here](https://github.com/jclouds/jclouds/blob/master/core/src/main/java/org/jclouds/rest/functions/PresentWhenApiVersionLexicographicallyAtOrAfterSinceApiVersion.java)).
 So, for me, letting the FormSigner (v2 and V4) override the API version for 
those methods annotated with `@SinceApiVersion` makes sense and I'd prefer this 
approach instead of introducing a new annotation to jclouds-core.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/jclouds/jclouds/pull/1102#issuecomment-302420023

Reply via email to