Package org.jclouds.rest.functions
Interface ImplicitOptionalConverter
- All Superinterfaces:
com.google.common.base.Function<InvocationSuccess,,com.google.common.base.Optional<Object>> Function<InvocationSuccess,com.google.common.base.Optional<Object>>
- All Known Implementing Classes:
AlwaysPresentImplicitOptionalConverter,PresentWhenApiVersionLexicographicallyAtOrAfterSinceApiVersion,PresentWhenExtensionAnnotationMatchesExtensionSet
@Beta
public interface ImplicitOptionalConverter
extends com.google.common.base.Function<InvocationSuccess,com.google.common.base.Optional<Object>>
When a client marked @Delegate is optional, the implementation of this is
responsible for creating the optional object.
For example.
annotation is assigned, or the value is less than or equal to the current
. To override this, add the following in your subclass
override of
method:
interface MyCloud {
@Delegate
Optional<KeyPairClient> getKeyPairExtensionForRegion(String region);
}
The input object of type InvocationSuccess will include the
following.
- the class declaring the method that returns optional:
; in the example above,
invalid reference
InvocationSuccess#getClazzMyCloud - the method returning the optional:
; in the example above,
invalid reference
InvocationSuccess#getMethodgetKeyPairExtensionForRegion - the args passed to that method at runtime:
; for example
invalid reference
InvocationSuccess#getArgsNorth - the rest client to be enclosed in the optional, should you choose to
return it:
; in the example above, an implementation of
invalid reference
InvocationSuccess#getReturnValKeyPairClient
ImplicitOptionalConverter
can perform whatever you need, when deciding if the the returnVal is present
and available. Here are some ideas:
- call a smoke test command
- look at the annotations on the class and compare those against a configuration switch enabling the extension
- inspect the health of the client, perhaps looking for error status
- call another api which can validate the feature can be presented
default implementation returns present if no
invalid reference
SinceApiVersion
invalid reference
ApiVersion
invalid reference
RestClientModule#configure
bind(ImplicitOptionalConverter.class).to(MyCustomOptionalConverter.class);
-
Method Summary
Methods inherited from interface com.google.common.base.Function
apply, equals