Package org.apache.commons.beanutils.expression

## Class DefaultResolver

- java.lang.Object
- - org.apache.commons.beanutils.expression.DefaultResolver

All Implemented Interfaces:
  `Resolver`

    public class DefaultResolver
    extends java.lang.Object
    implements Resolver

Default Property Name Expression `Resolver` Implementation.

This class assists in resolving property names in the following five formats, with the layout of an identifying String in parentheses:

- Simple (`name`) - The specified `name` identifies an individual property of a particular JavaBean. The name of the actual getter or setter method to be used is determined using standard JavaBeans instrospection, so that (unless overridden by a `BeanInfo` class, a property named "xyz" will have a getter method named `getXyz()` or (for boolean properties only) `isXyz()`, and a setter method named `setXyz()`.
- Nested (`name1.name2.name3`) The first name element is used to select a property getter, as for simple references above. The object returned for this property is then consulted, using the same approach, for a property getter for a property named `name2`, and so on. The property value that is ultimately retrieved or modified is the one identified by the last name element.
- Indexed (`name[index]`) - The underlying property value is assumed to be an array, or this JavaBean is assumed to have indexed property getter and setter methods. The appropriate (zero-relative) entry in the array is selected. `List` objects are now also supported for read/write. You simply need to define a getter that returns the `List`
- Mapped (`name(key)`) - The JavaBean is assumed to have an property getter and setter methods with an additional attribute of type `java.lang.String`.
- Combined (`name1.name2[index].name3(key)`) - Combining mapped, nested, and indexed references is also supported.

Since:
  1.8.0
Version:
  $Id$

### Constructor Summary

Constructors
`DefaultResolver()` Default Constructor.

### Method Summary

All Methods Instance Methods Concrete Methods
`int` `getIndex​(java.lang.String expression)` Return the index value from the property expression or -1.
`java.lang.String` `getKey​(java.lang.String expression)` Return the map key from the property expression or `null`.
`java.lang.String` `getProperty​(java.lang.String expression)` Return the property name from the property expression.
`boolean` `hasNested​(java.lang.String expression)` Indicates whether or not the expression contains nested property expressions or not.
`boolean` `isIndexed​(java.lang.String expression)` Indicate whether the expression is for an indexed property or not.
`boolean` `isMapped​(java.lang.String expression)` Indicate whether the expression is for a mapped property or not.
`java.lang.String` `next​(java.lang.String expression)` Extract the next property expression from the current expression.
`java.lang.String` `remove​(java.lang.String expression)` Remove the last property expresson from the current expression.

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

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Constructor Detail

#### DefaultResolver

    public DefaultResolver()

Default Constructor.

### Method Detail

#### getIndex

    public int getIndex​(java.lang.String expression)

Return the index value from the property expression or -1.

Specified by:
  `getIndex` in interface `Resolver`
Parameters:
  `expression` - The property expression
Returns:
  The index value or -1 if the property is not indexed
Throws:
  `java.lang.IllegalArgumentException` - If the indexed property is illegally formed or has an invalid (non-numeric) value.

#### getKey

    public java.lang.String getKey​(java.lang.String expression)

Return the map key from the property expression or `null`.

Specified by:
  `getKey` in interface `Resolver`
Parameters:
  `expression` - The property expression
Returns:
  The index value
Throws:
  `java.lang.IllegalArgumentException` - If the mapped property is illegally formed.

#### getProperty

    public java.lang.String getProperty​(java.lang.String expression)

Return the property name from the property expression.

Specified by:
  `getProperty` in interface `Resolver`
Parameters:
  `expression` - The property expression
Returns:
  The property name

#### hasNested

    public boolean hasNested​(java.lang.String expression)

Indicates whether or not the expression contains nested property expressions or not.

Specified by:
  `hasNested` in interface `Resolver`
Parameters:
  `expression` - The property expression
Returns:
  The next property expression

#### isIndexed

    public boolean isIndexed​(java.lang.String expression)

Indicate whether the expression is for an indexed property or not.

Specified by:
  `isIndexed` in interface `Resolver`
Parameters:
  `expression` - The property expression
Returns:
  `true` if the expresion is indexed, otherwise `false`

#### isMapped

    public boolean isMapped​(java.lang.String expression)

Indicate whether the expression is for a mapped property or not.

Specified by:
  `isMapped` in interface `Resolver`
Parameters:
  `expression` - The property expression
Returns:
  `true` if the expresion is mapped, otherwise `false`

#### next

    public java.lang.String next​(java.lang.String expression)

Extract the next property expression from the current expression.

Specified by:
  `next` in interface `Resolver`
Parameters:
  `expression` - The property expression
Returns:
  The next property expression

#### remove

    public java.lang.String remove​(java.lang.String expression)

Remove the last property expresson from the current expression.

Specified by:
  `remove` in interface `Resolver`
Parameters:
  `expression` - The property expression
Returns:
  The new expression value, with first property expression removed - null if there are no more expressions