Hi all,
one of the goal of BeanUtils2 is to provide the same functionality as
BeanUtils1. In BeanUtils1 you can do something like this:
BeanUtils.getProperty(person, "address.city.zipCode");
This would be translated into:
person.getAddress().getCity().getZipCode();
The same can be done with mapped and indexed properties:
BeanUtils.getProperty(person, "contact(5).name");
which would be translated to:
person.getContact(5).getName();
BeanUtils2 provides a fluent API where the first example would be done via:
on(person).get("address").get("city").get("zipCode")
and the second:
on(person).getIndexed("contact").at(5).get("name")
We are currently thinking about how we can implement the property
expressions. We are discussing this in SANDBOX-464 [1] and there is already
a patch. I'm currently unsure whether we should allow mixing up the fluent
API and property expressions. The contributor makes some good examples of
what kind of awful code could be created:
on(addressBook).get("provider(google).contact[5]
").getMapped("address").with("home").get("street.yetAnotherNestedProperty")
on the other hand I don't want to force people into doing stuff like this:
String path = ...int pos = ...
on(bean).get(path + "[" + pos + "]");
Currently I'm tempted to allow mixing up both API styles, but I'd like to
here your opinion first.
Benedikt
[1] https://issues.apache.org/jira/browse/SANDBOX-464
--
http://people.apache.org/~britter/
http://www.systemoutprintln.de/
http://twitter.com/BenediktRitter
http://github.com/britter