public AuthStatus getReturnStatus(AuthStatus[] successValue,
AuthStatus defaultFailStatus,
AuthStatus[] status,
int position) {
AuthStatus result = null;
for (int i = 0; i <= position; i++) {
if (entry[i] != null && ctor[i] != null) {
LoginModuleControlFlag flag = entry[i].getControlFlag();
if (isLoggable(Level.FINE)) {
logIfLevel(Level.FINE, null, "getReturnStatus - flag: ",
flag.toString());
}
if (flag == LoginModuleControlFlag.REQUIRED
|| flag == LoginModuleControlFlag.REQUISITE) {
boolean isSuccessValue = false;
for (AuthStatus s : successValue) {
if (status[i] == s) {
isSuccessValue = true;
}
}
if (isSuccessValue) {
if (result == null) {
result = status[i];
}
continue;
}
if (isLoggable(Level.FINE)) {
logIfLevel(Level.FINE, null, "ReturnStatus - REQUIRED or REQUISITE failure: ",
status[i].toString());
}
return status[i];
} else if (flag == LoginModuleControlFlag.SUFFICIENT) {
if (exitContext(successValue, i, status[i])) {
if (isLoggable(Level.FINE)) {
logIfLevel(Level.FINE, null, "ReturnStatus - Sufficient success: ",
status[i].toString());
}
return status[i];
}
} else if (flag == LoginModuleControlFlag.OPTIONAL) {
if (result == null) {
for (AuthStatus s : successValue) {
if (status[i] == s) {
result = status[i];
}
}
}
}
}
}
if (result != null) {
if (isLoggable(Level.FINE)) {
logIfLevel(Level.FINE, null, "ReturnStatus - result: ", result.toString());
}
return result;
}
if (isLoggable(Level.FINE)) {
logIfLevel(Level.FINE, null, "ReturnStatus - Default faiure status: ",