1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.model.profile.activation;
20
21 import javax.inject.Named;
22 import javax.inject.Singleton;
23
24 import org.apache.maven.model.Activation;
25 import org.apache.maven.model.ActivationProperty;
26 import org.apache.maven.model.Profile;
27 import org.apache.maven.model.building.ModelProblem.Severity;
28 import org.apache.maven.model.building.ModelProblem.Version;
29 import org.apache.maven.model.building.ModelProblemCollector;
30 import org.apache.maven.model.building.ModelProblemCollectorRequest;
31 import org.apache.maven.model.profile.ProfileActivationContext;
32 import org.codehaus.plexus.util.StringUtils;
33
34
35
36
37
38
39
40 @Named("property")
41 @Singleton
42 @Deprecated(since = "4.0.0")
43 public class PropertyProfileActivator implements ProfileActivator {
44
45 @Override
46 public boolean isActive(Profile profile, ProfileActivationContext context, ModelProblemCollector problems) {
47 Activation activation = profile.getActivation();
48
49 if (activation == null) {
50 return false;
51 }
52
53 ActivationProperty property = activation.getProperty();
54
55 if (property == null) {
56 return false;
57 }
58
59 String name = property.getName();
60 boolean reverseName = false;
61
62 if (name != null && name.startsWith("!")) {
63 reverseName = true;
64 name = name.substring(1);
65 }
66
67 if (name == null || name.length() <= 0) {
68 problems.add(new ModelProblemCollectorRequest(Severity.ERROR, Version.BASE)
69 .setMessage("The property name is required to activate the profile " + profile.getId())
70 .setLocation(property.getLocation("")));
71 return false;
72 }
73
74
75
76
77
78
79 String sysValue = context.getUserProperties().get(name);
80 if (sysValue == null) {
81 sysValue = context.getSystemProperties().get(name);
82 }
83
84 String propValue = property.getValue();
85 if (StringUtils.isNotEmpty(propValue)) {
86 boolean reverseValue = false;
87 if (propValue.startsWith("!")) {
88 reverseValue = true;
89 propValue = propValue.substring(1);
90 }
91
92
93 boolean result = propValue.equals(sysValue);
94
95 return reverseValue ? !result : result;
96 } else {
97 boolean result = StringUtils.isNotEmpty(sysValue);
98
99 return reverseName ? !result : result;
100 }
101 }
102
103 @Override
104 public boolean presentInConfig(Profile profile, ProfileActivationContext context, ModelProblemCollector problems) {
105 Activation activation = profile.getActivation();
106
107 if (activation == null) {
108 return false;
109 }
110
111 ActivationProperty property = activation.getProperty();
112
113 if (property == null) {
114 return false;
115 }
116 return true;
117 }
118 }