Class UriPattern

java.lang.Object
software.amazon.smithy.model.pattern.SmithyPattern
software.amazon.smithy.model.pattern.UriPattern

public final class UriPattern extends SmithyPattern
Represents a URI pattern.

A URI pattern is an absolute path segment used to route to operations. The pattern must start with "/", must not contain empty segments (i.e., "//"), must not contain a fragment (i.e., "#"), and must not end with "?".

Labels may appear in the pattern in the form of "{label}". Labels must not be repeated, must make up an entire path segment (e.g., "/{foo}/baz"), and the label name must match the regex "^[a-zA-Z0-9_]+$". No labels can appear after the query string.

Greedy labels, a specialized type of label, may be specified using "{label+}". Only a single greedy label may appear in a pattern, and it must be the last label in a pattern.

  • Method Details

    • parse

      public static UriPattern parse(String uri)
      Parse a URI pattern string into a UriPattern.

      The provided value must match the origin-form request-target grammar production in RFC 7230, section 5.3.1.

      Parameters:
      uri - URI pattern to parse.
      Returns:
      Returns the parsed URI pattern.
      Throws:
      InvalidUriPatternException - for invalid URI patterns.
      See Also:
    • getQueryLiterals

      public Map<String,String> getQueryLiterals()
      Get an immutable map of query string literal key-value pairs.
      Returns:
      An immutable map of parsed query string literals.
    • getQueryLiteralValue

      public Optional<String> getQueryLiteralValue(String parameter)
      Gets a specific query string literal parameter value.
      Parameters:
      parameter - Case-sensitive name of the parameter to retrieve.
      Returns:
      Returns the optionally found parameter value.
    • conflictsWith

      public boolean conflictsWith(UriPattern otherPattern)
      Determines if the pattern conflicts with another pattern.
      Parameters:
      otherPattern - SmithyPattern to check against.
      Returns:
      Returns true if there is a conflict.
    • getConflictingLabelSegments

      @Deprecated public List<Pair<SmithyPattern.Segment,SmithyPattern.Segment>> getConflictingLabelSegments(UriPattern otherPattern)
      Deprecated.
    • equals

      public boolean equals(Object other)
      Overrides:
      equals in class SmithyPattern
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class SmithyPattern