/** * Disable the enabled version of the application if it exists. This method is used in versioning * context. * * @param appName application's name * @param target an option supply from admin command, it's retained for compatibility with other * releases * @param report ActionReport, report object to send back to client. * @param subject the Subject on whose behalf to run */ public void handleDisable( final String appName, final String target, final ActionReport report, final Subject subject) throws VersioningSyntaxException { Set<String> versionsToDisable = Collections.EMPTY_SET; if (DeploymentUtils.isDomainTarget(target)) { // retrieve the enabled versions on each target in the domain Map<String, Set<String>> enabledVersions = getEnabledVersionsInReferencedTargets(appName); if (!enabledVersions.isEmpty()) { versionsToDisable = enabledVersions.keySet(); } } else { // retrieve the currently enabled version of the application String enabledVersion = getEnabledVersion(appName, target); if (enabledVersion != null && !enabledVersion.equals(appName)) { versionsToDisable = new HashSet<String>(); versionsToDisable.add(enabledVersion); } } Iterator<String> it = versionsToDisable.iterator(); while (it.hasNext()) { String currentVersion = it.next(); // invoke disable if the currently enabled version is not itself if (currentVersion != null && !currentVersion.equals(appName)) { final ParameterMap parameters = new ParameterMap(); parameters.add("DEFAULT", currentVersion); parameters.add("target", target); ActionReport subReport = report.addSubActionsReport(); CommandRunner.CommandInvocation inv = commandRunner.getCommandInvocation("disable", subReport, subject); inv.parameters(parameters).execute(); } } }