@Internal public abstract class XdsCredentialsProvider extends Object
Implementations can be automatically discovered by gRPC via Java's SPI mechanism. For
automatic discovery, the implementation must have a zero-argument constructor and include
a resource named META-INF/services/io.grpc.xds.XdsCredentialsProvider
in their JAR. The
file's contents should be the implementation's class name.
Implementations that need arguments in their constructor can be manually registered by
XdsCredentialsRegistry.register(io.grpc.xds.XdsCredentialsProvider)
.
Implementations should not throw. If they do, it may interrupt class loading. If
exceptions may reasonably occur for implementation-specific reasons, implementations should
generally handle the exception gracefully and return false
from isAvailable()
.
Constructor and Description |
---|
XdsCredentialsProvider() |
Modifier and Type | Method and Description |
---|---|
protected abstract String |
getName()
Returns the xDS credential name associated with this provider which makes it selectable
via
XdsCredentialsRegistry.getProvider(java.lang.String) . |
abstract boolean |
isAvailable()
Whether this provider is available for use, taking the current environment
into consideration.
|
protected abstract ChannelCredentials |
newChannelCredentials(Map<String,?> jsonConfig)
Creates a
ChannelCredentials from the given jsonConfig, or
null if the given config is invalid. |
abstract int |
priority()
A priority, from 0 to 10 that this provider should be used, taking the
current environment into consideration.
|
protected abstract ChannelCredentials newChannelCredentials(Map<String,?> jsonConfig)
ChannelCredentials
from the given jsonConfig, or
null
if the given config is invalid. The provider is free to ignore
the config if it's not needed for producing the channel credentials.jsonConfig
- json config that can be consumed by the provider to create
the channel credentialsprotected abstract String getName()
XdsCredentialsRegistry.getProvider(java.lang.String)
. This is called only when the class is loaded.
It shouldn't change, and there is no point doing so.public abstract boolean isAvailable()
false
, newChannelCredentials(java.util.Map<java.lang.String, ?>)
is not safe to be called.public abstract int priority()