commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Matthew P Mann (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (BEANUTILS-481) [beanutils2] Support for nested properties and automatic conversion.
Date Wed, 04 Nov 2015 00:47:27 GMT

    [ 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)

Mime
View raw message