Commit 42dc805339c728cf8fe7136695760ee9cf95de4c
Committed by
GitHub
Merge pull request #5397 from thingsboard/lwm2m_fix_bug_models_null
[3.3.2]Lwm2m fix bug if model null
Showing
2 changed files
with
18 additions
and
7 deletions
@@ -95,7 +95,7 @@ public class LwM2mVersionedModelProvider implements LwM2mModelProvider { | @@ -95,7 +95,7 @@ public class LwM2mVersionedModelProvider implements LwM2mModelProvider { | ||
95 | if (objectModel != null) | 95 | if (objectModel != null) |
96 | return objectModel.resources.get(resourceId); | 96 | return objectModel.resources.get(resourceId); |
97 | else | 97 | else |
98 | - log.trace("TbResources (Object model) with id [{}/0/{}] not found on the server", objectId, resourceId); | 98 | + log.trace("Tenant hasn't such the TbResources: Object model with id [{}/0/{}].", objectId, resourceId); |
99 | return null; | 99 | return null; |
100 | } catch (Exception e) { | 100 | } catch (Exception e) { |
101 | log.error("", e); | 101 | log.error("", e); |
@@ -128,14 +128,17 @@ public class LwM2mVersionedModelProvider implements LwM2mModelProvider { | @@ -128,14 +128,17 @@ public class LwM2mVersionedModelProvider implements LwM2mModelProvider { | ||
128 | private ObjectModel getObjectModelDynamic(Integer objectId, String version) { | 128 | private ObjectModel getObjectModelDynamic(Integer objectId, String version) { |
129 | String key = getKeyIdVer(objectId, version); | 129 | String key = getKeyIdVer(objectId, version); |
130 | ObjectModel objectModel = models.get(tenantId).get(key); | 130 | ObjectModel objectModel = models.get(tenantId).get(key); |
131 | - | ||
132 | if (objectModel == null) { | 131 | if (objectModel == null) { |
133 | modelsLock.lock(); | 132 | modelsLock.lock(); |
134 | try { | 133 | try { |
135 | objectModel = models.get(tenantId).get(key); | 134 | objectModel = models.get(tenantId).get(key); |
136 | if (objectModel == null) { | 135 | if (objectModel == null) { |
137 | objectModel = getObjectModel(key); | 136 | objectModel = getObjectModel(key); |
137 | + } | ||
138 | + if (objectModel != null) { | ||
138 | models.get(tenantId).put(key, objectModel); | 139 | models.get(tenantId).put(key, objectModel); |
140 | + } else { | ||
141 | + log.error("Tenant hasn't such the resource: Object model with id [{}] version [{}].", objectId, version); | ||
139 | } | 142 | } |
140 | } finally { | 143 | } finally { |
141 | modelsLock.unlock(); | 144 | modelsLock.unlock(); |
@@ -186,6 +186,9 @@ public class DefaultLwM2mDownlinkMsgHandler extends LwM2MExecutorAwareService im | @@ -186,6 +186,9 @@ public class DefaultLwM2mDownlinkMsgHandler extends LwM2MExecutorAwareService im | ||
186 | } | 186 | } |
187 | sendSimpleRequest(client, downlink, request.getTimeout(), callback); | 187 | sendSimpleRequest(client, downlink, request.getTimeout(), callback); |
188 | } | 188 | } |
189 | + else { | ||
190 | + callback.onValidationError(toString(request), "Tenant hasn't such the TbResources: " + request.getVersionedId() + "!"); | ||
191 | + } | ||
189 | } | 192 | } |
190 | 193 | ||
191 | @Override | 194 | @Override |
@@ -245,7 +248,7 @@ public class DefaultLwM2mDownlinkMsgHandler extends LwM2MExecutorAwareService im | @@ -245,7 +248,7 @@ public class DefaultLwM2mDownlinkMsgHandler extends LwM2MExecutorAwareService im | ||
245 | callback.onError(toString(request), e); | 248 | callback.onError(toString(request), e); |
246 | } | 249 | } |
247 | } else { | 250 | } else { |
248 | - callback.onValidationError(toString(request), "Resource " + request.getVersionedId() + " is not configured in the device profile!"); | 251 | + callback.onValidationError(toString(request), "Tenant hasn't such the TbResources: " + request.getVersionedId() + "!"); |
249 | } | 252 | } |
250 | } | 253 | } |
251 | 254 | ||
@@ -271,10 +274,15 @@ public class DefaultLwM2mDownlinkMsgHandler extends LwM2MExecutorAwareService im | @@ -271,10 +274,15 @@ public class DefaultLwM2mDownlinkMsgHandler extends LwM2MExecutorAwareService im | ||
271 | **/ | 274 | **/ |
272 | Collection<LwM2mResource> resources = client.getNewResourceForInstance(request.getVersionedId(), request.getValue(), modelProvider, this.converter); | 275 | Collection<LwM2mResource> resources = client.getNewResourceForInstance(request.getVersionedId(), request.getValue(), modelProvider, this.converter); |
273 | ResourceModel resourceModelWrite = client.getResourceModel(request.getVersionedId(), modelProvider); | 276 | ResourceModel resourceModelWrite = client.getResourceModel(request.getVersionedId(), modelProvider); |
274 | - ContentFormat contentFormat = request.getObjectContentFormat() != null ? request.getObjectContentFormat() : convertResourceModelTypeToContentFormat(client, resourceModelWrite.type); | ||
275 | - WriteRequest downlink = new WriteRequest(WriteRequest.Mode.UPDATE, contentFormat, resultIds.getObjectId(), | ||
276 | - resultIds.getObjectInstanceId(), resources); | ||
277 | - sendSimpleRequest(client, downlink, request.getTimeout(), callback); | 277 | + if (resourceModelWrite != null) { |
278 | + ContentFormat contentFormat = request.getObjectContentFormat() != null ? request.getObjectContentFormat() : convertResourceModelTypeToContentFormat(client, resourceModelWrite.type); | ||
279 | + WriteRequest downlink = new WriteRequest(WriteRequest.Mode.UPDATE, contentFormat, resultIds.getObjectId(), | ||
280 | + resultIds.getObjectInstanceId(), resources); | ||
281 | + sendSimpleRequest(client, downlink, request.getTimeout(), callback); | ||
282 | + } | ||
283 | + else { | ||
284 | + callback.onValidationError(toString(request), "Tenant hasn't such the TbResources: " + request.getVersionedId() + " !"); | ||
285 | + } | ||
278 | } else if (resultIds.isObjectInstance()) { | 286 | } else if (resultIds.isObjectInstance()) { |
279 | /* | 287 | /* |
280 | * params = "{\"id\":0,\"resources\":[{\"id\":14,\"value\":\"+5\"},{\"id\":15,\"value\":\"+9\"}]}" | 288 | * params = "{\"id\":0,\"resources\":[{\"id\":14,\"value\":\"+5\"},{\"id\":15,\"value\":\"+9\"}]}" |