package com.sun.enterprise.admin.mbeanapi.deployment; import java.util.Set; import java.util.Map; import com.sun.appserv.management.base.Util; import com.sun.appserv.management.config.ConfigConfig; import com.sun.appserv.management.config.VirtualServerConfig; import com.sun.appserv.management.config.HTTPServiceConfig; /** */ public class VirtualServerCmd extends BaseCmd implements SourceCmd { public static final String kCreateMode = "CreateVirtualServer"; public static final String kDeleteMode = "DeleteVirtualServer"; public static final String kName = "Name"; public static final String kHosts = "Hosts"; public static final String kConfigName = "ConfigName"; public static final String kOptional = "Optional"; private final String mode; public VirtualServerCmd(CmdEnv cmdEnv, String mode) { super(cmdEnv); this.mode = mode; } public Object execute() throws Exception { assert isConnected(); Object ret = new Integer(0); if (mode.equals(kCreateMode)) { ret = create(); } else if (mode.equals(kDeleteMode)) { remove(); } else { throw new Exception("Unknown mode"); } return ret; } protected VirtualServerConfig create() throws Exception { final HTTPServiceConfig mgr = getHTTPServiceConfig( getConfigName()); return mgr.createVirtualServerConfig(getName(), getHosts(), getOptional()); } protected void remove() throws Exception { final String configName = getConfigName(); final String vsName = getName(); getHTTPServiceConfig(configName).removeVirtualServerConfig(vsName); } private HTTPServiceConfig getHTTPServiceConfig( final String configName) throws Exception { final String j2eeTypeProp = Util.makeJ2EETypeProp( HTTPServiceConfig.J2EE_TYPE); final String configProp = Util.makeProp( ConfigConfig.J2EE_TYPE, configName); final String props = Util.concatenateProps(j2eeTypeProp, configProp); final Set s = getQueryMgr().queryPropsSet(props); assert s != null && s.size() == 1; return (HTTPServiceConfig)s.iterator().next(); } private String getHosts() { return (String)getCmdEnv().get(kHosts); } private String getName() { return (String)getCmdEnv().get(kName); } private String getConfigName() { return (String)getCmdEnv().get(kConfigName); } private Map getOptional() { return (Map)getCmdEnv().get(kOptional); } }