Class RegexPathSpec

java.lang.Object
org.eclipse.jetty.http.pathmap.AbstractPathSpec
org.eclipse.jetty.http.pathmap.RegexPathSpec
All Implemented Interfaces:
Comparable<PathSpec>, PathSpec

public class RegexPathSpec extends AbstractPathSpec

RegexPathSpec is a PathSpec implementation for a PathMappings instance.

Supports the standard Java regex found in Pattern.

Supports PathSpecGroup for PathSpecGroup.EXACT, PathSpecGroup.PREFIX_GLOB, PathSpecGroup.MIDDLE_GLOB, and PathSpecGroup.SUFFIX_GLOB. This is done by evaluating the signature or the provided regex pattern for what is a literal vs a glob (of any kind).

The use of regex capture groups, regex character classes, regex quantifiers, and regex special contructs will be identified as a glob (for signature determination), all other characters are identified as literal. The regex ^ beginning of line, and regex $ end of line are ignored.

Support for MatchedPath and PathMatch vs PathInfo

There's a few steps in evaluating the matched input path for determining where the split in the input path should occur for MatchedPath.getPathMatch() and MatchedPath.getPathInfo().

  1. If there are no regex capturing groups, the entire path is returned in MatchedPath.getPathMatch(), and a null returned for MatchedPath.getPathInfo()
  2. If both the named regex capturing groups name and info are present, then the name group is returned in MatchedPath.getPathMatch() and the info group is returned in MatchedPath.getPathInfo()
  3. If there is only 1 regex capturing group If the split on pathMatch ends with / AND the pathInfo doesn't start with / then the slash is moved from pathMatch to pathInfo.
  4. All other RegexPathSpec signatures will return the entire path in MatchedPath.getPathMatch(), and a null returned for MatchedPath.getPathInfo()