Class ServiceIndex
- java.lang.Object
-
- software.amazon.smithy.model.knowledge.ServiceIndex
-
- All Implemented Interfaces:
KnowledgeIndex
public final class ServiceIndex extends java.lang.Object implements KnowledgeIndex
An index that resolves service protocols and auth schemes.This index can be used to get all of the protocol traits applied to a service, to get all of the auth defining traits applied to a service, to get the effective authentication schemes of a service, and to get the effective authentication schemes of an operation bound within the closure of a service.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
ServiceIndex.AuthSchemeMode
Defines the type of auth schemes returned bygetEffectiveAuthSchemes(software.amazon.smithy.model.shapes.ToShapeId)
.
-
Constructor Summary
Constructors Constructor Description ServiceIndex(Model model)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description java.util.Map<ShapeId,Trait>
getAuthSchemes(ToShapeId service)
Get all auth defining traits attached to a service or operation.java.util.Map<ShapeId,Trait>
getEffectiveAuthSchemes(ToShapeId service)
Gets a list of effective authentication schemes applied to a service.java.util.Map<ShapeId,Trait>
getEffectiveAuthSchemes(ToShapeId service, ServiceIndex.AuthSchemeMode authSchemeMode)
Gets a list of effective authentication schemes applied to a service, based on the AuthSchemeMode.java.util.Map<ShapeId,Trait>
getEffectiveAuthSchemes(ToShapeId service, ToShapeId operation)
Gets a list of effective authentication schemes applied to an operation bound within a service.java.util.Map<ShapeId,Trait>
getEffectiveAuthSchemes(ToShapeId service, ToShapeId operation, ServiceIndex.AuthSchemeMode authSchemeMode)
Gets a list of effective authentication schemes applied to an operation bound within a service, based on the AuthSchemeMode.java.util.Map<ShapeId,Trait>
getProtocols(ToShapeId service)
Get all protocol traits attached to a service.static ServiceIndex
of(Model model)
-
-
-
Constructor Detail
-
ServiceIndex
public ServiceIndex(Model model)
-
-
Method Detail
-
of
public static ServiceIndex of(Model model)
-
getProtocols
public java.util.Map<ShapeId,Trait> getProtocols(ToShapeId service)
Get all protocol traits attached to a service.A protocol trait is a trait that is marked with the
smithy.api#protocolDefinition
trait.An empty map is returned if
service
cannot be found in the model or is not a service shape.- Parameters:
service
- Service to get the protocols of.- Returns:
- Returns a map of the protocol trait ID to the trait.
-
getAuthSchemes
public java.util.Map<ShapeId,Trait> getAuthSchemes(ToShapeId service)
Get all auth defining traits attached to a service or operation.An auth defining trait is a trait that is marked with the
smithy.api#authDefinition
trait.The returned map is ordered alphabetically by absolute shape ID.
An empty map is returned if
id
cannot be found in the model or is not a service shape.- Parameters:
service
- Service to get the auth schemes of.- Returns:
- Returns a map of the trait shape ID to the auth trait itself.
-
getEffectiveAuthSchemes
public java.util.Map<ShapeId,Trait> getEffectiveAuthSchemes(ToShapeId service)
Gets a list of effective authentication schemes applied to a service.An effective authentication scheme is derived from the
smithy.api#auth
trait and the auth defining traits applied to a service. If the service has thesmithy.api#auth
trait, then a map is returned that contains the traits applied to the service that matches the values in the auth trait. If no auth trait is applied, then all of the auth defining traits on the service are returned.The returned map is provided in the same order as the values in the
auth
trait if an auth trait is present, otherwise the result returned is ordered alphabetically by absolute shape ID.An empty map is returned if
service
cannot be found in the model or is not a service shape.- Parameters:
service
- Service to get the effective authentication schemes of.- Returns:
- Returns a map of the trait shape ID to the auth trait itself.
-
getEffectiveAuthSchemes
public java.util.Map<ShapeId,Trait> getEffectiveAuthSchemes(ToShapeId service, ServiceIndex.AuthSchemeMode authSchemeMode)
Gets a list of effective authentication schemes applied to a service, based on the AuthSchemeMode.If AuthSchemeMode is
MODELED
, which is the default, the behavior is same asgetEffectiveAuthSchemes(ToShapeId)
.If AuthSchemeMode is
NO_AUTH_AWARE
, the behavior is same, except that if the service has no effective auth schemes, instead of an empty map, it returns thesmithy.api#noAuth
auth scheme. It avoids having to special case handling an empty result. The returned map will always contain at least 1 entry.- Parameters:
service
- Service to get the effective authentication schemes of.authSchemeMode
- AuthSchemeMode to determine which authentication schemes to include.- Returns:
- Returns a map of the trait shape ID to the auth trait itself.
-
getEffectiveAuthSchemes
public java.util.Map<ShapeId,Trait> getEffectiveAuthSchemes(ToShapeId service, ToShapeId operation)
Gets a list of effective authentication schemes applied to an operation bound within a service.If the given operation defines that
smithy.api#auth
trait, then a map is returned that consists of the traits applied to the service that match the values of thesmithy.api#auth
trait. If the operation does not define ansmithy.api#auth
trait, then the effective auth schemes of the service is returned (that is, the return value ofgetEffectiveAuthSchemes(ToShapeId)
).The returned map is provided in the same order as the values in the
auth
trait if an auth trait is present, otherwise the result returned is ordered alphabetically by absolute shape ID.An empty map is returned if
service
shape cannot be found in the model or is not a service shape. An empty map is returned ifoperation
cannot be found in the model or is not an operation shape.- Parameters:
service
- Service the operation is within.operation
- Operation to get the effective authentication schemes of.- Returns:
- Returns a map of the trait shape ID to the auth trait itself.
-
getEffectiveAuthSchemes
public java.util.Map<ShapeId,Trait> getEffectiveAuthSchemes(ToShapeId service, ToShapeId operation, ServiceIndex.AuthSchemeMode authSchemeMode)
Gets a list of effective authentication schemes applied to an operation bound within a service, based on the AuthSchemeMode.If AuthSchemeMode is
MODELED
, which is the default, the behavior is same asgetEffectiveAuthSchemes(ToShapeId, ToShapeId)
.If AuthSchemeMode is
NO_AUTH_AWARE
, the behavior is same, with the following differences: If the operation has no effective auth schemes, instead of an empty map, it returns thesmithy.api#noAuth
auth scheme. If the operation has thesmithy.api#optionalAuth
trait, it addssmithy.api#noAuth
to the end.Using
NO_AUTH_AWARE
accounts forsmithy.api#optionalAuth
and avoids having to special case handling an empty result. The returned map will always contain at least 1 entry.The
smithy.api#noAuth
scheme, if present, is always the last scheme.- Parameters:
service
- Service the operation is within.operation
- Operation to get the effective authentication schemes of.authSchemeMode
- AuthSchemeMode to determine which authentication schemes to include.- Returns:
- Returns a map of the trait shape ID to the auth trait itself.
-
-