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
40 private final Object mojo;
41
42 private final ConfigurationListener delegate;
43
44 private final Map<String, Parameter> missingParameters;
45
46 public ValidatingConfigurationListener( Object mojo, MojoDescriptor mojoDescriptor, ConfigurationListener delegate )
47 {
48 this.mojo = mojo;
49 this.delegate = delegate;
50 this.missingParameters = new HashMap<String, Parameter>();
51
52 if ( mojoDescriptor.getParameters() != null )
53 {
54 for ( Parameter param : mojoDescriptor.getParameters() )
55 {
56 if ( param.isRequired() )
57 {
58 missingParameters.put( param.getName(), param );
59 }
60 }
61 }
62 }
63
64 public Collection<Parameter> getMissingParameters()
65 {
66 return missingParameters.values();
67 }
68
69 public void notifyFieldChangeUsingSetter( String fieldName, Object value, Object target )
70 {
71 delegate.notifyFieldChangeUsingSetter( fieldName, value, target );
72
73 if ( mojo == target )
74 {
75 notify( fieldName, value );
76 }
77 }
78
79 public void notifyFieldChangeUsingReflection( String fieldName, Object value, Object target )
80 {
81 delegate.notifyFieldChangeUsingReflection( fieldName, value, target );
82
83 if ( mojo == target )
84 {
85 notify( fieldName, value );
86 }
87 }
88
89 private void notify( String fieldName, Object value )
90 {
91 if ( value != null )
92 {
93 missingParameters.remove( fieldName );
94 }
95 }
96
97 }