/** * BSD-style license; for more info see http://pmd.sourceforge.net/license.html */ package net.sourceforge.pmd; import java.util.Map; /** * A factory to create {@link PropertyDescriptor}s based on a map of values. * * @author Brian Remedios */ public interface PropertyDescriptorFactory { /** * The type of the value of the {@link PropertyDescriptor} created by this * factory. * * @return the type of the value. */ Class<?> valueType(); /** * Denote the identifiers of the expected fields paired with booleans * denoting whether they are required (non-null) or not. * * @return Map */ Map<String, Boolean> expectedFields(); /** * Create a property descriptor of the appropriate type using the values * provided. * * @param valuesById * the map of values * @return a new and initialized {@link PropertyDescriptor} */ PropertyDescriptor<?> createWith(Map<String, String> valuesById); }