in core/api/src/main/java/org/apache/myfaces/extensions/cdi/core/api/tools/AbstractPropertyExpressionInterpreter.java [37:107]
public final Boolean evaluate(String expressions)
{
boolean result = false;
String[] foundExpressions = expressions.split(";");
String configFileName = null;
SimpleOperationEnum operation;
for(String expression : foundExpressions)
{
result = false;
if(expression.contains(SimpleOperationEnum.IS.getValue()))
{
operation = SimpleOperationEnum.IS;
}
else if(expression.contains(SimpleOperationEnum.NOT.getValue()))
{
operation = SimpleOperationEnum.NOT;
}
else if(expression.startsWith("configName:"))
{
configFileName = expression.split(":")[1];
//TODO refactor it - current impl. ensures backward compatibility (see PropertyFileResolver)
configFileName = configFileName.replace(".", "@");
continue;
}
else
{
throw new IllegalStateException("expression: " + expression + " isn't supported by " +
ExpressionActivated.class.getName() +
" supported operations: " + SimpleOperationEnum.getOperations() + "separator: ';'");
}
String[] keyValue = expression.split(operation.getValue());
String configuredValue = getConfiguredValue(keyValue[0]);
configuredValue = configuredValue.trim();
if("".equals(configuredValue))
{
//TODO refactor it - current impl. ensures backward compatibility (see PropertyFileResolver)
String internalKey = keyValue[0] + "_";
configuredValue = getConfiguredValue(configFileName + "." + internalKey);
configuredValue = configuredValue.trim();
}
if(!"*".equals(keyValue[1]) && "".equals(configuredValue))
{
continue;
}
if("*".equals(keyValue[1]) && !"".equals(configuredValue))
{
result = true;
continue;
}
if(SimpleOperationEnum.IS.equals(operation) && !keyValue[1].equalsIgnoreCase(configuredValue))
{
return false;
}
else if(SimpleOperationEnum.NOT.equals(operation) && keyValue[1].equalsIgnoreCase(configuredValue))
{
return false;
}
result = true;
}
return result;
}