From 7ea6c7163a48dea51e82b474c035a96c136557f2 Mon Sep 17 00:00:00 2001
From: nickAS21 <44275303+nickAS21@users.noreply.github.com>
Date: Tue, 23 Mar 2021 15:17:56 +0200
Subject: [PATCH] lwm2m: back transport newKey fix bug object id=19 (#4291)
---
.../lwm2m/server/LwM2mTransportRequest.java | 6 ++++--
.../lwm2m/server/LwM2mTransportServiceImpl.java | 16 +++++++---------
.../lwm2m/utils/LwM2mValueConverterImpl.java | 4 +++-
3 files changed, 14 insertions(+), 12 deletions(-)
diff --git a/common/transport/lwm2m/src/main/java/org/thingsboard/server/transport/lwm2m/server/LwM2mTransportRequest.java b/common/transport/lwm2m/src/main/java/org/thingsboard/server/transport/lwm2m/server/LwM2mTransportRequest.java
index 094474d9c0..577d69ef5e 100644
--- a/common/transport/lwm2m/src/main/java/org/thingsboard/server/transport/lwm2m/server/LwM2mTransportRequest.java
+++ b/common/transport/lwm2m/src/main/java/org/thingsboard/server/transport/lwm2m/server/LwM2mTransportRequest.java
@@ -151,11 +151,13 @@ public class LwM2mTransportRequest {
case POST_TYPE_OPER_WRITE_REPLACE:
// Request to write a String Single-Instance Resource using the TLV content format.
if (resource != null && contentFormat != null) {
- if (contentFormat.equals(ContentFormat.TLV) && !resource.multiple) {
+// if (contentFormat.equals(ContentFormat.TLV) && !resource.multiple) {
+ if (contentFormat.equals(ContentFormat.TLV)) {
request = this.getWriteRequestSingleResource(null, resultIds.getObjectId(), resultIds.getObjectInstanceId(), resultIds.getResourceId(), params, resource.type, registration);
}
// Mode.REPLACE && Request to write a String Single-Instance Resource using the given content format (TEXT, TLV, JSON)
- else if (!contentFormat.equals(ContentFormat.TLV) && !resource.multiple) {
+// else if (!contentFormat.equals(ContentFormat.TLV) && !resource.multiple) {
+ else if (!contentFormat.equals(ContentFormat.TLV)) {
request = this.getWriteRequestSingleResource(contentFormat, resultIds.getObjectId(), resultIds.getObjectInstanceId(), resultIds.getResourceId(), params, resource.type, registration);
}
}
diff --git a/common/transport/lwm2m/src/main/java/org/thingsboard/server/transport/lwm2m/server/LwM2mTransportServiceImpl.java b/common/transport/lwm2m/src/main/java/org/thingsboard/server/transport/lwm2m/server/LwM2mTransportServiceImpl.java
index 6fcfeaa4e6..8084f78544 100644
--- a/common/transport/lwm2m/src/main/java/org/thingsboard/server/transport/lwm2m/server/LwM2mTransportServiceImpl.java
+++ b/common/transport/lwm2m/src/main/java/org/thingsboard/server/transport/lwm2m/server/LwM2mTransportServiceImpl.java
@@ -549,7 +549,7 @@ public class LwM2mTransportServiceImpl implements LwM2mTransportService {
*/
private boolean validatePathInAttrProfile(LwM2mClientProfile clientProfile, String path) {
try {
- List attributesSet = new Gson().fromJson(clientProfile.getPostAttributeProfile(), new TypeToken<>() {
+ List attributesSet = new Gson().fromJson(clientProfile.getPostAttributeProfile(), new TypeToken>() {
}.getType());
return attributesSet.stream().anyMatch(p -> p.equals(path));
} catch (Exception e) {
@@ -565,7 +565,7 @@ public class LwM2mTransportServiceImpl implements LwM2mTransportService {
*/
private boolean validatePathInTelemetryProfile(LwM2mClientProfile clientProfile, String path) {
try {
- List telemetriesSet = new Gson().fromJson(clientProfile.getPostTelemetryProfile(), new TypeToken<>() {
+ List telemetriesSet = new Gson().fromJson(clientProfile.getPostTelemetryProfile(), new TypeToken>() {
}.getType());
return telemetriesSet.stream().anyMatch(p -> p.equals(path));
} catch (Exception e) {
@@ -821,10 +821,8 @@ public class LwM2mTransportServiceImpl implements LwM2mTransportService {
// #5.1
if (!observeOld.equals(observeNew)) {
- Set observeSetOld = new Gson().fromJson(observeOld, new TypeToken<>() {
- }.getType());
- Set observeSetNew = new Gson().fromJson(observeNew, new TypeToken<>() {
- }.getType());
+ Set observeSetOld = new Gson().fromJson(observeOld, new TypeToken>() {}.getType());
+ Set observeSetNew = new Gson().fromJson(observeNew, new TypeToken>() {}.getType());
//#5.2 add
// path Attr/Telemetry includes newObserve
attributeSetOld.addAll(telemetrySetOld);
@@ -846,7 +844,7 @@ public class LwM2mTransportServiceImpl implements LwM2mTransportService {
}
private Set convertJsonArrayToSet(JsonArray jsonArray) {
- List attributeListOld = new Gson().fromJson(jsonArray, new TypeToken<>() {
+ List attributeListOld = new Gson().fromJson(jsonArray, new TypeToken>() {
}.getType());
return Sets.newConcurrentHashSet(attributeListOld);
}
@@ -886,7 +884,7 @@ public class LwM2mTransportServiceImpl implements LwM2mTransportService {
*/
private void readResourceValueObserve(Registration registration, Set targets, String typeOper) {
targets.forEach(target -> {
- LwM2mPath pathIds = new LwM2mPath(target);
+ LwM2mPath pathIds = new LwM2mPath(convertToObjectIdFromIdVer(target));
if (pathIds.isResource()) {
if (GET_TYPE_OPER_READ.equals(typeOper)) {
lwM2mTransportRequest.sendAllRequest(registration, target, typeOper,
@@ -913,7 +911,7 @@ public class LwM2mTransportServiceImpl implements LwM2mTransportService {
LwM2mClient lwM2MClient = lwM2mClientContext.getLwM2mClientWithReg(registration, null);
paramAnallyzer.forEach(p -> {
if (this.returnResourceValueFromLwM2MClient(lwM2MClient, p) != null) {
- this.setCancelObservationRecourse(registration, p);
+ this.setCancelObservationRecourse(registration, convertToObjectIdFromIdVer(p));
}
}
);
diff --git a/common/transport/lwm2m/src/main/java/org/thingsboard/server/transport/lwm2m/utils/LwM2mValueConverterImpl.java b/common/transport/lwm2m/src/main/java/org/thingsboard/server/transport/lwm2m/utils/LwM2mValueConverterImpl.java
index 85283749dc..0faa20952e 100644
--- a/common/transport/lwm2m/src/main/java/org/thingsboard/server/transport/lwm2m/utils/LwM2mValueConverterImpl.java
+++ b/common/transport/lwm2m/src/main/java/org/thingsboard/server/transport/lwm2m/utils/LwM2mValueConverterImpl.java
@@ -145,6 +145,8 @@ public class LwM2mValueConverterImpl implements LwM2mValueConverter {
}
DateFormat formatter = new SimpleDateFormat(DATE_FORMAT);
return formatter.format(new Date(timeValue));
+ case OPAQUE:
+ return Hex.encodeHexString((byte[])value);
default:
break;
}
@@ -155,7 +157,7 @@ public class LwM2mValueConverterImpl implements LwM2mValueConverter {
log.debug("Trying to convert hexadecimal string [{}] to byte array", value);
// TODO check if we shouldn't instead assume that the string contains Base64 encoded data
try {
- return Hex.decodeHex(((String) value).toCharArray());
+ return Hex.decodeHex(((String)value).toCharArray());
} catch (IllegalArgumentException e) {
throw new CodecException("Unable to convert hexastring [%s] to byte array for resource %s", value,
resourcePath);