@Override public boolean isSuccess() { return getCode() == ResponseCode.DELETED; }
public static BootstrapDeleteResponse internalServerError(String errorMessage) { return new BootstrapDeleteResponse(ResponseCode.INTERNAL_SERVER_ERROR, errorMessage); } }
public BootstrapDeleteResponse doDelete(BootstrapDeleteRequest request) { // This should be a not implemented error, but this is not defined in the spec. return BootstrapDeleteResponse.internalServerError("not implemented"); }
@Override public void handleDELETE(CoapExchange exchange) { if (!StringUtils.isEmpty(exchange.getRequestOptions().getUriPathString())) { exchange.respond(ResponseCode.METHOD_NOT_ALLOWED); return; } ServerIdentity identity = ResourceUtil.extractServerIdentity(exchange, bootstrapHandler); BootstrapDeleteResponse response = bootstrapHandler.delete(identity, new BootstrapDeleteRequest()); exchange.respond(toCoapResponseCode(response.getCode()), response.getErrorMessage()); } }
instances.put(bootstrapServerAccount.getKey(), bootstrapServerAccount.getValue()); return BootstrapDeleteResponse.success(); } else { instances.clear(); return BootstrapDeleteResponse.success(); return BootstrapDeleteResponse.badRequest("bootstrap server can not be deleted"); return BootstrapDeleteResponse.success(); } else { return BootstrapDeleteResponse.badRequest(String.format("Instance %s not found", request.getPath())); return BootstrapDeleteResponse.badRequest(String.format("unexcepted path %s", request.getPath()));
@Override public synchronized BootstrapDeleteResponse delete(ServerIdentity identity, BootstrapDeleteRequest request) { if (!identity.isSystem()) { if (id == LwM2mId.DEVICE) { return BootstrapDeleteResponse.badRequest("Device object instance is not deletable"); } } return doDelete(request); }
@Override public void handleDELETE(CoapExchange coapExchange) { // Manage Delete Request String URI = coapExchange.getRequestOptions().getUriPathString(); ServerIdentity identity = extractServerIdentity(coapExchange, bootstrapHandler); if (identity.isLwm2mBootstrapServer()) { BootstrapDeleteResponse response = nodeEnabler.delete(identity, new BootstrapDeleteRequest(URI)); if (response.getCode().isError()) { coapExchange.respond(toCoapResponseCode(response.getCode()), response.getErrorMessage()); } else { coapExchange.respond(toCoapResponseCode(response.getCode())); } } else { DeleteResponse response = nodeEnabler.delete(identity, new DeleteRequest(URI)); if (response.getCode().isError()) { coapExchange.respond(toCoapResponseCode(response.getCode()), response.getErrorMessage()); } else { coapExchange.respond(toCoapResponseCode(response.getCode())); } } }
public synchronized BootstrapDeleteResponse delete(ServerIdentity identity, BootstrapDeleteRequest deleteRequest) { if (bootstrapping) { // Only if the request is from the bootstrap server if (!isBootstrapServer(identity)) { return BootstrapDeleteResponse.badRequest("not from a bootstrap server"); } // The spec say that delete on "/" should delete all the existing Object Instances - except LWM2M // Bootstrap Server Account, (see 5.2.5.2 Bootstrap Delete) // For now we only remove security and server object. // Delete all device management server LwM2mObjectEnabler serverObject = objects.get(SERVER); for (Integer instanceId : serverObject.getAvailableInstanceIds()) { serverObject.delete(identity, new DeleteRequest(SERVER, instanceId)); } // Delete all security instance (except bootstrap one) // TODO do not delete bootstrap server (see 5.2.5.2 Bootstrap Delete) LwM2mObjectEnabler securityObject = objects.get(SECURITY); for (Integer instanceId : securityObject.getAvailableInstanceIds()) { securityObject.delete(identity, new DeleteRequest(SECURITY, instanceId)); } return BootstrapDeleteResponse.success(); } else { return BootstrapDeleteResponse.badRequest("no pending bootstrap session"); } }
@Override public void onResponse(BootstrapDeleteResponse response) { LOG.trace("Bootstrap delete {} return code {}", session.getEndpoint(), response.getCode()); List<Integer> toSend = new ArrayList<>(cfg.security.keySet()); sendBootstrap(session, cfg, toSend); } }, new ErrorCallback() {
public static BootstrapDeleteResponse success() { return new BootstrapDeleteResponse(ResponseCode.DELETED, null); }
public static BootstrapDeleteResponse badRequest(String errorMessage) { return new BootstrapDeleteResponse(ResponseCode.BAD_REQUEST, errorMessage); }
@Override public void visit(BootstrapDeleteRequest request) { if (coapResponse.isError()) { // handle error response: lwM2mresponse = new BootstrapDeleteResponse(toLwM2mResponseCode(coapResponse.getCode()), coapResponse.getPayloadString(), coapResponse); } else if (coapResponse.getCode() == org.eclipse.californium.core.coap.CoAP.ResponseCode.DELETED) { // handle success response: lwM2mresponse = new BootstrapDeleteResponse(ResponseCode.DELETED, null, coapResponse); } else { // handle unexpected response: handleUnexpectedResponseCode(registration.getEndpoint(), request, coapResponse); } }