View Javadoc

1   /**
2    * BSD-style license; for more info see http://pmd.sourceforge.net/license.html
3    */
4   package net.sourceforge.pmd;
5   
6   import java.util.Map;
7   
8   /**
9    * A factory to create {@link PropertyDescriptor}s based on a map of values.
10   * 
11   * @author Brian Remedios
12   */
13  public interface PropertyDescriptorFactory {
14  
15      /**
16       * The type of the value of the {@link PropertyDescriptor} created by this
17       * factory.
18       * 
19       * @return the type of the value.
20       */
21      Class<?> valueType();
22  
23      /**
24       * Denote the identifiers of the expected fields paired with booleans
25       * denoting whether they are required (non-null) or not.
26       * 
27       * @return Map
28       */
29      Map<String, Boolean> expectedFields();
30  
31      /**
32       * Create a property descriptor of the appropriate type using the values
33       * provided.
34       * 
35       * @param valuesById the map of values
36       * @return a new and initialized {@link PropertyDescriptor}
37       */
38      PropertyDescriptor<?> createWith(Map<String, String> valuesById);
39  }