@Override public void visit(DeregisterRequest request) { if (coapResponse.isError()) { // handle error response: lwM2mresponse = new DeregisterResponse(toLwM2mResponseCode(coapResponse.getCode()), coapResponse.getPayloadString()); } else if (coapResponse.getCode() == org.eclipse.californium.core.coap.CoAP.ResponseCode.DELETED) { // handle success response: lwM2mresponse = DeregisterResponse.success(); } else { // handle unexpected response: handleUnexpectedResponseCode(request, coapResponse); } }
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()); } }