Class UriPattern


  • public final class UriPattern
    extends Pattern
    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 Detail

      • parse

        public static UriPattern parse​(java.lang.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:
        RFC 7230 Section 5.3.1
      • getQueryLiterals

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

        public java.util.Optional<java.lang.String> getQueryLiteralValue​(java.lang.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 - Pattern to check against.
        Returns:
        Returns true if there is a conflict.
      • getConflictingLabelSegments

        public java.util.List<software.amazon.smithy.utils.Pair<Pattern.Segment,​Pattern.Segment>> getConflictingLabelSegments​(UriPattern otherPattern)
        Gets a list of explicitly conflicting uri label segments between this pattern and another.
        Parameters:
        otherPattern - Pattern to check against.
        Returns:
        A list of Segment Pairs where each pair represents a conflict and where the left side of the Pair is a segment from this pattern.
      • equals

        public boolean equals​(java.lang.Object other)
        Overrides:
        equals in class Pattern