Package org.codehaus.plexus.util.introspection

# Class ReflectionValueExtractor

java.lang.Object
org.codehaus.plexus.util.introspection.ReflectionValueExtractor

public class ReflectionValueExtractor extends Object

Using simple dotted expressions to extract the values from an Object instance, For example we might want to extract a value like: `project.build.sourceDirectory`

The implementation supports indexed, nested and mapped properties similar to the JSP way.

Author:
  Jason van Zyl , Vincent Siveton
See Also:
  - http://struts.apache.org/1.x/struts-taglib/indexedprops.html

## Method Summary

Modifier and Type
Method
Description
`static Object`
`evaluate(String expression, Object root)`
The implementation supports indexed, nested and mapped properties.
`static Object`
`evaluate(String expression, Object root, boolean trimRootToken)`
The implementation supports indexed, nested and mapped properties.

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

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

## Method Details

### evaluate

public static Object evaluate(String expression, Object root) throws Exception

The implementation supports indexed, nested and mapped properties.

- nested properties should be defined by a dot, i.e. "user.address.street"
- indexed properties (java.util.List or array instance) should be contains `(\\w+)\\[(\\d+)\\]` pattern, i.e. "user.addresses[1].street"
- mapped properties should be contains `(\\w+)\\((.+)\\)` pattern, i.e. "user.addresses(myAddress).street"

Parameters:
  `expression` - not null expression
  `root` - not null object
Returns:
  the object defined by the expression
Throws:
  `Exception` - if any

### evaluate

public static Object evaluate(String expression, Object root, boolean trimRootToken) throws Exception

The implementation supports indexed, nested and mapped properties.

- nested properties should be defined by a dot, i.e. "user.address.street"
- indexed properties (java.util.List or array instance) should be contains `(\\w+)\\[(\\d+)\\]` pattern, i.e. "user.addresses[1].street"
- mapped properties should be contains `(\\w+)\\((.+)\\)` pattern, i.e. "user.addresses(myAddress).street"

Parameters:
  `expression` - not null expression
  `root` - not null object
  `trimRootToken` - root start
Returns:
  the object defined by the expression
Throws:
  `Exception` - if any