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
34 @Deprecated(since = "4.0.0")
35 class ProblemDetectingValueSource implements ValueSource {
36
37 private final ValueSource valueSource;
38
39 private final String bannedPrefix;
40
41 private final String newPrefix;
42
43 private final ModelProblemCollector problems;
44
45 ProblemDetectingValueSource(
46 ValueSource valueSource, String bannedPrefix, String newPrefix, ModelProblemCollector problems) {
47 this.valueSource = valueSource;
48 this.bannedPrefix = bannedPrefix;
49 this.newPrefix = newPrefix;
50 this.problems = problems;
51 }
52
53 @Override
54 public Object getValue(String expression) {
55 Object value = valueSource.getValue(expression);
56
57 if (value != null && expression.startsWith(bannedPrefix)) {
58 String msg = "The expression ${" + expression + "} is deprecated.";
59 if (newPrefix != null && !newPrefix.isEmpty()) {
60 msg += " Please use ${" + newPrefix + expression.substring(bannedPrefix.length()) + "} instead.";
61 }
62 problems.add(new ModelProblemCollectorRequest(Severity.WARNING, Version.V20).setMessage(msg));
63 }
64
65 return value;
66 }
67
68 @Override
69 public List getFeedback() {
70 return valueSource.getFeedback();
71 }
72
73 @Override
74 public void clearFeedback() {
75 valueSource.clearFeedback();
76 }
77 }