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 }