Class ServiceIndex

java.lang.Object
software.amazon.smithy.model.knowledge.ServiceIndex
All Implemented Interfaces:
KnowledgeIndex

public final class ServiceIndex extends 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.

  • Constructor Details

    • ServiceIndex

      public ServiceIndex(Model model)
  • Method Details

    • of

      public static ServiceIndex of(Model model)
    • getProtocols

      public 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 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.

      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 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 the smithy.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 is returned in an undefined order.

      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 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 the smithy.api#auth trait. If the operation does not define an smithy.api#auth trait, then the effective auth schemes of the service is returned (that is, the return value of getEffectiveAuthSchemes(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 is returned in an undefined order.

      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 if operation 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.