public Object evaluate()

in maven-plugin-testing-harness/src/main/java/org/apache/maven/api/plugin/testing/ResolverExpressionEvaluatorStub.java [52:99]


    public Object evaluate(String expr, Class<?> type) throws ExpressionEvaluationException {

        Object value = null;

        if (expr == null) {
            return null;
        }

        String expression = stripTokens(expr);

        if (expression.equals(expr)) {
            int index = expr.indexOf("${");
            if (index >= 0) {
                int lastIndex = expr.indexOf("}", index);
                if (lastIndex >= 0) {
                    String retVal = expr.substring(0, index);

                    if (index > 0 && expr.charAt(index - 1) == '$') {
                        retVal += expr.substring(index + 1, lastIndex + 1);
                    } else {
                        retVal += evaluate(expr.substring(index, lastIndex + 1));
                    }

                    retVal += evaluate(expr.substring(lastIndex + 1));
                    return retVal;
                }
            }

            // Was not an expression
            return expression.contains("$$") ? expression.replaceAll("\\$\\$", "\\$") : expression;
        } else {
            if ("basedir".equals(expression) || "project.basedir".equals(expression)) {
                value = PlexusExtension.getBasedir();
            } else if (expression.startsWith("basedir") || expression.startsWith("project.basedir")) {
                int pathSeparator = expression.indexOf("/");
                if (pathSeparator > 0) {
                    value = PlexusTestCase.getBasedir() + expression.substring(pathSeparator);
                }
            } else if ("localRepository".equals(expression)) {
                File localRepo = new File(PlexusTestCase.getBasedir(), "target/local-repo");
                return new LocalRepository("file://" + localRepo.getAbsolutePath());
            }
            if (value == null && properties != null && properties.containsKey(expression)) {
                value = properties.get(expression);
            }
            return value;
        }
    }