1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.model.interpolation;
20
21 import java.io.File;
22 import java.util.Collection;
23 import java.util.List;
24 import org.apache.maven.model.path.PathTranslator;
25 import org.codehaus.plexus.interpolation.InterpolationPostProcessor;
26 import org.codehaus.plexus.interpolation.util.ValueSourceUtils;
27
28
29
30
31 class PathTranslatingPostProcessor implements InterpolationPostProcessor {
32
33 private final Collection<String> unprefixedPathKeys;
34 private final File projectDir;
35 private final PathTranslator pathTranslator;
36 private final List<String> expressionPrefixes;
37
38 PathTranslatingPostProcessor(
39 List<String> expressionPrefixes,
40 Collection<String> unprefixedPathKeys,
41 File projectDir,
42 PathTranslator pathTranslator) {
43 this.expressionPrefixes = expressionPrefixes;
44 this.unprefixedPathKeys = unprefixedPathKeys;
45 this.projectDir = projectDir;
46 this.pathTranslator = pathTranslator;
47 }
48
49 @Override
50 public Object execute(String expression, Object value) {
51 if (value != null) {
52 expression = ValueSourceUtils.trimPrefix(expression, expressionPrefixes, true);
53
54 if (unprefixedPathKeys.contains(expression)) {
55 return pathTranslator.alignToBaseDirectory(String.valueOf(value), projectDir);
56 }
57 }
58
59 return null;
60 }
61 }