/*
|
* The contents of this file are subject to the terms of the Common Development and
|
* Distribution License (the License). You may not use this file except in compliance with the
|
* License.
|
*
|
* You can obtain a copy of the License at legal/CDDLv1.0.txt. See the License for the
|
* specific language governing permission and limitations under the License.
|
*
|
* When distributing Covered Software, include this CDDL Header Notice in each file and include
|
* the License file at legal/CDDLv1.0.txt. If applicable, add the following below the CDDL
|
* Header, with the fields enclosed by brackets [] replaced by your own identifying
|
* information: "Portions Copyright [year] [name of copyright owner]".
|
*
|
* Copyright 2008 Sun Microsystems, Inc.
|
*/
|
|
package org.opends.server.authorization.dseecompat;
|
|
/**
|
* This class provides an enumeration of evaluation results returned by
|
* the bind rule evaluation methods.
|
*/
|
public enum EnumEvalResult {
|
|
/**
|
* This enumeration is returned when the result of the evaluation is TRUE.
|
*/
|
TRUE(0),
|
/**
|
* This enumeration is returned when the result of the evaluation is FALSE.
|
*/
|
FALSE(1),
|
/**
|
* This enumeration is returned when the result of the evaluation is FAIL.
|
* This should only be returned when a system failure occurred.
|
*/
|
FAIL(2),
|
/**
|
* This is an internal enumeration used during evaluation of bind rule when
|
* internal processing of the evaluation is undefined. It is never returned
|
* back as a result of the evaluation.
|
*/
|
ERR(3);
|
|
/**
|
* Create a new enumeration type for the specified result value.
|
* @param v The value of the result.
|
*/
|
EnumEvalResult(int v) {
|
}
|
|
/**
|
* The method tries to determine if the result was undefined, and if so
|
* it returns an FAIL enumeration. If the result was not undefined (the
|
* common case for all of the bind rule evaluations), then the bind rule
|
* type is examined to see if the result needs to be flipped (type equals
|
* NOT_EQUAL_BINDRULE_TYPE).
|
* @param type The bind rule type enumeration of the bind rule.
|
* @param undefined A flag that signals the the result was undefined.
|
* @return An enumeration containing the correct result after processing
|
* the undefined field and the bind rule type enumeration.
|
*/
|
public EnumEvalResult getRet(EnumBindRuleType type, boolean undefined) {
|
if (equals(EnumEvalResult.TRUE) || !undefined) {
|
if (EnumBindRuleType.NOT_EQUAL_BINDRULE_TYPE.equals(type)) {
|
return negate(this);
|
}
|
} else {
|
return EnumEvalResult.FAIL;
|
}
|
return this;
|
}
|
|
/**
|
* This method is used to possibly negate the result of a simple bind rule
|
* evaluation. If the boolean is true than the result is negated.
|
* @param v The enumeration result of the simple bind rule evaluation.
|
* @param negate If true the result should be negated (TRUE->FALSE, FALSE->TRUE).
|
* @return A possibly negated enumeration result.
|
*/
|
public static EnumEvalResult negateIfNeeded(EnumEvalResult v, boolean negate) {
|
if (negate) {
|
return negate(v);
|
}
|
return v;
|
}
|
|
private static EnumEvalResult negate(EnumEvalResult v) {
|
if (EnumEvalResult.TRUE.equals(v)) {
|
return EnumEvalResult.FALSE;
|
} else {
|
return EnumEvalResult.TRUE;
|
}
|
}
|
|
/**
|
* Helper method that converts this enumeration to a boolean. Usually the
|
* FAIL enumeration has been handled before this is called.
|
* @return True if the enumeration is TRUE, else false.
|
*/
|
public boolean getBoolVal() {
|
return this == EnumEvalResult.TRUE;
|
}
|
}
|