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.util.List;
22
23 import org.apache.maven.model.building.ModelProblem.Severity;
24 import org.apache.maven.model.building.ModelProblem.Version;
25 import org.apache.maven.model.building.ModelProblemCollector;
26 import org.apache.maven.model.building.ModelProblemCollectorRequest;
27 import org.codehaus.plexus.interpolation.ValueSource;
28
29
30
31
32
33 class ProblemDetectingValueSource implements ValueSource {
34
35 private final ValueSource valueSource;
36
37 private final String bannedPrefix;
38
39 private final String newPrefix;
40
41 private final ModelProblemCollector problems;
42
43 ProblemDetectingValueSource(
44 ValueSource valueSource, String bannedPrefix, String newPrefix, ModelProblemCollector problems) {
45 this.valueSource = valueSource;
46 this.bannedPrefix = bannedPrefix;
47 this.newPrefix = newPrefix;
48 this.problems = problems;
49 }
50
51 @Override
52 public Object getValue(String expression) {
53 Object value = valueSource.getValue(expression);
54
55 if (value != null && expression.startsWith(bannedPrefix)) {
56 String msg = "The expression ${" + expression + "} is deprecated.";
57 if (newPrefix != null && !newPrefix.isEmpty()) {
58 msg += " Please use ${" + newPrefix + expression.substring(bannedPrefix.length()) + "} instead.";
59 }
60 problems.add(new ModelProblemCollectorRequest(Severity.WARNING, Version.V20).setMessage(msg));
61 }
62
63 return value;
64 }
65
66 @Override
67 public List getFeedback() {
68 return valueSource.getFeedback();
69 }
70
71 @Override
72 public void clearFeedback() {
73 valueSource.clearFeedback();
74 }
75 }