Error handling for plugin installation/uninstallaion

This commit is contained in:
Rene Pfeuffer
2019-10-01 09:33:48 +02:00
parent 9261513555
commit aded308138
8 changed files with 40 additions and 7 deletions

View File

@@ -288,7 +288,7 @@ public class DefaultPluginManager implements PluginManager {
pendingInstallQueue.forEach(PendingPluginInstallation::cancel);
pendingUninstallQueue.clear();
pendingInstallQueue.clear();
getInstalled().forEach(p -> p.setUninstallable(isUninstallable(p)));
updateMayUninstallFlag();
}
@Override

View File

@@ -30,7 +30,7 @@ class PendingPluginInstallation {
Files.delete(file);
plugin.cancelInstallation();
} catch (IOException ex) {
throw new PluginFailedToCancelInstallationException("failed to cancel installation of plugin " + name, ex);
throw new PluginFailedToCancelInstallationException("failed to cancel plugin installation ", name, ex);
}
}
}

View File

@@ -26,7 +26,7 @@ class PendingPluginUninstallation {
Files.delete(uninstallFile);
plugin.setMarkedForUninstall(false);
} catch (IOException ex) {
throw new PluginFailedToCancelInstallationException("failed to cancel uninstallation of plugin " + name, ex);
throw new PluginFailedToCancelInstallationException("failed to cancel uninstallation", name, ex);
}
}
}

View File

@@ -1,7 +1,16 @@
package sonia.scm.plugin;
public class PluginFailedToCancelInstallationException extends RuntimeException {
public PluginFailedToCancelInstallationException(String message, Throwable cause) {
super(message, cause);
import sonia.scm.ExceptionWithContext;
import static sonia.scm.ContextEntry.ContextBuilder.entity;
public class PluginFailedToCancelInstallationException extends ExceptionWithContext {
public PluginFailedToCancelInstallationException(String message, String name, Exception cause) {
super(entity("plugin", name).build(), message, cause);
}
@Override
public String getCode() {
return "65RdZ5atX1";
}
}