1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.profiles.activation;
20
21 import java.io.File;
22 import java.io.IOException;
23
24 import org.apache.maven.model.Activation;
25 import org.apache.maven.model.ActivationFile;
26 import org.apache.maven.model.Profile;
27 import org.codehaus.plexus.interpolation.EnvarBasedValueSource;
28 import org.codehaus.plexus.interpolation.InterpolationException;
29 import org.codehaus.plexus.interpolation.MapBasedValueSource;
30 import org.codehaus.plexus.interpolation.RegexBasedInterpolator;
31 import org.codehaus.plexus.logging.LogEnabled;
32 import org.codehaus.plexus.logging.Logger;
33
34
35
36
37 @Deprecated
38 public class FileProfileActivator extends DetectedProfileActivator implements LogEnabled {
39 private Logger logger;
40
41 @Override
42 protected boolean canDetectActivation(Profile profile) {
43 return profile.getActivation() != null && profile.getActivation().getFile() != null;
44 }
45
46 @Override
47 public boolean isActive(Profile profile) {
48 Activation activation = profile.getActivation();
49
50 ActivationFile actFile = activation.getFile();
51
52 if (actFile != null) {
53
54 String fileString = actFile.getExists();
55
56 RegexBasedInterpolator interpolator = new RegexBasedInterpolator();
57 try {
58 interpolator.addValueSource(new EnvarBasedValueSource());
59 } catch (IOException e) {
60
61 }
62 interpolator.addValueSource(new MapBasedValueSource(System.getProperties()));
63
64 try {
65 if (fileString != null && !fileString.isEmpty()) {
66 fileString = interpolator.interpolate(fileString, "").replace("\\", "/");
67 File file = new File(fileString);
68 return file.exists();
69 }
70
71
72 fileString = actFile.getMissing();
73
74 if (fileString != null && !fileString.isEmpty()) {
75 fileString = interpolator.interpolate(fileString, "").replace("\\", "/");
76 File file = new File(fileString);
77 return !file.exists();
78 }
79 } catch (InterpolationException e) {
80 if (logger.isDebugEnabled()) {
81 logger.debug("Failed to interpolate missing file location for profile activator: " + fileString, e);
82 } else {
83 logger.warn("Failed to interpolate missing file location for profile activator: " + fileString
84 + ", enable verbose output (-X) for more details");
85 }
86 }
87 }
88
89 return false;
90 }
91
92 @Override
93 public void enableLogging(Logger logger) {
94 this.logger = logger;
95 }
96 }