[
https://issues.apache.org/jira/browse/BEANUTILS-481?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14988616#comment-14988616
]
Matthew P Mann commented on BEANUTILS-481:
------------------------------------------
Benedikt,
See the attached commons-beanutils2.conversion-only.patch. There is a default
transformer registry which is cloned if additional transformers/converters are
registered. We would, of course, want to beef up the variety of default
converters.
I'd consider using commons-convert, but I have a problem with the core
interface.
https://commons.apache.org/sandbox/commons-convert/apidocs/org/apache/commons/convert/Converter.html
If a converter can potentially support multiple source/target pairings (as
suggested by the canConvert(...) method), how could it have a single
sourceClass and a single targetClass (as suggested by getSourceClass() and
getTargetClass())?
-Matt
> [beanutils2] Support for nested properties and automatic conversion.
> --------------------------------------------------------------------
>
> Key: BEANUTILS-481
> URL: https://issues.apache.org/jira/browse/BEANUTILS-481
> Project: Commons BeanUtils
> Issue Type: Improvement
> Reporter: Matthew P Mann
> Fix For: 2.0
>
> Attachments: commons-beanutils2.conversion-only.patch,
> commons-beanutils2.patch
>
>
> Please consider the attached patch for the commons-beanutils2 project. I
> added support for nested properties and automatic conversion. Excerpt from
> AutoConversionTest:
> {code}
> final DateFormat dateFormat = new SimpleDateFormat("MMMM d, yyyy");
> final TransformerRegistry transformerRegistry = new TransformerRegistry()
> .register(new StringToDate(dateFormat))
> .register(new IntegerToString())
> .register(new StringToColor())
> .register(new IntegerToColor())
> .register(new StringToURL())
> .register(new StringToPhoneNumber());
> final PhoneNumber phoneNumber = new PhoneNumber();
> phoneNumber.setAreaCode("202");
> phoneNumber.setPrefix("456");
> phoneNumber.setLineNumber("1111");
> final Address address = new Address();
> address.setStreetAddress("1600 Pennsylvania Avenue Northwest");
> address.setCity("Washington");
> address.setStateCode("DC");
> address.setPostalCode("20500");
> address.setCountryCode("US");
> final Person person = new Person();
> person.setFirstName("Barack");
> person.setLastName("Obama");
> person.setBirthDate(dateFormat.parse("August 4, 1961"));
> person.setEyeColor(Color.decode("#362819"));
> person.setHairColor(GRAY);
> person.setPhoneNumber(phoneNumber);
> person.setAddress(address);
> person.setWebsite(new URL("https://www.barackobama.com/"));
> assertEquals(person, on(new Person(), transformerRegistry)
> .set("firstName").with("Barack")
> .set("lastName").with("Obama")
> .set("birthDate").with("August 4, 1961")
> .set("hairColor").with(0x808080)
> .set("eyeColor").with("#362819")
> .set("website").with("https://www.barackobama.com/")
> .set("phoneNumber").with("202-456-1111")
> .set("address").with(new Address())
> .set("address.streetAddress").with("1600 Pennsylvania Avenue Northwest")
> .set("address.city").with("Washington")
> .set("address.stateCode").with("DC")
> .set("address.postalCode").with(20500)
> .set("address.countryCode").with("US")
> .get());
> {code}
> Thanks,
> Matt
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)