public final Boolean evaluate()

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;
    }