View Javadoc

    1   package net.sourceforge.pmd.properties;
    2
    3   import net.sourceforge.pmd.util.StringUtil;
    4
    5   /***
    6    * No, subclasses are not necessarily scalar per se, they're just easy to parse without error.
    7    * If you can come up with a better name...
    8    *
    9    * @author Brian Remedios
    10   * @version $Revision$
    11   */
    12  public abstract class AbstractScalarProperty extends AbstractPMDProperty {
    13
    14  	/***
    15  	 * Constructor for AbstractScalarProperty.
    16  	 * @param theName String
    17  	 * @param theDescription String
    18  	 * @param theDefault Object
    19  	 * @param theUIOrder float
    20  	 */
    21  	public AbstractScalarProperty(String theName, String theDescription, Object theDefault, float theUIOrder) {
    22  		super(theName, theDescription, theDefault, theUIOrder);
    23  	}
    24
    25  	/***
    26  	 * Method createFrom.
    27  	 * @param value String
    28  	 * @return Object
    29  	 */
    30  	protected abstract Object createFrom(String value);
    31
    32  	/***
    33  	 * Method arrayFor.
    34  	 * @param size int
    35  	 * @return Object[]
    36  	 */
    37  	protected abstract Object[] arrayFor(int size);
    38
    39  	/***
    40  	 * Method valueFrom.
    41  	 * @param valueString String
    42  	 * @return Object[]
    43  	 * @throws IllegalArgumentException
    44  	 * @see net.sourceforge.pmd.PropertyDescriptor#valueFrom(String)
    45  	 */
    46  	public Object valueFrom(String valueString) throws IllegalArgumentException {
    47
    48  		if (maxValueCount() == 1) return createFrom(valueString);
    49
    50  		String[] strValues = StringUtil.substringsOf(valueString, multiValueDelimiter);
    51
    52  		Object[] values = arrayFor(strValues.length);
    53  		for (int i=0; i<strValues.length; i++) values[i] = createFrom(strValues[i]);
    54  		return values;
    55  	}
    56  }