Class AwsEndpointProviderUtils

java.lang.Object
software.amazon.awssdk.awscore.endpoints.AwsEndpointProviderUtils

@SdkProtectedApi public final class AwsEndpointProviderUtils extends Object
Shared utility methods for endpoint resolution across all AWS services. Previously this was generated per-service as an identical copy; now de-duplicated here.
  • Method Details

    • regionBuiltIn

      public static Region regionBuiltIn(ExecutionAttributes executionAttributes)
    • dualStackEnabledBuiltIn

      public static Boolean dualStackEnabledBuiltIn(ExecutionAttributes executionAttributes)
    • fipsEnabledBuiltIn

      public static Boolean fipsEnabledBuiltIn(ExecutionAttributes executionAttributes)
    • endpointBuiltIn

      public static String endpointBuiltIn(ExecutionAttributes executionAttributes)
      Returns the endpoint set on the client. Note that this strips off the query part of the URI because the endpoint rules library, e.g. ParseURL will return an exception if the URI it parses has query parameters.
    • endpointIsOverridden

      public static boolean endpointIsOverridden(ExecutionAttributes attrs)
      True if the SdkInternalExecutionAttribute.CLIENT_ENDPOINT_PROVIDER's endpoint is overridden.
    • endpointIsDiscovered

      @Deprecated public static boolean endpointIsDiscovered(ExecutionAttributes attrs)
      True if the SdkInternalExecutionAttribute.IS_DISCOVERED_ENDPOINT attribute is present and its value is true, false otherwise.
    • skipEndpointResolution

      public static boolean skipEndpointResolution(ExecutionAttributes attrs)
      True if endpoint resolution should be skipped for the current request. This returns true if either SdkInternalExecutionAttribute.SKIP_ENDPOINT_RESOLUTION or SdkInternalExecutionAttribute.IS_DISCOVERED_ENDPOINT is set to true.
    • disableHostPrefixInjection

      public static boolean disableHostPrefixInjection(ExecutionAttributes attrs)
      True if the SdkInternalExecutionAttribute.DISABLE_HOST_PREFIX_INJECTION attribute is present and its value is true, false otherwise.
    • addHostPrefix

      public static Endpoint addHostPrefix(Endpoint endpoint, String prefix)
      Apply the given endpoint prefix to the endpoint.
    • setUri

      public static SdkHttpRequest setUri(SdkHttpRequest request, URI clientEndpoint, URI resolvedUri)
      This sets the request URI to the resolved URI returned by the endpoint provider. There are some things to be careful about to make this work properly:

      If the client endpoint is an endpoint override, it may contain a path. In addition, the request marshaller itself may add components to the path if it's modeled for the operation. Unfortunately, SdkHttpRequest.encodedPath() returns the combined path from both the endpoint and the request. There is no way to know, just from the HTTP request object, where the override path ends (if it's even there) and where the request path starts. Additionally, the rule itself may also append other parts to the endpoint override path.

      To solve this issue, we pass in the endpoint set on the client, which allows us to the strip the path from the endpoint override from the request path, and then correctly combine the paths.

      For example, let's suppose the endpoint override on the client is https://example.com/a. Then we call an operation Foo(), that marshalls /c to the path. The resulting request path is /a/c. However, we also pass the endpoint to provider as a parameter, and the resolver returns https://example.com/a/b. This method takes care of combining the paths correctly so that the resulting path is https://example.com/a/b/c.