diff --git a/common/transport/lwm2m/src/main/java/org/thingsboard/server/transport/lwm2m/server/client/LwM2mClient.java b/common/transport/lwm2m/src/main/java/org/thingsboard/server/transport/lwm2m/server/client/LwM2mClient.java index e267561cd2..405050bd71 100644 --- a/common/transport/lwm2m/src/main/java/org/thingsboard/server/transport/lwm2m/server/client/LwM2mClient.java +++ b/common/transport/lwm2m/src/main/java/org/thingsboard/server/transport/lwm2m/server/client/LwM2mClient.java @@ -24,7 +24,6 @@ import org.eclipse.leshan.core.LwM2m; import org.eclipse.leshan.core.LwM2m.Version; import org.eclipse.leshan.core.link.Link; import org.eclipse.leshan.core.link.attributes.Attribute; -import org.eclipse.leshan.core.link.lwm2m.MixedLwM2mLink; import org.eclipse.leshan.core.model.ObjectModel; import org.eclipse.leshan.core.model.ResourceModel; import org.eclipse.leshan.core.node.LwM2mMultipleResource; @@ -211,11 +210,14 @@ public class LwM2mClient { } private LwM2m.Version getObjectIDVerFromDeviceProfile(DeviceProfile deviceProfile) { - String defaultObjectIdVer = ((Lwm2mDeviceProfileTransportConfiguration)deviceProfile - .getProfileData() - .getTransportConfiguration()) - .getClientLwM2mSettings() - .getDefaultObjectIDVer(); + String defaultObjectIdVer = null; + if (deviceProfile != null) { + defaultObjectIdVer = ((Lwm2mDeviceProfileTransportConfiguration) deviceProfile + .getProfileData() + .getTransportConfiguration()) + .getClientLwM2mSettings() + .getDefaultObjectIDVer(); + } return new Version(defaultObjectIdVer == null ? LWM2M_OBJECT_VERSION_DEFAULT : defaultObjectIdVer); } @@ -454,20 +456,17 @@ public class LwM2mClient { private void setSupportedClientObjects(){ this.supportedClientObjects = new ConcurrentHashMap<>(); for (Link link: this.registration.getSortedObjectLinks()) { - MixedLwM2mLink mixedLwM2mLink = (MixedLwM2mLink)link; - if(!mixedLwM2mLink.getPath().isRoot()){ - LwM2mPath lwM2mPath = mixedLwM2mLink.getPath(); - if (lwM2mPath.isObject()) { - LwM2m.Version ver; - if (mixedLwM2mLink.getAttributes().get("ver")!= null) { - ver = (Version) mixedLwM2mLink.getAttributes().get("ver").getValue(); - } else { - ver = getDefaultObjectIDVer(); - } - this.supportedClientObjects.put(lwM2mPath.getObjectId(), ver); - } else if (this.supportedClientObjects.get(lwM2mPath.getObjectId()) == null){ - this.supportedClientObjects.put(lwM2mPath.getObjectId(), getDefaultObjectIDVer()); + LwM2mPath lwM2mPath = new LwM2mPath(link.getUriReference()); + if (lwM2mPath.isObject()) { + LwM2m.Version ver; + if (link.getAttributes().get("ver")!= null) { + ver = (Version) link.getAttributes().get("ver").getValue(); + } else { + ver = getDefaultObjectIDVer(); } + this.supportedClientObjects.put(lwM2mPath.getObjectId(), ver); + } else if (this.supportedClientObjects.get(lwM2mPath.getObjectId()) == null){ + this.supportedClientObjects.put(lwM2mPath.getObjectId(), getDefaultObjectIDVer()); } } } diff --git a/common/transport/lwm2m/src/main/java/org/thingsboard/server/transport/lwm2m/server/store/util/LwM2MClientSerDes.java b/common/transport/lwm2m/src/main/java/org/thingsboard/server/transport/lwm2m/server/store/util/LwM2MClientSerDes.java index 21cdc356a4..8cafc2bfd0 100644 --- a/common/transport/lwm2m/src/main/java/org/thingsboard/server/transport/lwm2m/server/store/util/LwM2MClientSerDes.java +++ b/common/transport/lwm2m/src/main/java/org/thingsboard/server/transport/lwm2m/server/store/util/LwM2MClientSerDes.java @@ -23,6 +23,7 @@ import com.google.gson.JsonObject; import com.google.gson.JsonParser; import com.google.protobuf.util.JsonFormat; import lombok.SneakyThrows; +import org.eclipse.leshan.core.LwM2m.Version; import org.eclipse.leshan.core.model.ResourceModel; import org.eclipse.leshan.core.node.LwM2mMultipleResource; import org.eclipse.leshan.core.node.LwM2mNodeException; @@ -345,7 +346,7 @@ public class LwM2MClientSerDes { if (defaultObjectIDVer != null) { Field defaultObjectIDVerField = lwM2mClientClass.getDeclaredField("defaultObjectIDVer"); defaultObjectIDVerField.setAccessible(true); - defaultObjectIDVerField.set(lwM2mClient, defaultObjectIDVer.getAsString()); + defaultObjectIDVerField.set(lwM2mClient, new Version(defaultObjectIDVer.getAsString())); } JsonElement registration = o.get("registration");