@Override public ObserveResponse observe(int resourceid) { // Perform a read by default ReadResponse readResponse = this.read(resourceid); return new ObserveResponse(readResponse.getCode(), readResponse.getContent(), null, null, readResponse.getErrorMessage()); }
public static ReadResponse internalServerError(String errorMessage) { return new ReadResponse(ResponseCode.INTERNAL_SERVER_ERROR, null, errorMessage); } }
public static boolean isBootstrapServer(LwM2mInstanceEnabler instance) { ReadResponse response = instance.read(LwM2mId.SEC_BOOTSTRAP); if (response == null || response.isFailure()) { return false; } LwM2mResource isBootstrap = (LwM2mResource) response.getContent(); return (Boolean) isBootstrap.getValue(); } }
@Override public JsonElement serialize(LwM2mResponse src, Type typeOfSrc, JsonSerializationContext context) { JsonObject element = new JsonObject(); element.addProperty("status", src.getCode().toString()); element.addProperty("valid", src.isValid()); element.addProperty("success", src.isSuccess()); element.addProperty("failure", src.isFailure()); if (typeOfSrc instanceof Class<?>) { if (ReadResponse.class.isAssignableFrom((Class<?>) typeOfSrc)) { element.add("content", context.serialize(((ReadResponse) src).getContent())); } else if (DiscoverResponse.class.isAssignableFrom((Class<?>) typeOfSrc)) { element.add("objectLinks", context.serialize(((DiscoverResponse) src).getObjectLinks())); } } return element; } }
LwM2mObjectInstance getLwM2mObjectInstance(int instanceid, LwM2mInstanceEnabler instance, ServerIdentity identity, boolean observe) { List<LwM2mResource> resources = new ArrayList<>(); for (ResourceModel resourceModel : getObjectModel().resources.values()) { // check, if internal request (SYSTEM) or readable if (identity.isSystem() || resourceModel.operations.isReadable()) { if (observe) { ObserveResponse response = instance.observe(resourceModel.id); if (response.getCode() == ResponseCode.CONTENT && response.getContent() instanceof LwM2mResource) resources.add((LwM2mResource) response.getContent()); } else { ReadResponse response = instance.read(resourceModel.id); if (response.getCode() == ResponseCode.CONTENT && response.getContent() instanceof LwM2mResource) resources.add((LwM2mResource) response.getContent()); } } } return new LwM2mObjectInstance(instanceid, resources); }
@Override public ReadResponse read(int resourceid) { switch (resourceid) { case 0: // manufacturer return ReadResponse.success(resourceid, manufacturer); case 1: // model number return ReadResponse.success(resourceid, modelNumber); case 2: // serial number return ReadResponse.success(resourceid, serialNumber); case 11: // error codes return ReadResponse.success(resourceid, new HashMap<Integer, Integer>(), Type.INTEGER); case 14: // utc offset return ReadResponse.success(resourceid, utcOffset); case 15: // timezone return ReadResponse.success(resourceid, timezone); case 16: // supported binding and modes return ReadResponse.success(resourceid, supportedBinding); default: return super.read(resourceid); } }
@Override public boolean isSuccess() { return getCode() == ResponseCode.CONTENT; }
protected ReadResponse doRead(ServerIdentity identity, ReadRequest request) { // This should be a not implemented error, but this is not defined in the spec. return ReadResponse.internalServerError("not implemented"); }
@Override public String getIdentity(InetSocketAddress inetAddress) { if (inetAddress == null) return null; LwM2mObject securities = (LwM2mObject) securityEnabler.read(SYSTEM, new ReadRequest(SECURITY)).getContent(); for (LwM2mObjectInstance security : securities.getInstances().values()) { long securityMode = (long) security.getResource(SEC_SECURITY_MODE).getValue(); if (securityMode == SecurityMode.PSK.code) { try { URI uri = new URI((String) security.getResource(SEC_SERVER_URI).getValue()); if (inetAddress.equals(ServerInfo.getAddress(uri))) { byte[] pskIdentity = (byte[]) security.getResource(SEC_PUBKEY_IDENTITY).getValue(); return new String(pskIdentity); } } catch (URISyntaxException e) { LOG.error(String.format("Invalid URI %s", (String) security.getResource(SEC_SERVER_URI).getValue()), e); } } } return null; }
@Override public ReadResponse read(int resourceid) { // only accessible for internal read? switch (resourceid) { case SEC_SERVER_URI: // server uri return ReadResponse.success(resourceid, serverUri); case SEC_BOOTSTRAP: // is bootstrap server? return ReadResponse.success(resourceid, bootstrapServer); case SEC_SECURITY_MODE: // security mode return ReadResponse.success(resourceid, securityMode); case SEC_PUBKEY_IDENTITY: // public key or identity return ReadResponse.success(resourceid, publicKeyOrIdentity); case SEC_SERVER_PUBKEY: // server public key return ReadResponse.success(resourceid, serverPublicKey); case SEC_SECRET_KEY: // secret key return ReadResponse.success(resourceid, secretKey); case SEC_SERVER_ID: // short server id return ReadResponse.success(resourceid, shortServerId); default: return super.read(resourceid); } }
protected ObserveResponse doObserve(ServerIdentity identity, ObserveRequest request) { ReadResponse readResponse = this.read(identity, new ReadRequest(request.getPath().toString())); return new ObserveResponse(readResponse.getCode(), readResponse.getContent(), null, null, readResponse.getErrorMessage()); }
public static ReadResponse unauthorized() { return new ReadResponse(ResponseCode.UNAUTHORIZED, null, null); }
@Override public byte[] getKey(String identity) { if (identity == null) return null; byte[] res = null; LwM2mObject securities = (LwM2mObject) securityEnabler.read(SYSTEM, new ReadRequest(SECURITY)).getContent(); for (LwM2mObjectInstance security : securities.getInstances().values()) { long securityMode = (long) security.getResource(SEC_SECURITY_MODE).getValue(); if (securityMode == SecurityMode.PSK.code) // psk { byte[] pskIdentity = (byte[]) security.getResource(SEC_PUBKEY_IDENTITY).getValue(); if (Arrays.equals(identity.getBytes(), pskIdentity)) { if (res == null) { // we continue to check if the is duplication res = (byte[]) security.getResource(SEC_SECRET_KEY).getValue(); } else { LOG.warn("There is several security object instance with the same psk identity : '{}'", identity); // we find 1 duplication and warn for it no need to continue. return res; } } } } return res; }
@Override public ReadResponse read(int resourceid) { switch (resourceid) { case 0: // short server ID return ReadResponse.success(resourceid, shortServerId); case 1: // lifetime return ReadResponse.success(resourceid, lifetime); case 2: // default min period if (null == defaultMinPeriod) return ReadResponse.notFound(); return ReadResponse.success(resourceid, defaultMinPeriod); case 3: // default max period if (null == defaultMaxPeriod) return ReadResponse.notFound(); return ReadResponse.success(resourceid, defaultMaxPeriod); case 6: // notification storing when disable or offline return ReadResponse.success(resourceid, notifyWhenDisable); case 7: // binding return ReadResponse.success(resourceid, binding.toString()); default: return super.read(resourceid); } }
@Override public synchronized ReadResponse read(int resourceId) { switch (resourceId) { case MIN_MEASURED_VALUE: return ReadResponse.success(resourceId, getTwoDigitValue(minMeasuredValue)); case MAX_MEASURED_VALUE: return ReadResponse.success(resourceId, getTwoDigitValue(maxMeasuredValue)); case SENSOR_VALUE: return ReadResponse.success(resourceId, getTwoDigitValue(currentTemp)); case UNITS: return ReadResponse.success(resourceId, UNIT_CELSIUS); default: return super.read(resourceId); } }
ReadRequest readRequest = new ReadRequest(URI); ReadResponse response = nodeEnabler.read(identity, readRequest); if (response.getCode() == org.eclipse.leshan.ResponseCode.CONTENT) { LwM2mPath path = new LwM2mPath(URI); LwM2mNode content = response.getContent(); LwM2mModel model = new LwM2mModel(nodeEnabler.getObjectModel()); ContentFormat format = getContentFormat(readRequest, requestedContentFormat); return; } else { exchange.respond(toCoapResponseCode(response.getCode()), response.getErrorMessage()); return;
public static ReadResponse notFound() { return new ReadResponse(ResponseCode.NOT_FOUND, null, null); }
LwM2mObject securities = (LwM2mObject) securityEnabler.read(SYSTEM, new ReadRequest(SECURITY)).getContent(); LwM2mObject servers = (LwM2mObject) serverEnabler.read(SYSTEM, new ReadRequest(SERVER)).getContent();
@Override protected ReadResponse doRead(ServerIdentity identity, ReadRequest request) { LwM2mPath path = request.getPath(); // Manage Object case if (path.isObject()) { List<LwM2mObjectInstance> lwM2mObjectInstances = new ArrayList<>(); for (Entry<Integer, LwM2mInstanceEnabler> entry : instances.entrySet()) { lwM2mObjectInstances.add(getLwM2mObjectInstance(entry.getKey(), entry.getValue(), identity, false)); } return ReadResponse.success(new LwM2mObject(getId(), lwM2mObjectInstances)); } // Manage Instance case LwM2mInstanceEnabler instance = instances.get(path.getObjectInstanceId()); if (instance == null) return ReadResponse.notFound(); if (path.getResourceId() == null) { return ReadResponse.success(getLwM2mObjectInstance(path.getObjectInstanceId(), instance, identity, false)); } // Manage Resource case return instance.read(path.getResourceId()); }