org.eclipse.jetty.http

## Class PathMap

- java.lang.Object
- - java.util.AbstractMap<K,V>
  - - java.util.HashMap
    - - org.eclipse.jetty.http.PathMap

- All Implemented Interfaces:
    Externalizable, Serializable, Cloneable, Map

      public class PathMap
      extends HashMap
      implements Externalizable

  URI path map to Object. This mapping implements the path specification recommended in the 2.2 Servlet API. Path specifications can be of the following forms:

       /foo/bar           - an exact path specification.
       /foo/*             - a prefix path specification (must end '/*').
       *.ext              - a suffix path specification.
       /                  - the default path specification.

  Matching is performed in the following order
- Exact match.
- Longest prefix match.
- Longest suffix match.
- default. Multiple path specifications can be mapped by providing a list of specifications. By default this class uses characters ":," as path separators, unless configured differently by calling the static method @see PathMap#setPathSpecSeparators(String)

  Special characters within paths such as '?� and ';' are not treated specially as it is assumed they would have been either encoded in the original URL or stripped from the path.

  This class is not synchronized. If concurrent modifications are possible then it should be synchronized at a higher level.

See Also:
  Serialized Form

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `static class` | `PathMap.Entry`

    - ### Nested classes/interfaces inherited from class java.util.AbstractMap

      `AbstractMap.SimpleEntry<K,V>, AbstractMap.SimpleImmutableEntry<K,V>`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `PathMap()` Construct empty PathMap.
    `PathMap(boolean nodefault)` Construct empty PathMap.
    `PathMap(int capacity)` Construct empty PathMap.
    `PathMap(Map m)` Construct from dictionary PathMap.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `clear()`
    `boolean` | `containsMatch(String path)` Return whether the path matches any entries in the PathMap, excluding the default entry
    `Object` | `getLazyMatches(String path)` Get all entries matched by the path.
    `PathMap.Entry` | `getMatch(String path)` Get the entry mapped by the best specification.
    `List` | `getMatches(String path)` Get all entries matched by the path.
    `Object` | `match(String path)` Get object matched by the path.
    `static boolean` | `match(String pathSpec, String path)`
    `static boolean` | `match(String pathSpec, String path, boolean noDefault)`
    `static String` | `pathInfo(String pathSpec, String path)` Return the portion of a path that is after a path spec.
    `static String` | `pathMatch(String pathSpec, String path)` Return the portion of a path that matches a path spec.
    `Object` | `put(Object pathSpec, Object object)` Add a single path match to the PathMap.
    `void` | `readExternal(ObjectInput in)`
    `static String` | `relativePath(String base, String pathSpec, String path)` Relative path.
    `Object` | `remove(Object pathSpec)`
    `static void` | `setPathSpecSeparators(String s)` Set the path spec separator.
    `void` | `writeExternal(ObjectOutput out)`

    - ### Methods inherited from class java.util.HashMap

      `clone, containsKey, containsValue, entrySet, get, isEmpty, keySet, putAll, size, values`

    - ### Methods inherited from class java.util.AbstractMap

      `equals, hashCode, toString`

    - ### Methods inherited from class java.lang.Object

      `finalize, getClass, notify, notifyAll, wait, wait, wait`

    - ### Methods inherited from interface java.util.Map

      `equals, hashCode`

- - ### Constructor Detail

    - #### PathMap

          public PathMap()

      Construct empty PathMap.

    - #### PathMap

          public PathMap(boolean nodefault)

      Construct empty PathMap.

    - #### PathMap

          public PathMap(int capacity)

      Construct empty PathMap.

    - #### PathMap

          public PathMap(Map m)

      Construct from dictionary PathMap.

  - ### Method Detail

    - #### setPathSpecSeparators

          public static void setPathSpecSeparators(String s)

      Set the path spec separator. Multiple path specification may be included in a single string if they are separated by the characters set in this string. By default this class uses ":," characters as path separators.
      Parameters:
        `s` - separators

    - #### writeExternal

          public void writeExternal(ObjectOutput out)
                             throws IOException

      Specified by:
        `writeExternal` in interface `Externalizable`
      Throws:
        `IOException`

    - #### readExternal

          public void readExternal(ObjectInput in)
                            throws IOException,
                                   ClassNotFoundException

      Specified by:
        `readExternal` in interface `Externalizable`
      Throws:
        `IOException`
        `ClassNotFoundException`

    - #### put

          public Object put(Object pathSpec,
                   Object object)

      Add a single path match to the PathMap.
      Specified by:
        `put` in interface `Map`
      Overrides:
        `put` in class `HashMap`
      Parameters:
        `pathSpec` - The path specification, or comma separated list of path specifications.
        `object` - The object the path maps to

    - #### match

          public Object match(String path)

      Get object matched by the path.
      Parameters:
        `path` - the path.
      Returns:
        Best matched object or null.

    - #### getMatch

          public PathMap.Entry getMatch(String path)

      Get the entry mapped by the best specification.
      Parameters:
        `path` - the path.
      Returns:
        Map.Entry of the best matched or null.

    - #### getLazyMatches

          public Object getLazyMatches(String path)

      Get all entries matched by the path. Best match first.
      Parameters:
        `path` - Path to match
      Returns:
        LazyList of Map.Entry instances key=pathSpec

    - #### getMatches

          public List getMatches(String path)

      Get all entries matched by the path. Best match first.
      Parameters:
        `path` - Path to match
      Returns:
        List of Map.Entry instances key=pathSpec

    - #### containsMatch

          public boolean containsMatch(String path)

      Return whether the path matches any entries in the PathMap, excluding the default entry
      Parameters:
        `path` - Path to match
      Returns:
        Whether the PathMap contains any entries that match this

    - #### remove

          public Object remove(Object pathSpec)

      Specified by:
        `remove` in interface `Map`
      Overrides:
        `remove` in class `HashMap`

    - #### clear

          public void clear()

      Specified by:
        `clear` in interface `Map`
      Overrides:
        `clear` in class `HashMap`

    - #### match

          public static boolean match(String pathSpec,
                      String path)
                               throws IllegalArgumentException

      Returns:
        true if match.
      Throws:
        `IllegalArgumentException`

    - #### match

          public static boolean match(String pathSpec,
                      String path,
                      boolean noDefault)
                               throws IllegalArgumentException

      Returns:
        true if match.
      Throws:
        `IllegalArgumentException`

    - #### pathMatch

          public static String pathMatch(String pathSpec,
                         String path)

      Return the portion of a path that matches a path spec.
      Returns:
        null if no match at all.

    - #### pathInfo

          public static String pathInfo(String pathSpec,
                        String path)

      Return the portion of a path that is after a path spec.
      Returns:
        The path info string

    - #### relativePath

          public static String relativePath(String base,
                            String pathSpec,
                            String path)

      Relative path.
      Parameters:
        `base` - The base the path is relative to.
        `pathSpec` - The spec of the path segment to ignore.
        `path` - the additional path
      Returns:
        base plus path with pathspec removed

Copyright © 1995-2015 Mort Bay Consulting. All Rights Reserved.