org.apache.commons.beanutils.expression

## Class DefaultResolver

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

- All Implemented Interfaces:
    Resolver

      public class DefaultResolver
      extends 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
    Constructor and Description
    `DefaultResolver()` Default Constructor.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `int` | `getIndex(String expression)` Return the index value from the property expression or -1.
    `String` | `getKey(String expression)` Return the map key from the property expression or `null`.
    `String` | `getProperty(String expression)` Return the property name from the property expression.
    `boolean` | `hasNested(String expression)` Indicates whether or not the expression contains nested property expressions or not.
    `boolean` | `isIndexed(String expression)` Indicate whether the expression is for an indexed property or not.
    `boolean` | `isMapped(String expression)` Indicate whether the expression is for a mapped property or not.
    `String` | `next(String expression)` Extract the next property expression from the current expression.
    `String` | `remove(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(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:
        `IllegalArgumentException` - If the indexed property is illegally formed or has an invalid (non-numeric) value.

    - #### getKey

          public String getKey(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:
        `IllegalArgumentException` - If the mapped property is illegally formed.

    - #### getProperty

          public String getProperty(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(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(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(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 String next(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 String remove(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

Copyright © 2000–2019 The Apache Software Foundation. All rights reserved.