package org.jboss.security.auth.login;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.io.IOException;
import java.net.URL;
import javax.security.auth.login.Configuration;
import javax.security.auth.login.AppConfigurationEntry;
import org.jboss.system.ServiceMBeanSupport;
public class XMLLoginConfig extends ServiceMBeanSupport
implements XMLLoginConfigMBean
{
private XMLLoginConfigImpl config;
private boolean passSecurityDomainName;
public XMLLoginConfig()
{
config = new XMLLoginConfigImpl();
}
public URL getConfigURL()
{
return config.getConfigURL();
}
public void setConfigURL(URL configURL)
{
config.setConfigURL(configURL);
}
public void setConfigResource(String resourceName)
throws IOException
{
config.setConfigResource(resourceName);
}
public boolean getValidateDTD()
{
return config.getValidateDTD();
}
public void setValidateDTD(boolean flag)
{
config.setValidateDTD(flag);
}
public boolean getPassSecurityDomainName()
{
return passSecurityDomainName;
}
public void setPassSecurityDomainName(boolean flag)
{
this.passSecurityDomainName = flag;
}
public void addAppConfig(String appName, AppConfigurationEntry[] entries)
{
config.addAppConfig(appName, entries);
}
public void removeAppConfig(String appName)
{
config.removeAppConfig(appName);
}
public Configuration getConfiguration(Configuration prevConfig)
{
config.setParentConfig(prevConfig);
return config;
}
public String[] loadConfig(URL configURL) throws Exception
{
return config.loadConfig(configURL);
}
public void removeConfigs(String[] appNames)
{
int count = appNames == null ? 0 : appNames.length;
for(int a = 0; a < count; a ++)
removeAppConfig(appNames[a]);
}
public String displayAppConfig(String appName)
{
StringBuffer buffer = new StringBuffer("<h2>"+appName+" LoginConfiguration</h2>\n");
AppConfigurationEntry[] appEntry = config.getAppConfigurationEntry(appName);
if( appEntry == null )
buffer.append("No Entry\n");
else
{
for(int c = 0; c < appEntry.length; c ++)
{
AppConfigurationEntry entry = appEntry[c];
buffer.append("LoginModule Class: "+entry.getLoginModuleName());
buffer.append("\n<br>ControlFlag: "+entry.getControlFlag());
buffer.append("\n<br>Options:<ul>");
Map options = entry.getOptions();
Iterator iter = options.entrySet().iterator();
while( iter.hasNext() )
{
Entry e = (Entry) iter.next();
buffer.append("<li>");
buffer.append("name="+e.getKey());
buffer.append(", value="+e.getValue());
buffer.append("</li>\n");
}
buffer.append("</ul>\n");
}
}
return buffer.toString();
}
protected void startService() throws Exception
{
config.loadConfig();
}
protected void destroyService()
{
config.clear();
}
}