From d66dff3c6c183a3814e71b7ea72ca06724938be5 Mon Sep 17 00:00:00 2001 From: Oleksandra Matviienko Date: Mon, 25 Mar 2024 13:26:33 +0100 Subject: [PATCH 1/6] In DeviceApiController reducing the number of error messages with stack trace Signed-off-by: Oleksandra Matviienko --- .../transport/http/DeviceApiController.java | 34 ++++++++++++++---- .../http/DeviceApiControllerTest.java | 35 +++++++++++++++++++ .../http/src/test/resources/logback-test.xml | 14 ++++++++ 3 files changed, 76 insertions(+), 7 deletions(-) create mode 100644 common/transport/http/src/test/java/org/thingsboard/server/transport/http/DeviceApiControllerTest.java create mode 100644 common/transport/http/src/test/resources/logback-test.xml diff --git a/common/transport/http/src/main/java/org/thingsboard/server/transport/http/DeviceApiController.java b/common/transport/http/src/main/java/org/thingsboard/server/transport/http/DeviceApiController.java index 7d2198f45a..835d3af030 100644 --- a/common/transport/http/src/main/java/org/thingsboard/server/transport/http/DeviceApiController.java +++ b/common/transport/http/src/main/java/org/thingsboard/server/transport/http/DeviceApiController.java @@ -16,6 +16,7 @@ package org.thingsboard.server.transport.http; import com.google.gson.JsonObject; +import com.google.gson.JsonParseException; import com.google.gson.JsonParser; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; @@ -31,6 +32,7 @@ import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; +import org.springframework.http.converter.HttpMessageNotReadableException; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; @@ -434,7 +436,7 @@ public class DeviceApiController implements TbTransportService { return responseWriter; } - private static class DeviceAuthCallback implements TransportServiceCallback { + static class DeviceAuthCallback implements TransportServiceCallback { private final TransportContext transportContext; private final DeferredResult responseWriter; private final Consumer onSuccess; @@ -456,8 +458,14 @@ public class DeviceApiController implements TbTransportService { @Override public void onError(Throwable e) { - log.warn("Failed to process request", e); - responseWriter.setResult(new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR)); + String body = null; + if (e instanceof HttpMessageNotReadableException || e instanceof JsonParseException) { + body = e.getMessage(); + log.debug("Failed to process request: {}", body); + } else { + log.warn("Failed to process request", e); + } + responseWriter.setResult(new ResponseEntity<>(body, HttpStatus.INTERNAL_SERVER_ERROR)); } } @@ -475,8 +483,14 @@ public class DeviceApiController implements TbTransportService { @Override public void onError(Throwable e) { - log.warn("Failed to process request", e); - responseWriter.setResult(new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR)); + String body = null; + if (e instanceof HttpMessageNotReadableException || e instanceof JsonParseException) { + body = e.getMessage(); + log.debug("Failed to process request: {}", body); + } else { + log.warn("Failed to process request", e); + } + responseWriter.setResult(new ResponseEntity<>(body, HttpStatus.INTERNAL_SERVER_ERROR)); } } @@ -516,8 +530,14 @@ public class DeviceApiController implements TbTransportService { @Override public void onError(Throwable e) { - log.warn("Failed to process request", e); - responseWriter.setResult(new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR)); + String body = null; + if (e instanceof HttpMessageNotReadableException || e instanceof JsonParseException) { + body = e.getMessage(); + log.debug("Failed to process request: {}", body); + } else { + log.warn("Failed to process request", e); + } + responseWriter.setResult(new ResponseEntity<>(body, HttpStatus.INTERNAL_SERVER_ERROR)); } } diff --git a/common/transport/http/src/test/java/org/thingsboard/server/transport/http/DeviceApiControllerTest.java b/common/transport/http/src/test/java/org/thingsboard/server/transport/http/DeviceApiControllerTest.java new file mode 100644 index 0000000000..be60bd0b92 --- /dev/null +++ b/common/transport/http/src/test/java/org/thingsboard/server/transport/http/DeviceApiControllerTest.java @@ -0,0 +1,35 @@ +package org.thingsboard.server.transport.http; + +import com.google.gson.JsonParseException; +import com.google.gson.JsonSyntaxException; +import org.junit.jupiter.api.Test; +import org.mockito.Mockito; +import org.springframework.http.ResponseEntity; +import org.springframework.http.converter.HttpMessageNotReadableException; +import org.springframework.web.context.request.async.DeferredResult; +import org.thingsboard.server.common.transport.TransportContext; +import org.thingsboard.server.gen.transport.TransportProtos; + +import java.io.IOException; +import java.util.function.Consumer; + +import static org.junit.jupiter.api.Assertions.*; + +class DeviceApiControllerTest { + + @Test + void callbackOnErrorTest() { + TransportContext transportContext = Mockito.mock(TransportContext.class); + DeferredResult responseWriter = Mockito.mock(DeferredResult.class); + Consumer onSuccess = x -> {}; + var callback = new DeviceApiController.DeviceAuthCallback(transportContext, responseWriter, onSuccess); + + callback.onError(new HttpMessageNotReadableException("JSON incorect syntax")); + + callback.onError(new JsonParseException("Json ; expected")); + + callback.onError(new IOException("not found")); + + callback.onError(new RuntimeException("oops it is run time error")); + } +} \ No newline at end of file diff --git a/common/transport/http/src/test/resources/logback-test.xml b/common/transport/http/src/test/resources/logback-test.xml new file mode 100644 index 0000000000..4bb2dbef40 --- /dev/null +++ b/common/transport/http/src/test/resources/logback-test.xml @@ -0,0 +1,14 @@ + + + + + + %d{ISO8601} [%thread] %-5level %logger{36} - %msg%n + + + + + + + + From 0f4591529a0a57635ba1319ddbd0edd5c5abe720 Mon Sep 17 00:00:00 2001 From: Oleksandra Matviienko Date: Tue, 26 Mar 2024 12:08:42 +0100 Subject: [PATCH 2/6] Changes according to comments (without GetOtaPackageCallback test) Signed-off-by: Oleksandra Matviienko --- .../transport/http/DeviceApiController.java | 14 +++--- .../http/DeviceApiControllerTest.java | 46 +++++++++++++++++-- .../http/src/test/resources/logback-test.xml | 4 +- 3 files changed, 53 insertions(+), 11 deletions(-) diff --git a/common/transport/http/src/main/java/org/thingsboard/server/transport/http/DeviceApiController.java b/common/transport/http/src/main/java/org/thingsboard/server/transport/http/DeviceApiController.java index 835d3af030..fd20b030df 100644 --- a/common/transport/http/src/main/java/org/thingsboard/server/transport/http/DeviceApiController.java +++ b/common/transport/http/src/main/java/org/thingsboard/server/transport/http/DeviceApiController.java @@ -461,15 +461,15 @@ public class DeviceApiController implements TbTransportService { String body = null; if (e instanceof HttpMessageNotReadableException || e instanceof JsonParseException) { body = e.getMessage(); - log.debug("Failed to process request: {}", body); + log.debug("Failed to process request in DeviceAuthCallback: {}", body); } else { - log.warn("Failed to process request", e); + log.warn("Failed to process request in DeviceAuthCallback", e); } responseWriter.setResult(new ResponseEntity<>(body, HttpStatus.INTERNAL_SERVER_ERROR)); } } - private static class DeviceProvisionCallback implements TransportServiceCallback { + static class DeviceProvisionCallback implements TransportServiceCallback { private final DeferredResult responseWriter; DeviceProvisionCallback(DeferredResult responseWriter) { @@ -486,9 +486,9 @@ public class DeviceApiController implements TbTransportService { String body = null; if (e instanceof HttpMessageNotReadableException || e instanceof JsonParseException) { body = e.getMessage(); - log.debug("Failed to process request: {}", body); + log.debug("Failed to process request in DeviceProvisionCallback: {}", body); } else { - log.warn("Failed to process request", e); + log.warn("Failed to process request in DeviceProvisionCallback", e); } responseWriter.setResult(new ResponseEntity<>(body, HttpStatus.INTERNAL_SERVER_ERROR)); } @@ -533,9 +533,9 @@ public class DeviceApiController implements TbTransportService { String body = null; if (e instanceof HttpMessageNotReadableException || e instanceof JsonParseException) { body = e.getMessage(); - log.debug("Failed to process request: {}", body); + log.debug("Failed to process request in GetOtaPackageCallback: {}", body); } else { - log.warn("Failed to process request", e); + log.warn("Failed to process request in GetOtaPackageCallback", e); } responseWriter.setResult(new ResponseEntity<>(body, HttpStatus.INTERNAL_SERVER_ERROR)); } diff --git a/common/transport/http/src/test/java/org/thingsboard/server/transport/http/DeviceApiControllerTest.java b/common/transport/http/src/test/java/org/thingsboard/server/transport/http/DeviceApiControllerTest.java index be60bd0b92..47efa5b25a 100644 --- a/common/transport/http/src/test/java/org/thingsboard/server/transport/http/DeviceApiControllerTest.java +++ b/common/transport/http/src/test/java/org/thingsboard/server/transport/http/DeviceApiControllerTest.java @@ -1,3 +1,18 @@ +/** + * Copyright © 2016-2024 The Thingsboard Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package org.thingsboard.server.transport.http; import com.google.gson.JsonParseException; @@ -18,13 +33,13 @@ import static org.junit.jupiter.api.Assertions.*; class DeviceApiControllerTest { @Test - void callbackOnErrorTest() { + void DeviceAuthCallbackTest() { TransportContext transportContext = Mockito.mock(TransportContext.class); DeferredResult responseWriter = Mockito.mock(DeferredResult.class); Consumer onSuccess = x -> {}; var callback = new DeviceApiController.DeviceAuthCallback(transportContext, responseWriter, onSuccess); - callback.onError(new HttpMessageNotReadableException("JSON incorect syntax")); + callback.onError(new HttpMessageNotReadableException("JSON incorrect syntax")); callback.onError(new JsonParseException("Json ; expected")); @@ -32,4 +47,29 @@ class DeviceApiControllerTest { callback.onError(new RuntimeException("oops it is run time error")); } -} \ No newline at end of file + + @Test + void DeviceProvisionCallbackTest() { + DeferredResult responseWriter = Mockito.mock(DeferredResult.class); + var callback = new DeviceApiController.DeviceProvisionCallback(responseWriter); + + callback.onError(new HttpMessageNotReadableException("JSON incorrect syntax")); + + callback.onError(new JsonParseException("Json ; expected")); + + callback.onError(new IOException("not found")); + + callback.onError(new RuntimeException("oops it is run time error")); + } + +//@Test +// void GetOtaPackageCallback() { +// DeferredResult responseWriter = Mockito.mock(DeferredResult.class); +// String title = "Title"; +// String version = "version"; +// int chuckSize = 11; +// int chuck = 3; +// +// var callback = new DeviceApiController.GetOtaPackageCallback(responseWriter, title, version, chuckSize, chuck); +// } +} diff --git a/common/transport/http/src/test/resources/logback-test.xml b/common/transport/http/src/test/resources/logback-test.xml index 4bb2dbef40..359007da5a 100644 --- a/common/transport/http/src/test/resources/logback-test.xml +++ b/common/transport/http/src/test/resources/logback-test.xml @@ -7,7 +7,9 @@ - + logger name="org.thingsboard.server.transport.http.DeviceApiController" level="DEBUG" /> + + From 2e045a158f3d8187c888b22da5066303e126b9a7 Mon Sep 17 00:00:00 2001 From: Oleksandra Matviienko Date: Wed, 27 Mar 2024 21:43:29 +0100 Subject: [PATCH 3/6] Minor log messages changes to DeviceApiController, GetOtaPackageCallback test added. Signed-off-by: Oleksandra Matviienko --- .../transport/http/DeviceApiController.java | 8 +++-- .../http/DeviceApiControllerTest.java | 36 +++++++++++-------- 2 files changed, 26 insertions(+), 18 deletions(-) diff --git a/common/transport/http/src/main/java/org/thingsboard/server/transport/http/DeviceApiController.java b/common/transport/http/src/main/java/org/thingsboard/server/transport/http/DeviceApiController.java index fd20b030df..f8212b1009 100644 --- a/common/transport/http/src/main/java/org/thingsboard/server/transport/http/DeviceApiController.java +++ b/common/transport/http/src/main/java/org/thingsboard/server/transport/http/DeviceApiController.java @@ -431,7 +431,7 @@ public class DeviceApiController implements TbTransportService { .setDeviceIdMSB(sessionInfo.getDeviceIdMSB()) .setDeviceIdLSB(sessionInfo.getDeviceIdLSB()) .setType(firmwareType.name()).build(); - transportContext.getTransportService().process(sessionInfo, requestMsg, new GetOtaPackageCallback(responseWriter, title, version, size, chunk)); + transportContext.getTransportService().process(sessionInfo, requestMsg, new GetOtaPackageCallback(transportContext,responseWriter, title, version, size, chunk)); })); return responseWriter; } @@ -494,14 +494,16 @@ public class DeviceApiController implements TbTransportService { } } - private class GetOtaPackageCallback implements TransportServiceCallback { + static class GetOtaPackageCallback implements TransportServiceCallback { + private final TransportContext transportContext; private final DeferredResult responseWriter; private final String title; private final String version; private final int chuckSize; private final int chuck; - GetOtaPackageCallback(DeferredResult responseWriter, String title, String version, int chuckSize, int chuck) { + GetOtaPackageCallback(TransportContext transportContext, DeferredResult responseWriter, String title, String version, int chuckSize, int chuck) { + this.transportContext = transportContext; this.responseWriter = responseWriter; this.title = title; this.version = version; diff --git a/common/transport/http/src/test/java/org/thingsboard/server/transport/http/DeviceApiControllerTest.java b/common/transport/http/src/test/java/org/thingsboard/server/transport/http/DeviceApiControllerTest.java index 47efa5b25a..e439d0d3a4 100644 --- a/common/transport/http/src/test/java/org/thingsboard/server/transport/http/DeviceApiControllerTest.java +++ b/common/transport/http/src/test/java/org/thingsboard/server/transport/http/DeviceApiControllerTest.java @@ -16,7 +16,6 @@ package org.thingsboard.server.transport.http; import com.google.gson.JsonParseException; -import com.google.gson.JsonSyntaxException; import org.junit.jupiter.api.Test; import org.mockito.Mockito; import org.springframework.http.ResponseEntity; @@ -28,12 +27,10 @@ import org.thingsboard.server.gen.transport.TransportProtos; import java.io.IOException; import java.util.function.Consumer; -import static org.junit.jupiter.api.Assertions.*; - class DeviceApiControllerTest { @Test - void DeviceAuthCallbackTest() { + void deviceAuthCallbackTest() { TransportContext transportContext = Mockito.mock(TransportContext.class); DeferredResult responseWriter = Mockito.mock(DeferredResult.class); Consumer onSuccess = x -> {}; @@ -49,7 +46,7 @@ class DeviceApiControllerTest { } @Test - void DeviceProvisionCallbackTest() { + void deviceProvisionCallbackTest() { DeferredResult responseWriter = Mockito.mock(DeferredResult.class); var callback = new DeviceApiController.DeviceProvisionCallback(responseWriter); @@ -62,14 +59,23 @@ class DeviceApiControllerTest { callback.onError(new RuntimeException("oops it is run time error")); } -//@Test -// void GetOtaPackageCallback() { -// DeferredResult responseWriter = Mockito.mock(DeferredResult.class); -// String title = "Title"; -// String version = "version"; -// int chuckSize = 11; -// int chuck = 3; -// -// var callback = new DeviceApiController.GetOtaPackageCallback(responseWriter, title, version, chuckSize, chuck); -// } +@Test + void getOtaPackageCallback() { + TransportContext transportContext = Mockito.mock(TransportContext.class); + DeferredResult responseWriter = Mockito.mock(DeferredResult.class); + String title = "Title"; + String version = "version"; + int chuckSize = 11; + int chuck = 3; + + var callback = new DeviceApiController.GetOtaPackageCallback(transportContext, responseWriter, title, version, chuckSize, chuck); + + callback.onError(new HttpMessageNotReadableException("JSON incorrect syntax")); + + callback.onError(new JsonParseException("Json ; expected")); + + callback.onError(new IOException("not found")); + + callback.onError(new RuntimeException("oops it is run time error")); + } } From c633515b193cd45f231627b740924ec9eda54b35 Mon Sep 17 00:00:00 2001 From: Oleksandra Matviienko Date: Wed, 27 Mar 2024 22:13:20 +0100 Subject: [PATCH 4/6] Code refactoring and reformat in DeviceApiController and DeviceApiControllerTest. Signed-off-by: Oleksandra Matviienko --- .../transport/http/DeviceApiController.java | 30 +++++-------------- .../http/DeviceApiControllerTest.java | 29 +++++++++--------- 2 files changed, 22 insertions(+), 37 deletions(-) diff --git a/common/transport/http/src/main/java/org/thingsboard/server/transport/http/DeviceApiController.java b/common/transport/http/src/main/java/org/thingsboard/server/transport/http/DeviceApiController.java index f8212b1009..e919268cae 100644 --- a/common/transport/http/src/main/java/org/thingsboard/server/transport/http/DeviceApiController.java +++ b/common/transport/http/src/main/java/org/thingsboard/server/transport/http/DeviceApiController.java @@ -431,22 +431,17 @@ public class DeviceApiController implements TbTransportService { .setDeviceIdMSB(sessionInfo.getDeviceIdMSB()) .setDeviceIdLSB(sessionInfo.getDeviceIdLSB()) .setType(firmwareType.name()).build(); - transportContext.getTransportService().process(sessionInfo, requestMsg, new GetOtaPackageCallback(transportContext,responseWriter, title, version, size, chunk)); + transportContext.getTransportService().process(sessionInfo, requestMsg, new GetOtaPackageCallback(transportContext, responseWriter, title, version, size, chunk)); })); return responseWriter; } + @RequiredArgsConstructor static class DeviceAuthCallback implements TransportServiceCallback { private final TransportContext transportContext; private final DeferredResult responseWriter; private final Consumer onSuccess; - DeviceAuthCallback(TransportContext transportContext, DeferredResult responseWriter, Consumer onSuccess) { - this.transportContext = transportContext; - this.responseWriter = responseWriter; - this.onSuccess = onSuccess; - } - @Override public void onSuccess(ValidateDeviceCredentialsResponse msg) { if (msg.hasDeviceInfo()) { @@ -469,13 +464,10 @@ public class DeviceApiController implements TbTransportService { } } + @RequiredArgsConstructor static class DeviceProvisionCallback implements TransportServiceCallback { private final DeferredResult responseWriter; - DeviceProvisionCallback(DeferredResult responseWriter) { - this.responseWriter = responseWriter; - } - @Override public void onSuccess(ProvisionDeviceResponseMsg msg) { responseWriter.setResult(new ResponseEntity<>(JsonConverter.toJson(msg).toString(), HttpStatus.OK)); @@ -494,22 +486,14 @@ public class DeviceApiController implements TbTransportService { } } + @RequiredArgsConstructor static class GetOtaPackageCallback implements TransportServiceCallback { private final TransportContext transportContext; private final DeferredResult responseWriter; private final String title; private final String version; - private final int chuckSize; - private final int chuck; - - GetOtaPackageCallback(TransportContext transportContext, DeferredResult responseWriter, String title, String version, int chuckSize, int chuck) { - this.transportContext = transportContext; - this.responseWriter = responseWriter; - this.title = title; - this.version = version; - this.chuckSize = chuckSize; - this.chuck = chuck; - } + private final int chunkSize; + private final int chunk; @Override public void onSuccess(TransportProtos.GetOtaPackageResponseMsg otaPackageResponseMsg) { @@ -517,7 +501,7 @@ public class DeviceApiController implements TbTransportService { responseWriter.setResult(new ResponseEntity<>(HttpStatus.NOT_FOUND)); } else if (title.equals(otaPackageResponseMsg.getTitle()) && version.equals(otaPackageResponseMsg.getVersion())) { String otaPackageId = new UUID(otaPackageResponseMsg.getOtaPackageIdMSB(), otaPackageResponseMsg.getOtaPackageIdLSB()).toString(); - ByteArrayResource resource = new ByteArrayResource(transportContext.getOtaPackageDataCache().get(otaPackageId, chuckSize, chuck)); + ByteArrayResource resource = new ByteArrayResource(transportContext.getOtaPackageDataCache().get(otaPackageId, chunkSize, chunk)); ResponseEntity response = ResponseEntity.ok() .header(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=" + otaPackageResponseMsg.getFileName()) .header("x-filename", otaPackageResponseMsg.getFileName()) diff --git a/common/transport/http/src/test/java/org/thingsboard/server/transport/http/DeviceApiControllerTest.java b/common/transport/http/src/test/java/org/thingsboard/server/transport/http/DeviceApiControllerTest.java index e439d0d3a4..b033bf2355 100644 --- a/common/transport/http/src/test/java/org/thingsboard/server/transport/http/DeviceApiControllerTest.java +++ b/common/transport/http/src/test/java/org/thingsboard/server/transport/http/DeviceApiControllerTest.java @@ -5,7 +5,7 @@ * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -33,7 +33,8 @@ class DeviceApiControllerTest { void deviceAuthCallbackTest() { TransportContext transportContext = Mockito.mock(TransportContext.class); DeferredResult responseWriter = Mockito.mock(DeferredResult.class); - Consumer onSuccess = x -> {}; + Consumer onSuccess = x -> { + }; var callback = new DeviceApiController.DeviceAuthCallback(transportContext, responseWriter, onSuccess); callback.onError(new HttpMessageNotReadableException("JSON incorrect syntax")); @@ -59,23 +60,23 @@ class DeviceApiControllerTest { callback.onError(new RuntimeException("oops it is run time error")); } -@Test + @Test void getOtaPackageCallback() { - TransportContext transportContext = Mockito.mock(TransportContext.class); - DeferredResult responseWriter = Mockito.mock(DeferredResult.class); - String title = "Title"; - String version = "version"; - int chuckSize = 11; - int chuck = 3; + TransportContext transportContext = Mockito.mock(TransportContext.class); + DeferredResult responseWriter = Mockito.mock(DeferredResult.class); + String title = "Title"; + String version = "version"; + int chunkSize = 11; + int chunk = 3; - var callback = new DeviceApiController.GetOtaPackageCallback(transportContext, responseWriter, title, version, chuckSize, chuck); + var callback = new DeviceApiController.GetOtaPackageCallback(transportContext, responseWriter, title, version, chunkSize, chunk); - callback.onError(new HttpMessageNotReadableException("JSON incorrect syntax")); + callback.onError(new HttpMessageNotReadableException("JSON incorrect syntax")); - callback.onError(new JsonParseException("Json ; expected")); + callback.onError(new JsonParseException("Json ; expected")); - callback.onError(new IOException("not found")); + callback.onError(new IOException("not found")); - callback.onError(new RuntimeException("oops it is run time error")); + callback.onError(new RuntimeException("oops it is run time error")); } } From 05d41b437058aeb76344c96e65bf267fc6e93589 Mon Sep 17 00:00:00 2001 From: Oleksandra Matviienko Date: Thu, 28 Mar 2024 10:08:05 +0100 Subject: [PATCH 5/6] License formatted in DeviceApiController Signed-off-by: Oleksandra Matviienko --- .../server/transport/http/DeviceApiControllerTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/transport/http/src/test/java/org/thingsboard/server/transport/http/DeviceApiControllerTest.java b/common/transport/http/src/test/java/org/thingsboard/server/transport/http/DeviceApiControllerTest.java index b033bf2355..ce1e2b2fde 100644 --- a/common/transport/http/src/test/java/org/thingsboard/server/transport/http/DeviceApiControllerTest.java +++ b/common/transport/http/src/test/java/org/thingsboard/server/transport/http/DeviceApiControllerTest.java @@ -5,7 +5,7 @@ * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, From 07fb7ab79038e3586445114f242da77ecc9a302d Mon Sep 17 00:00:00 2001 From: Oleksandra Matviienko Date: Thu, 28 Mar 2024 10:37:10 +0100 Subject: [PATCH 6/6] Import GetOtaPackageResponseMsg added Signed-off-by: Oleksandra Matviienko --- .../server/transport/http/DeviceApiController.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/common/transport/http/src/main/java/org/thingsboard/server/transport/http/DeviceApiController.java b/common/transport/http/src/main/java/org/thingsboard/server/transport/http/DeviceApiController.java index e919268cae..e9674d767e 100644 --- a/common/transport/http/src/main/java/org/thingsboard/server/transport/http/DeviceApiController.java +++ b/common/transport/http/src/main/java/org/thingsboard/server/transport/http/DeviceApiController.java @@ -20,9 +20,7 @@ import com.google.gson.JsonParseException; import com.google.gson.JsonParser; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.media.Content; import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.responses.ApiResponse; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -58,6 +56,7 @@ import org.thingsboard.server.gen.transport.TransportProtos; import org.thingsboard.server.gen.transport.TransportProtos.AttributeUpdateNotificationMsg; import org.thingsboard.server.gen.transport.TransportProtos.GetAttributeRequestMsg; import org.thingsboard.server.gen.transport.TransportProtos.GetAttributeResponseMsg; +import org.thingsboard.server.gen.transport.TransportProtos.GetOtaPackageResponseMsg; import org.thingsboard.server.gen.transport.TransportProtos.ProvisionDeviceResponseMsg; import org.thingsboard.server.gen.transport.TransportProtos.SessionCloseNotificationProto; import org.thingsboard.server.gen.transport.TransportProtos.SessionInfoProto; @@ -487,7 +486,7 @@ public class DeviceApiController implements TbTransportService { } @RequiredArgsConstructor - static class GetOtaPackageCallback implements TransportServiceCallback { + static class GetOtaPackageCallback implements TransportServiceCallback { private final TransportContext transportContext; private final DeferredResult responseWriter; private final String title;