blob: f4af2e7735f18749f55bfbb3f1639fd4bcdc873b [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.maven.plugin.testing;
import java.io.File;
import org.apache.maven.artifact.repository.MavenArtifactRepository;
import org.apache.maven.artifact.repository.layout.DefaultRepositoryLayout;
import org.codehaus.plexus.PlexusTestCase;
import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluationException;
import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluator;
/**
* Stub for {@link ExpressionEvaluator}
*
* @author jesse
*/
public class ResolverExpressionEvaluatorStub implements ExpressionEvaluator {
/** {@inheritDoc} */
@Override
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;
}
}
private String stripTokens(String expr) {
if (expr.startsWith("${") && expr.indexOf("}") == expr.length() - 1) {
expr = expr.substring(2, expr.length() - 1);
}
return expr;
}
/** {@inheritDoc} */
@Override
public File alignToBaseDirectory(File file) {
if (file.getAbsolutePath().startsWith(PlexusTestCase.getBasedir())) {
return file;
} else if (file.isAbsolute()) {
return file;
} else {
return new File(PlexusTestCase.getBasedir(), file.getPath());
}
}
}