diff --git a/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/repository/Messages.java b/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/repository/Messages.java index 993ad714bf..30d4d941a4 100644 --- a/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/repository/Messages.java +++ b/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/repository/Messages.java @@ -57,6 +57,8 @@ public class Messages extends NLS { public static String MirrorLog_Exception_Occurred; public static String MirrorRequest_multipleDownloadProblems; + + public static String MirrorRequest_removal_failed; public static String MirrorRequest_transferFailed; public static String exception_unableToCreateParentDir; diff --git a/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/repository/MirrorRequest.java b/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/repository/MirrorRequest.java index ff785229ff..d84dfc5939 100644 --- a/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/repository/MirrorRequest.java +++ b/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/repository/MirrorRequest.java @@ -180,9 +180,20 @@ else if (ProcessingStepHandler.canProcess(descriptor2)) if (target.contains(destinationDescriptor)) { try { target.removeDescriptor(destinationDescriptor, subMonitor.split(1)); - } catch (UnsupportedOperationException e) { - setResult(Status.warning("unable to remove Descriptor", e)); //$NON-NLS-1$ - return; + } catch (RuntimeException e) { + // In case the repository does not support this, fall through to get the real + // error, maybe the repository does not support downloads at all! + Status warning = Status.warning(NLS.bind(Messages.MirrorRequest_removal_failed, destinationDescriptor), + e); + if (status instanceof MultiStatus multi) { + multi.add(warning); + } else { + MultiStatus multiStatus = new MultiStatus(Activator.ID, 0, + NLS.bind(Messages.MirrorRequest_transferFailed, descriptor), null); + multiStatus.add(status); + multiStatus.add(warning); + status = multiStatus; + } } } diff --git a/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/repository/messages.properties b/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/repository/messages.properties index 6a2901ac78..ca6dcbfc9e 100644 --- a/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/repository/messages.properties +++ b/bundles/org.eclipse.equinox.p2.artifact.repository/src/org/eclipse/equinox/internal/p2/artifact/repository/messages.properties @@ -48,6 +48,7 @@ exception_noComparators = No Artifact Comparators are available. MirrorLog_Console_Log=Logging to the console instead. MirrorLog_Exception_Occurred=An exception occurred while writing to the log: MirrorRequest_multipleDownloadProblems=Multiple problems occurred while downloading. +MirrorRequest_removal_failed=Target repository contains descriptor after failed download but it can't be removed: {0} MirrorRequest_transferFailed=Failed to transfer artifact {0}. exception_unsupportedAddToComposite = Cannot add descriptors to a composite repository.