Browse Source

fix(iot-hub): fix device register endpoint JSON deserialization

Accept JsonNode and use JacksonUtil.treeToValue() instead of direct
@RequestBody DeviceInstalledItemDescriptor. The @JsonTypeInfo on the
parent interface caused Spring's message converter to fail when
deserializing the concrete class directly.
pull/15347/head
Andrii Shvaika 6 months ago
parent
commit
6e8e57c06d
  1. 4
      application/src/main/java/org/thingsboard/server/controller/IotHubController.java

4
application/src/main/java/org/thingsboard/server/controller/IotHubController.java

@ -31,6 +31,7 @@ import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import org.thingsboard.server.common.data.exception.ThingsboardException; import org.thingsboard.server.common.data.exception.ThingsboardException;
import org.thingsboard.common.util.JacksonUtil;
import org.thingsboard.server.common.data.iot_hub.DeviceInstalledItemDescriptor; import org.thingsboard.server.common.data.iot_hub.DeviceInstalledItemDescriptor;
import org.thingsboard.server.common.data.iot_hub.IotHubInstalledItem; import org.thingsboard.server.common.data.iot_hub.IotHubInstalledItem;
import org.thingsboard.server.common.data.page.PageData; import org.thingsboard.server.common.data.page.PageData;
@ -70,7 +71,8 @@ public class IotHubController extends BaseController {
@ResponseBody @ResponseBody
public InstallItemVersionResult registerDeviceInstall( public InstallItemVersionResult registerDeviceInstall(
@RequestParam String versionId, @RequestParam String versionId,
@RequestBody DeviceInstalledItemDescriptor descriptor) throws ThingsboardException { @RequestBody JsonNode body) throws ThingsboardException {
DeviceInstalledItemDescriptor descriptor = JacksonUtil.treeToValue(body, DeviceInstalledItemDescriptor.class);
return iotHubService.registerDeviceInstall(getCurrentUser(), versionId, descriptor); return iotHubService.registerDeviceInstall(getCurrentUser(), versionId, descriptor);
} }

Loading…
Cancel
Save