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);