1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.plugin.internal;
20
21 import javax.inject.Named;
22 import javax.inject.Singleton;
23
24 import org.apache.maven.plugin.descriptor.MojoDescriptor;
25 import org.apache.maven.plugin.descriptor.Parameter;
26 import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluator;
27 import org.codehaus.plexus.configuration.PlexusConfiguration;
28 import org.slf4j.Logger;
29 import org.slf4j.LoggerFactory;
30
31
32
33
34
35
36 @Named
37 @Singleton
38 public class ReadOnlyPluginParametersValidator extends AbstractMavenPluginParametersValidator {
39 private static final Logger LOGGER = LoggerFactory.getLogger(ReadOnlyPluginParametersValidator.class);
40
41 @Override
42 protected Logger getLogger() {
43 return LOGGER;
44 }
45
46 @Override
47 protected String getParameterLogReason(Parameter parameter) {
48 return "is read-only, must not be used in configuration";
49 }
50
51 @Override
52 public void validate(
53 MojoDescriptor mojoDescriptor,
54 PlexusConfiguration pomConfiguration,
55 ExpressionEvaluator expressionEvaluator) {
56 if (!LOGGER.isWarnEnabled()) {
57 return;
58 }
59
60 mojoDescriptor.getParameters().stream()
61 .filter(parameter -> !parameter.isEditable())
62 .forEach(parameter -> checkParameter(parameter, pomConfiguration, expressionEvaluator));
63 }
64
65 protected void checkParameter(
66 Parameter parameter, PlexusConfiguration pomConfiguration, ExpressionEvaluator expressionEvaluator) {
67 PlexusConfiguration config = pomConfiguration.getChild(parameter.getName(), false);
68
69 if (isValueSet(config, expressionEvaluator)) {
70 logParameter(parameter);
71 }
72 }
73 }