private void waitForDeploymentCompletion(Deployment deployment, final AddonId addonToDeploy, int quantity, TimeUnit unit) throws DeploymentException { AddonRegistry registry = runnable.getForge().getAddonRegistry(); Addon addon = registry.getAddon(addonToDeploy); try { Future<Void> future = addon.getFuture(); if (!future.isDone()) { future.get(); } Addons.waitUntilStartedOrMissing(addon, quantity, unit); } catch (Exception e) { deployment.deployedWithError(e); throw new DeploymentException("AddonDependency " + addonToDeploy + " failed to deploy.", e); } if (addon.getStatus().isFailed()) { DeploymentException e = new DeploymentException("AddonDependency " + addonToDeploy + " failed to deploy."); deployment.deployedWithError(e); throw new DeploymentException("AddonDependency " + addonToDeploy + " failed to deploy.", e); } }
removeRequest.perform(); AddonRegistry registry = SimpleContainer.getFurnace(getClass().getClassLoader()).getAddonRegistry(); Addons.waitUntilStopped(registry.getAddon(id)); InstallRequest installRequest = addonManager.install(id); installRequest.perform();
Addon addonToStop = registry.getAddon(addonToUndeploy); if (addonToStop.getStatus().isLoaded()) ((MutableAddonRepository) addonToStop.getRepository()).disable(addonToUndeploy);
RemoveRequest removeRequest = addonManager.remove(id); removeRequest.perform(); Addons.waitUntilStopped(registry.getAddon(id)); progressMonitor.worked(1);