Browse Source

Merge pull request #5397 from thingsboard/lwm2m_fix_bug_models_null

[3.3.2]Lwm2m fix bug if model null
pull/5457/head
Andrew Shvayka 5 years ago
committed by GitHub
parent
commit
42dc805339
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 7
      common/transport/lwm2m/src/main/java/org/thingsboard/server/transport/lwm2m/server/LwM2mVersionedModelProvider.java
  2. 18
      common/transport/lwm2m/src/main/java/org/thingsboard/server/transport/lwm2m/server/downlink/DefaultLwM2mDownlinkMsgHandler.java

7
common/transport/lwm2m/src/main/java/org/thingsboard/server/transport/lwm2m/server/LwM2mVersionedModelProvider.java

@ -95,7 +95,7 @@ public class LwM2mVersionedModelProvider implements LwM2mModelProvider {
if (objectModel != null) if (objectModel != null)
return objectModel.resources.get(resourceId); return objectModel.resources.get(resourceId);
else else
log.trace("TbResources (Object model) with id [{}/0/{}] not found on the server", objectId, resourceId); log.trace("Tenant hasn't such the TbResources: Object model with id [{}/0/{}].", objectId, resourceId);
return null; return null;
} catch (Exception e) { } catch (Exception e) {
log.error("", e); log.error("", e);
@ -128,14 +128,17 @@ public class LwM2mVersionedModelProvider implements LwM2mModelProvider {
private ObjectModel getObjectModelDynamic(Integer objectId, String version) { private ObjectModel getObjectModelDynamic(Integer objectId, String version) {
String key = getKeyIdVer(objectId, version); String key = getKeyIdVer(objectId, version);
ObjectModel objectModel = models.get(tenantId).get(key); ObjectModel objectModel = models.get(tenantId).get(key);
if (objectModel == null) { if (objectModel == null) {
modelsLock.lock(); modelsLock.lock();
try { try {
objectModel = models.get(tenantId).get(key); objectModel = models.get(tenantId).get(key);
if (objectModel == null) { if (objectModel == null) {
objectModel = getObjectModel(key); objectModel = getObjectModel(key);
}
if (objectModel != null) {
models.get(tenantId).put(key, objectModel); models.get(tenantId).put(key, objectModel);
} else {
log.error("Tenant hasn't such the resource: Object model with id [{}] version [{}].", objectId, version);
} }
} finally { } finally {
modelsLock.unlock(); modelsLock.unlock();

18
common/transport/lwm2m/src/main/java/org/thingsboard/server/transport/lwm2m/server/downlink/DefaultLwM2mDownlinkMsgHandler.java

@ -186,6 +186,9 @@ public class DefaultLwM2mDownlinkMsgHandler extends LwM2MExecutorAwareService im
} }
sendSimpleRequest(client, downlink, request.getTimeout(), callback); sendSimpleRequest(client, downlink, request.getTimeout(), callback);
} }
else {
callback.onValidationError(toString(request), "Tenant hasn't such the TbResources: " + request.getVersionedId() + "!");
}
} }
@Override @Override
@ -245,7 +248,7 @@ public class DefaultLwM2mDownlinkMsgHandler extends LwM2MExecutorAwareService im
callback.onError(toString(request), e); callback.onError(toString(request), e);
} }
} else { } else {
callback.onValidationError(toString(request), "Resource " + request.getVersionedId() + " is not configured in the device profile!"); callback.onValidationError(toString(request), "Tenant hasn't such the TbResources: " + request.getVersionedId() + "!");
} }
} }
@ -271,10 +274,15 @@ public class DefaultLwM2mDownlinkMsgHandler extends LwM2MExecutorAwareService im
**/ **/
Collection<LwM2mResource> resources = client.getNewResourceForInstance(request.getVersionedId(), request.getValue(), modelProvider, this.converter); Collection<LwM2mResource> resources = client.getNewResourceForInstance(request.getVersionedId(), request.getValue(), modelProvider, this.converter);
ResourceModel resourceModelWrite = client.getResourceModel(request.getVersionedId(), modelProvider); ResourceModel resourceModelWrite = client.getResourceModel(request.getVersionedId(), modelProvider);
ContentFormat contentFormat = request.getObjectContentFormat() != null ? request.getObjectContentFormat() : convertResourceModelTypeToContentFormat(client, resourceModelWrite.type); if (resourceModelWrite != null) {
WriteRequest downlink = new WriteRequest(WriteRequest.Mode.UPDATE, contentFormat, resultIds.getObjectId(), ContentFormat contentFormat = request.getObjectContentFormat() != null ? request.getObjectContentFormat() : convertResourceModelTypeToContentFormat(client, resourceModelWrite.type);
resultIds.getObjectInstanceId(), resources); WriteRequest downlink = new WriteRequest(WriteRequest.Mode.UPDATE, contentFormat, resultIds.getObjectId(),
sendSimpleRequest(client, downlink, request.getTimeout(), callback); resultIds.getObjectInstanceId(), resources);
sendSimpleRequest(client, downlink, request.getTimeout(), callback);
}
else {
callback.onValidationError(toString(request), "Tenant hasn't such the TbResources: " + request.getVersionedId() + " !");
}
} else if (resultIds.isObjectInstance()) { } else if (resultIds.isObjectInstance()) {
/* /*
* params = "{\"id\":0,\"resources\":[{\"id\":14,\"value\":\"+5\"},{\"id\":15,\"value\":\"+9\"}]}" * params = "{\"id\":0,\"resources\":[{\"id\":14,\"value\":\"+5\"},{\"id\":15,\"value\":\"+9\"}]}"

Loading…
Cancel
Save