public static int toLwM2mCode(int coapCode) { int codeClass = CoAP.getCodeClass(coapCode); int codeDetail = CoAP.getCodeDetail(coapCode); return codeClass * 100 + codeDetail; }
/** * Gets the string representation of a CoAP code. * * @param code the CoAP code. * @return a string following the pattern C.DD where C is the code class nd DD is the code detail. */ public static String formatCode(final int code) { return formatCode(getCodeClass(code), getCodeDetail(code)); }
@Test public void testGetCodeDetail() { // Requests assertThat(CoAP.getCodeDetail(Code.GET.value), is(1)); assertThat(CoAP.getCodeDetail(Code.DELETE.value), is(4)); // success assertThat(CoAP.getCodeDetail(ResponseCode.CREATED.value), is(1)); assertThat(CoAP.getCodeDetail(ResponseCode.CHANGED.value), is(4)); assertThat(CoAP.getCodeDetail(ResponseCode.CONTINUE.value), is(31)); // errors assertThat(CoAP.getCodeDetail(ResponseCode.BAD_REQUEST.value), is(0)); assertThat(CoAP.getCodeDetail(ResponseCode.UNSUPPORTED_CONTENT_FORMAT.value), is(15)); // server errors assertThat(CoAP.getCodeDetail(ResponseCode.INTERNAL_SERVER_ERROR.value), is(0)); assertThat(CoAP.getCodeDetail(ResponseCode.NOT_IMPLEMENTED.value), is(1)); assertThat(CoAP.getCodeDetail(ResponseCode.SERVICE_UNAVAILABLE.value), is(3)); }
/** * Converts the specified integer value to a request code. * * @param value the integer value * @return the request code * @throws MessageFormatException if the integer value does not represent a valid request code. */ public static Code valueOf(final int value) { int classCode = getCodeClass(value); int detailCode = getCodeDetail(value); if (classCode > 0) { throw new MessageFormatException(String.format("Not a CoAP request code: %s", formatCode(classCode, detailCode))); } switch (detailCode) { case 1: return GET; case 2: return POST; case 3: return PUT; case 4: return DELETE; default: throw new MessageFormatException(String.format("Unknown CoAP request code: %s", formatCode(classCode, detailCode))); } } }
/** * Converts the specified integer value to a response code. * * @param value the value * @return the response code * @throws MessageFormatException if the value does not represent a valid response code. */ public static ResponseCode valueOf(final int value) { int codeClass = getCodeClass(value); int codeDetail = getCodeDetail(value); switch (codeClass) { case 2: return valueOfSuccessCode(codeDetail); case 4: return valueOfClientErrorCode(codeDetail); case 5: return valueOfServerErrorCode(codeDetail); default: throw new MessageFormatException(String.format("Not a CoAP response code: %s", formatCode(codeClass, codeDetail))); } }