package com.sun.enterprise.admin.mbeanapi.deployment; import com.sun.appserv.management.config.ClusterConfig; import com.sun.appserv.management.config.ClusteredServerConfig; import java.util.Map; import java.util.Set; import java.util.HashSet; import java.util.Iterator; import com.sun.appserv.management.config.DomainConfig; import com.sun.appserv.management.config.ServerConfig; /** */ public class ListDeployedAppsCmd extends DeployCmd { public static final String kAppType = "AppType"; public static final String kAll = "All"; public static final String kEJBModules = "EJBModules"; public static final String kWebModules = "WebModules"; public static final String kApplications = "Applications"; public static final String kRARModules = "RARModules"; public static final String kLifecycleModules = "LifecycleModules"; public ListDeployedAppsCmd(CmdEnv cmdEnv) { super(cmdEnv); } public Object execute() throws Exception { assert isConnected(); final String target = getTarget(); final Cmd cmd = getListCmdByAppType(getAppType()); final Set s1 = (Set)cmd.execute(); if (DEFAULT_DEPLOY_TARGET.equals(target)) { return s1; } final Set s2 = getDeployedItemRefs(target); Set[] sets = new Set[] { s1, s2}; return sets; //return intersect(s1, s2); } private Set intersect(final Set s1, final Set s2) { final Set s = new HashSet(); final Iterator it = s1.iterator(); while (it.hasNext()) { final String next = (String)it.next(); if (s2.contains(next)) { s.add(next); } } return s; } private Set getDeployedItemRefs(final String target) throws Exception { Object o = getClusterOrServer(target); if(o == null) throw new Exception("Can't find config for this target."); if(o instanceof ServerConfig) return ((ServerConfig)o).getDeployedItemRefConfigMap().keySet(); if(o instanceof ClusterConfig) return ((ClusterConfig)o).getDeployedItemRefConfigMap().keySet(); if(o instanceof ClusteredServerConfig) return ((ClusteredServerConfig)o).getDeployedItemRefConfigMap().keySet(); throw new RuntimeException("???"); } private String getAppType() { return (String)getCmdEnv().get(kAppType); } private Cmd getListCmdByAppType(final String appType) throws Exception { if (kAll.equals(appType)) { return new ListAllAppsCmd(); } else if (kApplications.equals(appType)) { return new ListJ2EEApplicationsCmd(); } else if (kEJBModules.equals(appType)) { return new ListEJBModulesCmd(); } else if (kWebModules.equals(appType)) { return new ListWebModulesCmd(); } else if (kRARModules.equals(appType)) { return new ListRARModulesCmd(); } else if (kLifecycleModules.equals(appType)) { return new ListLifecycleModulesCmd(); } else { throw new Exception("Unknown app type: " + appType); } } private final class ListAllAppsCmd implements Cmd { public Object execute() throws Exception { final DomainConfig domainConfig = getDomainConfig(); final Set s = new HashSet(); s.addAll(domainConfig.getJ2EEApplicationConfigMap().keySet()); s.addAll(domainConfig.getEJBModuleConfigMap().keySet()); s.addAll(domainConfig.getWebModuleConfigMap().keySet()); s.addAll(domainConfig.getRARModuleConfigMap().keySet()); s.addAll(domainConfig.getAppClientModuleConfigMap().keySet()); s.addAll(domainConfig.getLifecycleModuleConfigMap().keySet()); return s; } } private final class ListWebModulesCmd implements Cmd { public Object execute() throws Exception { final DomainConfig domainConfig = getDomainConfig(); return domainConfig.getWebModuleConfigMap().keySet(); } } private final class ListEJBModulesCmd implements Cmd { public Object execute() throws Exception { final DomainConfig domainConfig = getDomainConfig(); return domainConfig.getEJBModuleConfigMap().keySet(); } } private final class ListRARModulesCmd implements Cmd { public Object execute() throws Exception { final DomainConfig domainConfig = getDomainConfig(); return domainConfig.getRARModuleConfigMap().keySet(); } } private final class ListJ2EEApplicationsCmd implements Cmd { public Object execute() throws Exception { final DomainConfig domainConfig = getDomainConfig(); return domainConfig.getJ2EEApplicationConfigMap().keySet(); } } private final class ListLifecycleModulesCmd implements Cmd { public Object execute() throws Exception { final DomainConfig domainConfig = getDomainConfig(); return domainConfig.getLifecycleModuleConfigMap().keySet(); } } }