View Javadoc

1   package com.atlassian.xwork;
2   
3   import java.util.EnumSet;
4   
5   /**
6    * Enumeration of the different HTTP methods used by the {@link com.atlassian.xwork.interceptors.RestrictHttpMethodInterceptor}.
7    * Because this enumeration is designed for the use of the interceptor (for example it treats HEAD as a sub-method
8    * of GET), it probably isn't useful for more general cases.
9    *
10   * @since 1.6
11   */
12  public enum HttpMethod
13  {
14      // Standard HTTP Methods
15  
16      /** RFC2616 GET method. Will also match HEAD, as HEAD should be accepted anywhere GET is */
17      GET
18      {
19          @Override
20          public boolean matches(String methodName)
21          {
22              return super.matches(methodName) || HEAD.matches(methodName);
23          }
24      },
25      /** RFC2616 POST method */
26      POST,
27      /** RFC2616 PUT method */
28      PUT,
29      /** RFC2616 DELETE method */
30      DELETE,
31      /** RFC2616 HEAD method */
32      HEAD,
33      /** RFC2616 OPTIONS method */
34      OPTIONS,
35      /** RFC2616 TRACE method */
36      TRACE,
37      /** RFC2616 CONNECT method */
38      CONNECT,
39  
40      // WEBDAV methods
41  
42      /** RFC2518 PROPFIND method */
43      PROPFIND,
44      /** RFC2518 PROPPATCH method */
45      PROPPATCH,
46      /** RFC2518 MKCOL method */
47      MKCOL,
48      /** RFC2518 COPY method */
49      COPY,
50      /** RFC2518 MOVE method */
51      MOVE,
52      /** RFC2518 LOCK method */
53      LOCK,
54      /** RFC2518 UNLOCK method */
55      UNLOCK,
56      /** RFC2518 PATCH method */
57      PATCH,
58  
59      /** Matches any method defined in standard HTTP/1.1 */
60      ALL_RFC2616
61      {
62          @Override
63          public boolean matches(String methodName)
64          {
65              for (HttpMethod method: EnumSet.range(GET, CONNECT))
66              {
67                  if (method.matches(methodName))
68                      return true;
69              }
70  
71              return false;
72          }},
73  
74      /** Matches any method defined in standard HTTP/1.1 or WEBDAV */
75      ALL_DEFINED
76      {
77          @Override
78          public boolean matches(String methodName)
79          {
80              for (HttpMethod method: EnumSet.range(GET, PATCH))
81              {
82                  if (method.matches(methodName))
83                      return true;
84              }
85  
86              return false;
87          }
88      },
89  
90      /** Accept anything, even if it's not defined in this enumeration */
91      ANY_METHOD
92      {
93          @Override
94          public boolean matches(String methodName)
95          {
96              return true;
97          }
98      };
99  
100     public boolean matches(String methodName)
101     {
102         return methodName != null && this.toString().equals(methodName);
103     }
104 }