@Override public void handleDELETE(CoapExchange exchange) { LOG.debug("DELETE received : {}", exchange.advanced().getRequest()); List<String> uri = exchange.getRequestOptions().getUriPath(); if (uri != null && uri.size() == 2 && RESOURCE_NAME.equals(uri.get(0))) { DeregisterRequest deregisterRequest = new DeregisterRequest(uri.get(1)); LwM2mResponse deregisterResponse = registrationHandler.deregister(deregisterRequest); exchange.respond(fromLwM2mCode(deregisterResponse.getCode())); if (exchange.advanced().getEndpoint() instanceof SecureEndpoint && deregisterResponse.getCode().equals(org.eclipse.leshan.ResponseCode.DELETED)) { // clean the DTLS Session Request request = exchange.advanced().getRequest(); ((SecureEndpoint) exchange.advanced().getEndpoint()).getDTLSConnector().close( new InetSocketAddress(request.getSource(), request.getSourcePort())); } } else { LOG.debug("Invalid deregistration"); exchange.respond(ResponseCode.NOT_FOUND); } }
@Override public void visit(DeregisterRequest request) { coapRequest = Request.newDelete(); buildRequestSettings(); coapRequest.getOptions().setUriPath(request.getRegistrationId()); }
try { DeregisterResponse response = sender.send(server.getIdentity().getPeerAddress(), server.getIdentity().isSecure(), new DeregisterRequest(registrationID), DEREGISTRATION_TIMEOUT); if (response == null) { registrationID = null;
public SendableResponse<DeregisterResponse> deregister(Identity sender, DeregisterRequest deregisterRequest) { // We must check if the client is using the right identity. Registration registration = registrationService.getById(deregisterRequest.getRegistrationId()); if (registration == null) { return new SendableResponse<>(DeregisterResponse.notFound()); } if (authorizer.isAuthorized(deregisterRequest, registration, sender) == null) { // TODO replace by Forbidden if https://github.com/OpenMobileAlliance/OMA_LwM2M_for_Developers/issues/181 is // closed. return new SendableResponse<>(DeregisterResponse.badRequest("forbidden")); } final Deregistration deregistration = registrationService.getStore() .removeRegistration(deregisterRequest.getRegistrationId()); if (deregistration != null) { LOG.debug("Deregistered client: {}", deregistration.getRegistration()); // Create callback to notify new de-registration Runnable whenSent = new Runnable() { @Override public void run() { registrationService.fireUnregistered(deregistration.getRegistration(), deregistration.getObservations(), null); }; }; return new SendableResponse<>(DeregisterResponse.success(), whenSent); } else { LOG.debug("Invalid deregistration : registration {} not found", registration.getId()); return new SendableResponse<>(DeregisterResponse.notFound()); } }
private void handleDeregister(CoapExchange exchange, String registrationId) { // Get identity Identity sender = extractIdentity(exchange.advanced().getRequest().getSourceContext()); // Create request DeregisterRequest deregisterRequest = new DeregisterRequest(registrationId); // Handle request final SendableResponse<DeregisterResponse> sendableResponse = registrationHandler.deregister(sender, deregisterRequest); DeregisterResponse deregisterResponse = sendableResponse.getResponse(); // Create CoAP Response from LwM2m request if (deregisterResponse.getCode().isError()) { exchange.respond(toCoapResponseCode(deregisterResponse.getCode()), deregisterResponse.getErrorMessage()); } else { exchange.respond(toCoapResponseCode(deregisterResponse.getCode())); } sendableResponse.sent(); }