From 3cb400710c38ecaa3300a2f432716b4fb4875182 Mon Sep 17 00:00:00 2001 From: Simon Bernard Date: Tue, 26 Oct 2021 17:33:11 +0200 Subject: [PATCH] server-demo: Add ObjLink write support. --- .../json/JacksonLwM2mNodeDeserializer.java | 15 +++ .../values/input/ObjLinkValueInput.vue | 94 +++++++++++++++++++ .../values/input/SingleValueInput.vue | 9 +- 3 files changed, 117 insertions(+), 1 deletion(-) create mode 100644 leshan-server-demo/webapp/src/components/values/input/ObjLinkValueInput.vue diff --git a/leshan-server-demo/src/main/java/org/eclipse/leshan/server/demo/servlet/json/JacksonLwM2mNodeDeserializer.java b/leshan-server-demo/src/main/java/org/eclipse/leshan/server/demo/servlet/json/JacksonLwM2mNodeDeserializer.java index 48204f044c..dbaa8a8e37 100644 --- a/leshan-server-demo/src/main/java/org/eclipse/leshan/server/demo/servlet/json/JacksonLwM2mNodeDeserializer.java +++ b/leshan-server-demo/src/main/java/org/eclipse/leshan/server/demo/servlet/json/JacksonLwM2mNodeDeserializer.java @@ -32,6 +32,7 @@ import org.eclipse.leshan.core.node.LwM2mResource; import org.eclipse.leshan.core.node.LwM2mResourceInstance; import org.eclipse.leshan.core.node.LwM2mSingleResource; +import org.eclipse.leshan.core.node.ObjectLink; import org.eclipse.leshan.core.util.Hex; import com.fasterxml.jackson.core.JsonParseException; @@ -181,6 +182,20 @@ private Object deserializeValue(JsonNode val, ResourceModel.Type type) { raiseUnexpectedType(val, type, "string", val.getNodeType()); } break; + case OBJLNK: + if (val.isObject()) { + if (val.has("objectId") && val.has("objectInstanceId")) { + JsonNode objectId = val.get("objectId"); + JsonNode objectInstanceId = val.get("objectInstanceId"); + if (objectId.canConvertToInt() && objectId.canConvertToExactIntegral() && // + objectInstanceId.canConvertToInt() && objectInstanceId.canConvertToExactIntegral()) { + return new ObjectLink(objectId.asInt(), objectInstanceId.asInt()); + } + } + } + raiseUnexpectedType(val, type, "object{objectId:integer, objectInstanceId:integer}", val.getNodeType()); + break; + default: break; } diff --git a/leshan-server-demo/webapp/src/components/values/input/ObjLinkValueInput.vue b/leshan-server-demo/webapp/src/components/values/input/ObjLinkValueInput.vue new file mode 100644 index 0000000000..b940e90bd2 --- /dev/null +++ b/leshan-server-demo/webapp/src/components/values/input/ObjLinkValueInput.vue @@ -0,0 +1,94 @@ + + + diff --git a/leshan-server-demo/webapp/src/components/values/input/SingleValueInput.vue b/leshan-server-demo/webapp/src/components/values/input/SingleValueInput.vue index bb75c04463..3afd687898 100644 --- a/leshan-server-demo/webapp/src/components/values/input/SingleValueInput.vue +++ b/leshan-server-demo/webapp/src/components/values/input/SingleValueInput.vue @@ -29,6 +29,12 @@ :value="value" @input="$emit('input', convertValue($event))" /> +