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.nio.file.Path;
22 import java.util.Collection;
23 import java.util.List;
24
25 import org.apache.maven.model.path.PathTranslator;
26 import org.codehaus.plexus.interpolation.InterpolationPostProcessor;
27 import org.codehaus.plexus.interpolation.util.ValueSourceUtils;
28
29
30
31
32 class PathTranslatingPostProcessor implements InterpolationPostProcessor {
33
34 private final Collection<String> unprefixedPathKeys;
35 private final Path projectDir;
36 private final PathTranslator pathTranslator;
37 private final List<String> expressionPrefixes;
38
39 PathTranslatingPostProcessor(
40 List<String> expressionPrefixes,
41 Collection<String> unprefixedPathKeys,
42 Path projectDir,
43 PathTranslator pathTranslator) {
44 this.expressionPrefixes = expressionPrefixes;
45 this.unprefixedPathKeys = unprefixedPathKeys;
46 this.projectDir = projectDir;
47 this.pathTranslator = pathTranslator;
48 }
49
50 @Override
51 public Object execute(String expression, Object value) {
52 if (value != null) {
53 expression = ValueSourceUtils.trimPrefix(expression, expressionPrefixes, true);
54
55 if (unprefixedPathKeys.contains(expression)) {
56 return pathTranslator.alignToBaseDirectory(String.valueOf(value), projectDir);
57 }
58 }
59
60 return null;
61 }
62 }