]> WPIA git - gigi.git/blob - lib/jetty/org/eclipse/jetty/http/pathmap/PathSpecGroup.java
updating jetty to jetty-9.2.16.v2016040
[gigi.git] / lib / jetty / org / eclipse / jetty / http / pathmap / PathSpecGroup.java
1 //
2 //  ========================================================================
3 //  Copyright (c) 1995-2016 Mort Bay Consulting Pty. Ltd.
4 //  ------------------------------------------------------------------------
5 //  All rights reserved. This program and the accompanying materials
6 //  are made available under the terms of the Eclipse Public License v1.0
7 //  and Apache License v2.0 which accompanies this distribution.
8 //
9 //      The Eclipse Public License is available at
10 //      http://www.eclipse.org/legal/epl-v10.html
11 //
12 //      The Apache License v2.0 is available at
13 //      http://www.opensource.org/licenses/apache2.0.php
14 //
15 //  You may elect to redistribute this code under either of these licenses.
16 //  ========================================================================
17 //
18
19 package org.eclipse.jetty.http.pathmap;
20
21 /**
22  * Types of path spec groups.
23  * <p>
24  * This is used to facilitate proper pathspec search order.
25  * <p>
26  * Search Order: 
27  * <ol>
28  * <li>{@link PathSpecGroup#ordinal()} [increasing]</li>
29  * <li>{@link PathSpec#specLength} [decreasing]</li>
30  * <li>{@link PathSpec#pathSpec} [natural sort order]</li>
31  * </ol>
32  */
33 public enum PathSpecGroup
34 {
35     // NOTE: Order of enums determines order of Groups.
36
37     /**
38      * For exactly defined path specs, no glob.
39      */
40     EXACT,
41     /**
42      * For path specs that have a hardcoded prefix and suffix with wildcard glob in the middle.
43      * 
44      * <pre>
45      *   "^/downloads/[^/]*.zip$"  - regex spec
46      *   "/a/{var}/c"              - uri-template spec
47      * </pre>
48      * 
49      * Note: there is no known servlet spec variant of this kind of path spec
50      */
51     MIDDLE_GLOB,
52     /**
53      * For path specs that have a hardcoded prefix and a trailing wildcard glob.
54      * <p>
55      * 
56      * <pre>
57      *   "/downloads/*"          - servlet spec
58      *   "/api/*"                - servlet spec
59      *   "^/rest/.*$"            - regex spec
60      *   "/bookings/{guest-id}"  - uri-template spec
61      *   "/rewards/{vip-level}"  - uri-template spec
62      * </pre>
63      */
64     PREFIX_GLOB,
65     /**
66      * For path specs that have a wildcard glob with a hardcoded suffix
67      * 
68      * <pre>
69      *   "*.do"        - servlet spec
70      *   "*.css"       - servlet spec
71      *   "^.*\.zip$"   - regex spec
72      * </pre>
73      * 
74      * Note: there is no known uri-template spec variant of this kind of path spec
75      */
76     SUFFIX_GLOB,
77     /**
78      * The root spec for accessing the Root behavior.
79      * 
80      * <pre>
81      *   ""           - servlet spec       (Root Servlet)
82      *   null         - servlet spec       (Root Servlet)
83      * </pre>
84      * 
85      * Note: there is no known uri-template spec variant of this kind of path spec
86      */
87     ROOT,
88     /**
89      * The default spec for accessing the Default path behavior.
90      * 
91      * <pre>
92      *   "/"           - servlet spec      (Default Servlet)
93      *   "/"           - uri-template spec (Root Context)
94      *   "^/$"         - regex spec        (Root Context)
95      * </pre>
96      * 
97      * Per Servlet Spec, pathInfo is always null for these specs.
98      * If nothing above matches, then default will match.
99      */
100     DEFAULT,
101 }