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