}
} else {
SecurityRealm realm = (SecurityRealm) PortletManager.getManagedBean(request, data.getObjectName());
// index existing modules
Map nodes = new HashMap();
JaasLoginModuleChain node = (JaasLoginModuleChain) PortletManager.getManagedBean(request, realm.getLoginModuleChainName());
while(node != null) {
LoginModuleSettings module = (LoginModuleSettings) PortletManager.getManagedBean(request, node.getLoginModuleName());
nodes.put(module.getLoginDomainName(), node);
final String next = node.getNextName();
if(next == null) {
break;
}
node = (JaasLoginModuleChain) PortletManager.getManagedBean(request, next);
}
// apply settings
for (int i = 0; i < data.getModules().length; i++) {
LoginModuleDetails details = data.getModules()[i];
node = (JaasLoginModuleChain) nodes.get(details.getLoginDomainName());
node.setControlFlag(details.getControlFlag());
LoginModuleSettings module = (LoginModuleSettings) PortletManager.getManagedBean(request, node.getLoginModuleName());
module.setOptions(details.getOptions());
module.setServerSide(details.isServerSide());
module.setWrapPrincipals(details.isWrapPrincipals());
module.setLoginModuleClass(details.getClassName());
}