/** * 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 testGetDefaultPort() { assertThat(CoAP.getDefaultPort(CoAP.COAP_SECURE_TCP_URI_SCHEME), is(CoAP.DEFAULT_COAP_SECURE_PORT)); assertThat(CoAP.getDefaultPort(CoAP.COAP_SECURE_URI_SCHEME), is(CoAP.DEFAULT_COAP_SECURE_PORT)); assertThat(CoAP.getDefaultPort(CoAP.COAP_TCP_URI_SCHEME), is(CoAP.DEFAULT_COAP_PORT)); assertThat(CoAP.getDefaultPort(CoAP.COAP_URI_SCHEME), is(CoAP.DEFAULT_COAP_PORT)); }
public static int toLwM2mCode(int coapCode) { int codeClass = CoAP.getCodeClass(coapCode); int codeDetail = CoAP.getCodeDetail(coapCode); return codeClass * 100 + codeDetail; }
public boolean expectMID(Message message) { int rawCode = message.getRawCode(); if (CoAP.isEmptyMessage(rawCode)) { if (null != emptyExpectation) { return emptyExpectation.expectMID(message); } } else if (CoAP.isRequest(rawCode)) { if (null != requestExpectation) { return requestExpectation.expectMID(message); } } else if (CoAP.isResponse(rawCode)) { if (null != responseExpectation) { return responseExpectation.expectMID(message); } } return false; }
if (CoAP.isSupportedScheme(getScheme())) { if (CoAP.getDefaultPort(getScheme()) == port) { port = -1;
@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)); }
@Test public void testGetCodeClass() { for (Code code : Code.values()) { assertThat(CoAP.getCodeClass(code.value), is(CodeClass.REQUEST.value)); } // success assertThat(CoAP.getCodeClass(ResponseCode.CREATED.value), is(CodeClass.SUCCESS_RESPONSE.value)); assertThat(CoAP.getCodeClass(ResponseCode.CHANGED.value), is(CodeClass.SUCCESS_RESPONSE.value)); assertThat(CoAP.getCodeClass(ResponseCode.CONTINUE.value), is(CodeClass.SUCCESS_RESPONSE.value)); // errors assertThat(CoAP.getCodeClass(ResponseCode.BAD_REQUEST.value), is(CodeClass.ERROR_RESPONSE.value)); assertThat(CoAP.getCodeClass(ResponseCode.UNSUPPORTED_CONTENT_FORMAT.value), is(CodeClass.ERROR_RESPONSE.value)); // server errors assertThat(CoAP.getCodeClass(ResponseCode.INTERNAL_SERVER_ERROR.value), is(CodeClass.SERVER_ERROR_RESPONSE.value)); assertThat(CoAP.getCodeClass(ResponseCode.NOT_IMPLEMENTED.value), is(CodeClass.SERVER_ERROR_RESPONSE.value)); assertThat(CoAP.getCodeClass(ResponseCode.SERVICE_UNAVAILABLE.value), is(CodeClass.SERVER_ERROR_RESPONSE.value)); }
@Test public void testIsResponse() { assertFalse(CoAP.isResponse(MessageFormat.EMPTY_CODE)); assertFalse(CoAP.isResponse(Code.GET.value)); assertTrue(CoAP.isResponse(ResponseCode.CHANGED.value)); }
@Test public void testIsTcPScheme() { assertTrue(CoAP.isTcpScheme(CoAP.COAP_SECURE_TCP_URI_SCHEME)); assertTrue(CoAP.isTcpScheme(CoAP.COAP_TCP_URI_SCHEME)); assertFalse(CoAP.isTcpScheme(CoAP.COAP_URI_SCHEME)); assertFalse(CoAP.isTcpScheme(CoAP.COAP_SECURE_URI_SCHEME)); assertFalse(CoAP.isTcpScheme("http:")); }
@Test public void testIsSupportedScheme() { assertTrue(CoAP.isSupportedScheme(CoAP.COAP_SECURE_TCP_URI_SCHEME)); assertTrue(CoAP.isSupportedScheme(CoAP.COAP_SECURE_URI_SCHEME)); assertTrue(CoAP.isSupportedScheme(CoAP.COAP_TCP_URI_SCHEME)); assertTrue(CoAP.isSupportedScheme(CoAP.COAP_URI_SCHEME)); assertFalse(CoAP.isSupportedScheme("https:")); }
@Test public void testIsEmptyMessage() { assertTrue(CoAP.isEmptyMessage(MessageFormat.EMPTY_CODE)); assertFalse(CoAP.isEmptyMessage(Code.GET.value)); assertFalse(CoAP.isEmptyMessage(ResponseCode.CHANGED.value)); }
@Test public void testFormatCode() { // Requests assertThat(CoAP.formatCode(Code.GET.value), is("0.01")); assertThat(CoAP.formatCode(Code.POST.value), is("0.02")); // success assertThat(CoAP.formatCode(ResponseCode.CREATED.value), is("2.01")); assertThat(CoAP.formatCode(ResponseCode.CHANGED.value), is("2.04")); assertThat(CoAP.formatCode(ResponseCode.CONTENT.value), is("2.05")); // errors assertThat(CoAP.formatCode(ResponseCode.BAD_REQUEST.value), is("4.00")); assertThat(CoAP.formatCode(ResponseCode.REQUEST_ENTITY_INCOMPLETE.value), is("4.08")); assertThat(CoAP.formatCode(ResponseCode.REQUEST_ENTITY_TOO_LARGE.value), is("4.13")); assertThat(CoAP.formatCode(ResponseCode.UNSUPPORTED_CONTENT_FORMAT.value), is("4.15")); // server errors assertThat(CoAP.formatCode(ResponseCode.INTERNAL_SERVER_ERROR.value), is("5.00")); assertThat(CoAP.formatCode(ResponseCode.NOT_IMPLEMENTED.value), is("5.01")); assertThat(CoAP.formatCode(ResponseCode.SERVICE_UNAVAILABLE.value), is("5.03")); }
msg.setSourcePort(raw.getPort()); if (CoAP.isRequest(msg.getRawCode())) { } else if (CoAP.isResponse(msg.getRawCode())) { } else if (CoAP.isEmptyMessage(msg.getRawCode())) {
/** * 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))); } } }
if (CoAP.isSupportedScheme(getScheme())) { if (CoAP.getDefaultPort(getScheme()) == port) { port = -1;
@Override public void go(Message msg) throws Exception { if (CoAP.isRequest(msg.getRawCode())) { check((Request) msg); } else { fail("Expected request for " + this + ", but received " + msg); } }
@Override public void go(Message msg) throws Exception { if (CoAP.isResponse(msg.getRawCode())) { check((Response) msg); } else { fail("Expected response for " + this + ", but received " + msg); } }
/** * Reactive Observe cancellation: Cancel the observe relation by forgetting, * which will trigger a RST. For TCP, {{@link #proactiveCancel()} will be * executed. */ public void reactiveCancel() { Request request = this.request; if (CoAP.isTcpScheme(request.getScheme())) { LOGGER.log(Level.INFO, "Change to cancel the observe {0} proactive over TCP.", request.getTokenString()); proactiveCancel(); } else { // cancel old ongoing request cancel(); } }
} else if (!CoAP.isSupportedScheme(uri.getScheme())) { throw new IllegalArgumentException("unsupported URI scheme: " + uri.getScheme()); } else if (uri.getFragment() != null) {