[
https://issues.apache.org/jira/browse/BEANUTILS-481?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14988626#comment-14988626
]
Matthew P Mann commented on BEANUTILS-481:
------------------------------------------
{code}
public class AutoConversionTest {
@Test
public void test() throws MalformedURLException, ParseException {
final DateFormat dateFormat = new SimpleDateFormat("MMMM d,
yyyy");
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())
.register(new StringToDate(dateFormat))
.register(new StringToPhoneNumber())
.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(
on(new Address())
.register(new StringToState())
.set("streetAddress").with("1600
Pennsylvania Avenue Northwest")
.set("city").with("Washington")
.set("stateCode").with("DC")
.set("postalCode").with(20500)
.set("countryCode").with("US")
.get()
)
.get());
}
}
{code}
> [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)