From b6a2021d1ee0af0c7fa2aafd1750da03c3a165de Mon Sep 17 00:00:00 2001 From: David Kocher Date: Wed, 7 Jun 2023 15:10:26 +0200 Subject: [PATCH] Extract failure to interface. --- .../main/java/ch/cyberduck/core/io/StreamProgress.java | 9 +++++++++ .../ch/cyberduck/core/transfer/ProxyTransferStatus.java | 6 ++++++ .../java/ch/cyberduck/core/transfer/TransferStatus.java | 4 +++- .../ch/cyberduck/core/worker/AbstractTransferWorker.java | 5 +++-- 4 files changed, 21 insertions(+), 3 deletions(-) diff --git a/core/src/main/java/ch/cyberduck/core/io/StreamProgress.java b/core/src/main/java/ch/cyberduck/core/io/StreamProgress.java index 7c1ee4ebc73..9b2e7d006af 100644 --- a/core/src/main/java/ch/cyberduck/core/io/StreamProgress.java +++ b/core/src/main/java/ch/cyberduck/core/io/StreamProgress.java @@ -17,13 +17,22 @@ * Bug fixes, suggestions and comments should be sent to feedback@cyberduck.ch */ +import ch.cyberduck.core.exception.BackgroundException; + public interface StreamProgress { void setComplete(); + void setFailure(final BackgroundException failure); + StreamProgress noop = new StreamProgress() { @Override public void setComplete() { // } + + @Override + public void setFailure(final BackgroundException failure) { + // + } }; } diff --git a/core/src/main/java/ch/cyberduck/core/transfer/ProxyTransferStatus.java b/core/src/main/java/ch/cyberduck/core/transfer/ProxyTransferStatus.java index b3e39a45ee6..a98a4713b5a 100644 --- a/core/src/main/java/ch/cyberduck/core/transfer/ProxyTransferStatus.java +++ b/core/src/main/java/ch/cyberduck/core/transfer/ProxyTransferStatus.java @@ -16,6 +16,7 @@ */ import ch.cyberduck.core.PathAttributes; +import ch.cyberduck.core.exception.BackgroundException; import ch.cyberduck.core.exception.ConnectionCanceledException; import ch.cyberduck.core.io.StreamCancelation; import ch.cyberduck.core.io.StreamProgress; @@ -43,6 +44,11 @@ public void setComplete() { progress.setComplete(); } + @Override + public void setFailure(final BackgroundException failure) { + progress.setFailure(failure); + } + @Override public PathAttributes getResponse() { return response.getResponse(); diff --git a/core/src/main/java/ch/cyberduck/core/transfer/TransferStatus.java b/core/src/main/java/ch/cyberduck/core/transfer/TransferStatus.java index 282bd1bef2a..dbc32bc9823 100644 --- a/core/src/main/java/ch/cyberduck/core/transfer/TransferStatus.java +++ b/core/src/main/java/ch/cyberduck/core/transfer/TransferStatus.java @@ -24,6 +24,7 @@ import ch.cyberduck.core.PathAttributes; import ch.cyberduck.core.Permission; import ch.cyberduck.core.concurrency.Interruptibles; +import ch.cyberduck.core.exception.BackgroundException; import ch.cyberduck.core.exception.ConnectionCanceledException; import ch.cyberduck.core.exception.TransferStatusCanceledException; import ch.cyberduck.core.features.Encryption; @@ -260,7 +261,8 @@ public TransferStatus complete() { return this; } - public void setFailure() { + @Override + public void setFailure(final BackgroundException failure) { complete.set(false); done.countDown(); } diff --git a/core/src/main/java/ch/cyberduck/core/worker/AbstractTransferWorker.java b/core/src/main/java/ch/cyberduck/core/worker/AbstractTransferWorker.java index 87ec4edb9b1..d65195436e0 100644 --- a/core/src/main/java/ch/cyberduck/core/worker/AbstractTransferWorker.java +++ b/core/src/main/java/ch/cyberduck/core/worker/AbstractTransferWorker.java @@ -33,6 +33,7 @@ import ch.cyberduck.core.SleepPreventerFactory; import ch.cyberduck.core.TransferItemCache; import ch.cyberduck.core.exception.BackgroundException; +import ch.cyberduck.core.exception.ConnectionCanceledException; import ch.cyberduck.core.exception.TransferCanceledException; import ch.cyberduck.core.io.StreamListener; import ch.cyberduck.core.notification.NotificationService; @@ -451,7 +452,7 @@ private void transferSegment(final TransferStatus segment) throws BackgroundExce if(log.isDebugEnabled()) { log.debug(String.format("Cancel retry for %s", item)); } - segment.setFailure(); + segment.setFailure(e); // Prompt to continue or abort for application errors if(error.prompt(item, segment, e, table.size())) { // Continue @@ -509,7 +510,7 @@ public TransferStatus call() throws BackgroundException { } else { log.warn(String.format("Skip concatenating segments for failed transfer %s", status)); - status.setFailure(); + status.setFailure(new ConnectionCanceledException()); } } return status;