diff --git a/ozgcloud-common-lib/src/main/java/de/ozgcloud/common/binaryfile/BinaryFileDownloadException.java b/ozgcloud-common-lib/src/main/java/de/ozgcloud/common/binaryfile/BinaryFileDownloadException.java deleted file mode 100644 index 9a5d462a871460f491d588bad1fa785eaf9ba7f8..0000000000000000000000000000000000000000 --- a/ozgcloud-common-lib/src/main/java/de/ozgcloud/common/binaryfile/BinaryFileDownloadException.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright (C) 2025 Das Land Schleswig-Holstein vertreten durch den - * Ministerpräsidenten des Landes Schleswig-Holstein - * Staatskanzlei - * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung - * - * Lizenziert unter der EUPL, Version 1.2 oder - sobald - * diese von der Europäischen Kommission genehmigt wurden - - * Folgeversionen der EUPL ("Lizenz"); - * Sie dürfen dieses Werk ausschließlich gemäß - * dieser Lizenz nutzen. - * Eine Kopie der Lizenz finden Sie hier: - * - * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 - * - * Sofern nicht durch anwendbare Rechtsvorschriften - * gefordert oder in schriftlicher Form vereinbart, wird - * die unter der Lizenz verbreitete Software "so wie sie - * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - - * ausdrücklich oder stillschweigend - verbreitet. - * Die sprachspezifischen Genehmigungen und Beschränkungen - * unter der Lizenz sind dem Lizenztext zu entnehmen. - */ -package de.ozgcloud.common.binaryfile; - -import de.ozgcloud.common.errorhandling.TechnicalException; - -class BinaryFileDownloadException extends TechnicalException { - - public BinaryFileDownloadException(Throwable cause) { - super("Error occurred during downloading file content", cause); - } -} diff --git a/ozgcloud-common-lib/src/main/java/de/ozgcloud/common/binaryfile/GrpcBinaryFileServerDownloader.java b/ozgcloud-common-lib/src/main/java/de/ozgcloud/common/binaryfile/GrpcBinaryFileServerDownloader.java index 090a53d25b0a7643022fefadce22be9d66972e88..b2d2df30879febcf9f7e1c2f48b1e6566b404abf 100644 --- a/ozgcloud-common-lib/src/main/java/de/ozgcloud/common/binaryfile/GrpcBinaryFileServerDownloader.java +++ b/ozgcloud-common-lib/src/main/java/de/ozgcloud/common/binaryfile/GrpcBinaryFileServerDownloader.java @@ -27,6 +27,7 @@ import java.io.IOException; import java.io.OutputStream; import java.io.PipedInputStream; import java.io.PipedOutputStream; +import java.util.Objects; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicReference; import java.util.function.Consumer; @@ -37,6 +38,7 @@ import org.springframework.core.task.TaskExecutor; import com.google.protobuf.ByteString; +import de.ozgcloud.common.errorhandling.TechnicalException; import io.grpc.stub.CallStreamObserver; import lombok.Builder; import lombok.extern.log4j.Log4j2; @@ -55,7 +57,7 @@ public class GrpcBinaryFileServerDownloader<T> { private final AtomicBoolean started = new AtomicBoolean(false); private final AtomicBoolean downloadFinished = new AtomicBoolean(false); private final AtomicBoolean requestFinished = new AtomicBoolean(false); - private final AtomicReference<BinaryFileDownloadException> error = new AtomicReference<>(); + private final AtomicReference<TechnicalException> error = new AtomicReference<>(); private PipedInputStream inputStream; private PipedOutputStream outputStream; @@ -92,7 +94,7 @@ public class GrpcBinaryFileServerDownloader<T> { } catch (Exception e) { closeOutputStream(); closeInputStream(); - throw new BinaryFileDownloadException(e); + throw new TechnicalException("Error while setting up streams", e); } } @@ -106,7 +108,7 @@ public class GrpcBinaryFileServerDownloader<T> { try { doDownload(); } catch (Exception e) { - error.set(new BinaryFileDownloadException(e)); + error.set(new TechnicalException("Error while downloading file contents", e)); } finally { closeOutputStream(); sendChunks(); @@ -124,7 +126,7 @@ public class GrpcBinaryFileServerDownloader<T> { try { doSendChunks(); } catch (Exception e) { - completeRequestWithError(e); + completeRequestWithError(new TechnicalException("Error while sending chunks", e)); } } @@ -134,7 +136,7 @@ public class GrpcBinaryFileServerDownloader<T> { } int bytesRead; while (isReady()) { - if (error.get() != null) { + if (Objects.nonNull(error.get())) { completeRequestWithError(error.get()); break; } @@ -167,11 +169,11 @@ public class GrpcBinaryFileServerDownloader<T> { callObserver.onCompleted(); } - void completeRequestWithError(Throwable t) { - LOG.debug("Complete download request with error", t); + void completeRequestWithError(TechnicalException e) { + LOG.debug("Complete download request with error", e); requestFinished.set(true); closeInputStream(); - callObserver.onError(t); + callObserver.onError(e); } void closeOutputStream() { diff --git a/ozgcloud-common-lib/src/test/java/de/ozgcloud/common/binaryfile/GrpcBinaryFileServerDownloaderTest.java b/ozgcloud-common-lib/src/test/java/de/ozgcloud/common/binaryfile/GrpcBinaryFileServerDownloaderTest.java index 2e452827ecded354df59b71b0606b3b41b1544bb..81da69e67b6bc6cb207a52d5a3a9dc1d23d4e775 100644 --- a/ozgcloud-common-lib/src/test/java/de/ozgcloud/common/binaryfile/GrpcBinaryFileServerDownloaderTest.java +++ b/ozgcloud-common-lib/src/test/java/de/ozgcloud/common/binaryfile/GrpcBinaryFileServerDownloaderTest.java @@ -191,7 +191,7 @@ class GrpcBinaryFileServerDownloaderTest { @Test void shouldThrowBinaryFileDownloadException() { - assertThatThrownBy(() -> downloader.safelySetupStreams()).isInstanceOf(BinaryFileDownloadException.class).hasCause(exception); + assertThatThrownBy(() -> downloader.safelySetupStreams()).isInstanceOf(TechnicalException.class).hasCause(exception); } @SneakyThrows @@ -278,7 +278,7 @@ class GrpcBinaryFileServerDownloaderTest { void shouldSetError() { downloader.startDownload(); - assertThat(getError()).isInstanceOf(BinaryFileDownloadException.class).hasCause(exception); + assertThat(getError()).isInstanceOf(TechnicalException.class).hasCause(exception); } @SneakyThrows @@ -354,7 +354,9 @@ class GrpcBinaryFileServerDownloaderTest { @Nested class OnException { - private final TechnicalException exception = new TechnicalException("error"); + private final IOException exception = new IOException(); + @Captor + private ArgumentCaptor<TechnicalException> argumentCaptor; @SneakyThrows @BeforeEach @@ -366,7 +368,8 @@ class GrpcBinaryFileServerDownloaderTest { void shouldCompleteRequestWithError() { downloader.sendChunks(); - verify(downloader).completeRequestWithError(exception); + verify(downloader).completeRequestWithError(argumentCaptor.capture()); + assertThat(argumentCaptor.getValue()).isInstanceOf(TechnicalException.class).hasCause(exception); } } } @@ -421,7 +424,7 @@ class GrpcBinaryFileServerDownloaderTest { @Nested class OnHasError { - private final BinaryFileDownloadException exception = new BinaryFileDownloadException(new TechnicalException("error")); + private final TechnicalException exception = new TechnicalException("error"); @BeforeEach void init() { @@ -624,7 +627,7 @@ class GrpcBinaryFileServerDownloaderTest { @Nested class TestCompleteRequestWithError { - private final Throwable error = new Throwable(); + private final TechnicalException error = new TechnicalException("error"); @BeforeEach void init() { @@ -671,12 +674,12 @@ class GrpcBinaryFileServerDownloaderTest { return ReflectionTestUtils.getField(downloader, "requestFinished", AtomicBoolean.class).get(); } - private void setErrorField(BinaryFileDownloadException error) { + private void setErrorField(TechnicalException error) { ReflectionTestUtils.setField(downloader, "error", new AtomicReference<>(error)); } - private BinaryFileDownloadException getError() { - return (BinaryFileDownloadException) ReflectionTestUtils.getField(downloader, "error", AtomicReference.class).get(); + private TechnicalException getError() { + return (TechnicalException) ReflectionTestUtils.getField(downloader, "error", AtomicReference.class).get(); } private void setDownloadFinishedField(boolean downloadFinished) {