net.sourceforge.pmd.lang.rule.properties

## Class PropertyDescriptorWrapper<T>

- java.lang.Object
- - net.sourceforge.pmd.lang.rule.properties.PropertyDescriptorWrapper<T>

Type Parameters:
  `T` - The type of the underlying PropertyDescriptor.

All Implemented Interfaces:
  Comparable<PropertyDescriptor<?>>, PropertyDescriptor<T>

    public class PropertyDescriptorWrapper<T>
    extends Object
    implements PropertyDescriptor<T>

This class serves as a wrapper class for a PropertyDescriptor instance. It exists to allowing the `PropertyDescriptorFactory` to readily flag properties it has created, versus those created by Rule classes. This is used in the encoding of a Rule to XML format to distinguish Rule defined PropertyDescriptors and those which were originally defined in XML.

### Constructor Summary

Constructors
Constructor and Description
`PropertyDescriptorWrapper(PropertyDescriptor<T> propertyDescriptor)`

### Method Summary

Methods
`String` `asDelimitedString(T value)` Formats the object onto a string suitable for storage within the property map.
`Map<String,String>` `attributeValuesById()` Returns a map representing all the property attributes of the receiver in string form.
`Object[][]` `choices()` Returns a set of choice tuples if available, returns null if none are defined.
`int` `compareTo(PropertyDescriptor<?> o)`
`T` `defaultValue()` Default value to use when the user hasn't specified one or when they wish to revert to a known-good state.
`String` `description()` Describes the property and the role it plays within the rule it is specified for.
`boolean` `equals(Object obj)`
`String` `errorFor(Object value)` Validation function that returns a diagnostic error message for a sample property value.
`PropertyDescriptor<T>` `getPropertyDescriptor()`
`int` `hashCode()`
`boolean` `isMultiValue()` Returns whether the property is multi-valued, i.e. an array of strings, As unary property rule properties will return a value of one, you must use the get/setProperty accessors when working with the actual values.
`boolean` `isRequired()` Denotes whether the value is required before the rule can be executed.
`char` `multiValueDelimiter()` Return the character being used to delimit multiple property values within a single string.
`String` `name()` The name of the property without spaces as it serves as the key into the property map.
`int` `preferredRowCount()` If the datatype is a String then return the preferred number of rows to allocate in the text widget, returns a value of one for all other types.
`String` `propertyErrorFor(Rule rule)` A convenience method that returns an error string if the rule holds onto a property value that has a problem.
`String` `toString()`
`Class<T>` `type()` Denotes the value datatype.
`float` `uiOrder()` Denotes the relative order the property field should occupy if we are using an auto-generated UI to display and edit property values.
`T` `valueFrom(String propertyString)` If the property is multi-valued then return the separate values after parsing the propertyString provided.

### Methods inherited from class java.lang.Object

`clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

### Constructor Detail

#### PropertyDescriptorWrapper

    public PropertyDescriptorWrapper(PropertyDescriptor<T> propertyDescriptor)

### Method Detail

#### getPropertyDescriptor

    public PropertyDescriptor<T> getPropertyDescriptor()

#### asDelimitedString

    public String asDelimitedString(T value)

Description copied from interface: `PropertyDescriptor`
Formats the object onto a string suitable for storage within the property map.

Specified by:
  `asDelimitedString` in interface `PropertyDescriptor<T>`
Parameters:
  `value` - Object
Returns:
  String

#### choices

    public Object[][] choices()

Description copied from interface: `PropertyDescriptor`
Returns a set of choice tuples if available, returns null if none are defined.

Specified by:
  `choices` in interface `PropertyDescriptor<T>`
Returns:
  Object[][]

#### compareTo

    public int compareTo(PropertyDescriptor<?> o)

Specified by:
  `compareTo` in interface `Comparable<PropertyDescriptor<?>>`

#### defaultValue

    public T defaultValue()

Description copied from interface: `PropertyDescriptor`
Default value to use when the user hasn't specified one or when they wish to revert to a known-good state.

Specified by:
  `defaultValue` in interface `PropertyDescriptor<T>`
Returns:
  Object

#### description

    public String description()

Description copied from interface: `PropertyDescriptor`
Describes the property and the role it plays within the rule it is specified for. Could be used in a tooltip.

Specified by:
  `description` in interface `PropertyDescriptor<T>`
Returns:
  String

#### errorFor

    public String errorFor(Object value)

Description copied from interface: `PropertyDescriptor`
Validation function that returns a diagnostic error message for a sample property value. Returns null if the value is acceptable.

Specified by:
  `errorFor` in interface `PropertyDescriptor<T>`
Parameters:
  `value` - Object
Returns:
  String

#### isMultiValue

    public boolean isMultiValue()

Description copied from interface: `PropertyDescriptor`
Returns whether the property is multi-valued, i.e. an array of strings, As unary property rule properties will return a value of one, you must use the get/setProperty accessors when working with the actual values. When working with multi-value properties then the get/setProperties accessors must be used.

Specified by:
  `isMultiValue` in interface `PropertyDescriptor<T>`
Returns:
  boolean

#### isRequired

    public boolean isRequired()

Description copied from interface: `PropertyDescriptor`
Denotes whether the value is required before the rule can be executed. Has no meaning for primitive types such as booleans, ints, etc.

Specified by:
  `isRequired` in interface `PropertyDescriptor<T>`
Returns:
  boolean

#### multiValueDelimiter

    public char multiValueDelimiter()

Description copied from interface: `PropertyDescriptor`
Return the character being used to delimit multiple property values within a single string. You must ensure that this character does not appear within any rule property values to avoid deserialization errors.

Specified by:
  `multiValueDelimiter` in interface `PropertyDescriptor<T>`
Returns:
  char

#### name

    public String name()

Description copied from interface: `PropertyDescriptor`
The name of the property without spaces as it serves as the key into the property map.

Specified by:
  `name` in interface `PropertyDescriptor<T>`
Returns:
  String

#### preferredRowCount

    public int preferredRowCount()

Description copied from interface: `PropertyDescriptor`
If the datatype is a String then return the preferred number of rows to allocate in the text widget, returns a value of one for all other types. Useful for multi-line XPATH editors.

Specified by:
  `preferredRowCount` in interface `PropertyDescriptor<T>`
Returns:
  int

#### propertyErrorFor

    public String propertyErrorFor(Rule rule)

Description copied from interface: `PropertyDescriptor`
A convenience method that returns an error string if the rule holds onto a property value that has a problem. Returns null otherwise.

Specified by:
  `propertyErrorFor` in interface `PropertyDescriptor<T>`
Parameters:
  `rule` - Rule
Returns:
  String

#### type

    public Class<T> type()

Description copied from interface: `PropertyDescriptor`
Denotes the value datatype.

Specified by:
  `type` in interface `PropertyDescriptor<T>`
Returns:
  Class

#### uiOrder

    public float uiOrder()

Description copied from interface: `PropertyDescriptor`
Denotes the relative order the property field should occupy if we are using an auto-generated UI to display and edit property values. If the value returned has a non-zero fractional part then this is can be used to place adjacent fields on the same row. Example: name -> 0.0 description 1.0 minValue -> 2.0 maxValue -> 2.1 ..would have their fields placed like: name: [ ] description: [ ] minimum: [ ] maximum: [ ]

Specified by:
  `uiOrder` in interface `PropertyDescriptor<T>`
Returns:
  float

#### valueFrom

    public T valueFrom(String propertyString)
                throws IllegalArgumentException

Description copied from interface: `PropertyDescriptor`
If the property is multi-valued then return the separate values after parsing the propertyString provided. If it isn't a multi-valued property then the value will be returned within an array of size[1].

Specified by:
  `valueFrom` in interface `PropertyDescriptor<T>`
Parameters:
  `propertyString` - String
Returns:
  Object
Throws:
  `IllegalArgumentException`

#### attributeValuesById

    public Map<String,String> attributeValuesById()

Description copied from interface: `PropertyDescriptor`
Returns a map representing all the property attributes of the receiver in string form.

Specified by:
  `attributeValuesById` in interface `PropertyDescriptor<T>`
Returns:
  Map<String, String>

#### equals

    public boolean equals(Object obj)

Overrides:
  `equals` in class `Object`

#### hashCode

    public int hashCode()

Overrides:
  `hashCode` in class `Object`

#### toString

    public String toString()

Overrides:
  `toString` in class `Object`