1 package org.apache.maven.plugin.internal;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import java.util.Collection;
23 import java.util.HashMap;
24 import java.util.Map;
25
26 import org.apache.maven.plugin.descriptor.MojoDescriptor;
27 import org.apache.maven.plugin.descriptor.Parameter;
28 import org.codehaus.plexus.component.configurator.ConfigurationListener;
29
30
31
32
33
34
35
36 class ValidatingConfigurationListener
37 implements ConfigurationListener
38 {
39 private final Object mojo;
40
41 private final ConfigurationListener delegate;
42
43 private final Map<String, Parameter> missingParameters;
44
45 ValidatingConfigurationListener( Object mojo, MojoDescriptor mojoDescriptor, ConfigurationListener delegate )
46 {
47 this.mojo = mojo;
48 this.delegate = delegate;
49 this.missingParameters = new HashMap<>();
50
51 if ( mojoDescriptor.getParameters() != null )
52 {
53 for ( Parameter param : mojoDescriptor.getParameters() )
54 {
55 if ( param.isRequired() )
56 {
57 missingParameters.put( param.getName(), param );
58 }
59 }
60 }
61 }
62
63 public Collection<Parameter> getMissingParameters()
64 {
65 return missingParameters.values();
66 }
67
68 public void notifyFieldChangeUsingSetter( String fieldName, Object value, Object target )
69 {
70 delegate.notifyFieldChangeUsingSetter( fieldName, value, target );
71
72 if ( mojo == target )
73 {
74 notify( fieldName, value );
75 }
76 }
77
78 public void notifyFieldChangeUsingReflection( String fieldName, Object value, Object target )
79 {
80 delegate.notifyFieldChangeUsingReflection( fieldName, value, target );
81
82 if ( mojo == target )
83 {
84 notify( fieldName, value );
85 }
86 }
87
88 private void notify( String fieldName, Object value )
89 {
90 if ( value != null )
91 {
92 missingParameters.remove( fieldName );
93 }
94 }
95 }