Commit 42dc805339c728cf8fe7136695760ee9cf95de4c

Authored by Andrew Shvayka
Committed by GitHub
2 parents bb8f92b1 6521caf0

Merge pull request #5397 from thingsboard/lwm2m_fix_bug_models_null

[3.3.2]Lwm2m fix bug if model null
@@ -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\"}]}"