processAdvancedSettings = true;
}
GerRoleType[] roles = security.getRoleMappings().getRoleArray();
for (int index = 0; index < roles.length; index++) {
String prefix1 = "security.roleMappings" + "." + index + ".";
GerRoleType role = roles[index];
for (int i = role.sizeOfPrincipalArray() - 1; i >= 0; i--) {
role.removePrincipal(i);
}
int lastIndex = Integer.parseInt(request.getParameter(prefix1 + "principal.lastIndex"));
for (int i = 0; i < lastIndex; i++) {
String prefix2 = prefix1 + "principal" + "." + i + ".";
if (!map.containsKey(prefix2 + "name")) {
continue;
}
GerPrincipalType principal = role.addNewPrincipal();
principal.setName(request.getParameter(prefix2 + "name"));
principal.setClass1(request.getParameter(prefix2 + "class"));
}
for (int i = role.sizeOfLoginDomainPrincipalArray() - 1; i >= 0; i--) {
role.removeLoginDomainPrincipal(i);
}
lastIndex = Integer.parseInt(request.getParameter(prefix1 + "loginDomainPrincipal.lastIndex"));
for (int i = 0; i < lastIndex; i++) {
String prefix2 = prefix1 + "loginDomainPrincipal" + "." + i + ".";
if (!map.containsKey(prefix2 + "name")) {
continue;
}
GerLoginDomainPrincipalType loginDomainPrincipal = role.addNewLoginDomainPrincipal();
loginDomainPrincipal.setName(request.getParameter(prefix2 + "name"));
loginDomainPrincipal.setClass1(request.getParameter(prefix2 + "class"));
loginDomainPrincipal.setDomainName(request.getParameter(prefix2 + "domainName"));
}
for (int i = role.sizeOfRealmPrincipalArray() - 1; i >= 0; i--) {
role.removeRealmPrincipal(i);
}
lastIndex = Integer.parseInt(request.getParameter(prefix1 + "realmPrincipal.lastIndex"));
for (int i = 0; i < lastIndex; i++) {
String prefix2 = prefix1 + "realmPrincipal" + "." + i + ".";
if (!map.containsKey(prefix2 + "name")) {
continue;
}
GerRealmPrincipalType realmPrincipal = role.addNewRealmPrincipal();
realmPrincipal.setName(request.getParameter(prefix2 + "name"));
realmPrincipal.setClass1(request.getParameter(prefix2 + "class"));
realmPrincipal.setDomainName(request.getParameter(prefix2 + "domainName"));
realmPrincipal.setRealmName(request.getParameter(prefix2 + "realmName"));
}
for (int i = role.sizeOfDistinguishedNameArray() - 1; i >= 0; i--) {
role.removeDistinguishedName(i);
}
lastIndex = Integer.parseInt(request.getParameter(prefix1 + "distinguishedName.lastIndex"));
for (int i = 0; i < lastIndex; i++) {
String prefix2 = prefix1 + "distinguishedName" + "." + i + ".";
if (!map.containsKey(prefix2 + "name")) {
continue;
}
GerDistinguishedNameType distinguishedName = role.addNewDistinguishedName();
distinguishedName.setName(request.getParameter(prefix2 + "name"));
}
if (processAdvancedSettings) {
String prefix2 = prefix1 + "runAsSubject" + ".";
if (map.containsKey(prefix2 + "realm")) {
if (role.isSetRunAsSubject()) {
role.unsetRunAsSubject();
}
String realm = request.getParameter(prefix2 + "realm");
String id = request.getParameter(prefix2 + "id");
if (!isEmpty(realm) && !isEmpty(id)) {
GerSubjectInfoType runAsSubject = role.addNewRunAsSubject();
runAsSubject.setRealm(realm);
runAsSubject.setId(id);
}
}
}