View Javadoc

1   /*
2    *  Licensed to the Apache Software Foundation (ASF) under one
3    *  or more contributor license agreements.  See the NOTICE file
4    *  distributed with this work for additional information
5    *  regarding copyright ownership.  The ASF licenses this file
6    *  to you under the Apache License, Version 2.0 (the
7    *  "License"); you may not use this file except in compliance
8    *  with the License.  You may obtain a copy of the License at
9    *
10   *    http://www.apache.org/licenses/LICENSE-2.0
11   *
12   *  Unless required by applicable law or agreed to in writing,
13   *  software distributed under the License is distributed on an
14   *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   *  KIND, either express or implied.  See the License for the
16   *  specific language governing permissions and limitations
17   *  under the License.
18   *
19   */
20  package org.apache.mina.coap;
21  
22  /**
23   * Extract of the CoAP RFC :
24   * 
25   * <pre>
26   *     |    1 | GET    | [RFCXXXX] |
27   *     |    2 | POST   | [RFCXXXX] |
28   *     |    3 | PUT    | [RFCXXXX] |
29   *     |    4 | DELETE | [RFCXXXX] |
30   * 
31   *     |   65 | 2.01 Created                    | [RFCXXXX] |
32   *     |   66 | 2.02 Deleted                    | [RFCXXXX] |
33   *     |   67 | 2.03 Valid                      | [RFCXXXX] |
34   *     |   68 | 2.04 Changed                    | [RFCXXXX] |
35   *     |   69 | 2.05 Content                    | [RFCXXXX] |
36   *     |  128 | 4.00 Bad Request                | [RFCXXXX] |
37   *     |  129 | 4.01 Unauthorized               | [RFCXXXX] |
38   *     |  130 | 4.02 Bad Option                 | [RFCXXXX] |
39   *     |  131 | 4.03 Forbidden                  | [RFCXXXX] |
40   *     |  132 | 4.04 Not Found                  | [RFCXXXX] |
41   *     |  133 | 4.05 Method Not Allowed         | [RFCXXXX] |
42   *     |  134 | 4.06 Not Acceptable             | [RFCXXXX] |
43   *     |  140 | 4.12 Precondition Failed        | [RFCXXXX] |
44   *     |  141 | 4.13 Request Entity Too Large   | [RFCXXXX] |
45   *     |  143 | 4.15 Unsupported Content-Format | [RFCXXXX] |
46   *     |  160 | 5.00 Internal Server Error      | [RFCXXXX] |
47   *     |  161 | 5.01 Not Implemented            | [RFCXXXX] |
48   *     |  162 | 5.02 Bad Gateway                | [RFCXXXX] |
49   *     |  163 | 5.03 Service Unavailable        | [RFCXXXX] |
50   *     |  164 | 5.04 Gateway Timeout            | [RFCXXXX] |
51   *     |  165 | 5.05 Proxying Not Supported     | [RFCXXXX] |
52   * </pre>
53   * 
54   * @author <a href="http://mina.apache.org">Apache MINA Project</a>
55   */
56  public enum CoapCode {
57      GET("GET", 1), POST("POST", 2), PUT("PUT", 3), DELETE("DELETE", 4), CREATED("2.01", 65), DELETED("2.02", 66),
58      VALID("2.03", 67), CHANGED("2.04", 68), CONTENT("2.05", 69), BAD_REQUEST("4.00", 128), UNAUTHORIZED("4.01", 129),
59      BAD_OPTION("4.02", 130), FORBIDDEN("4.03", 131), NOT_FOUND("4.04", 132), METHOD_NOT_ALLOWED("4.05", 133),
60      NOT_ACCEPTABLE("4.06", 134), PRECONDITION_FAILED("4.12", 140), REQUEST_ENTITY_TOO_LARGE("4.13", 141),
61      UNSUPPORTED_CONTENT_FORMAT("4.15", 143), INTERNAL_SERVER_ERROR("5.00", 160), NOT_IMPLEMENTED("5.01", 161),
62      BAD_GATEWAY("5.02", 162), SERVICE_UNAVAILABLE("5.03", 163), GATEWAY_TIMEOUT("5.04", 164), PROXYING_NOT_SUPPORTED(
63              "5.05", 165)
64  
65      ;
66  
67      private final String text;
68      private final int code;
69  
70      private CoapCode(String text, int code) {
71          this.text = text;
72          this.code = code;
73      }
74  
75      public String getText() {
76          return text;
77      }
78  
79      public int getCode() {
80          return code;
81      }
82  
83      /**
84       * Find the {@link CoapCode} for the given value code (<code>null</code> if not found)
85       */
86      public static CoapCode fromCode(int code) {
87          for (CoapCode t : CoapCode.values()) {
88              if (t.getCode() == code) {
89                  return t;
90              }
91          }
92          return null;
93      }
94  }