public Object evaluate()

in maven-plugin-testing-harness/src/main/java/org/apache/maven/plugin/testing/ResolverExpressionEvaluatorStub.java [37:93]


    public Object evaluate(String expr) 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
            if (expression.indexOf("$$") > -1) {
                return expression.replaceAll("\\$\\$", "\\$");
            }
        }

        if ("basedir".equals(expression) || "project.basedir".equals(expression)) {
            return PlexusTestCase.getBasedir();
        } else if (expression.startsWith("basedir") || expression.startsWith("project.basedir")) {
            int pathSeparator = expression.indexOf("/");

            if (pathSeparator > 0) {
                value = PlexusTestCase.getBasedir() + expression.substring(pathSeparator);
            } else {
                System.out.println("Got expression '" + expression + "' that was not recognised");
            }
            return value;
        } else if ("localRepository".equals(expression)) {
            File localRepo = new File(PlexusTestCase.getBasedir(), "target/local-repo");
            return new MavenArtifactRepository(
                    "localRepository",
                    "file://" + localRepo.getAbsolutePath(),
                    new DefaultRepositoryLayout(),
                    null,
                    null);
        } else {
            return expr;
        }
    }