[ 
https://issues.apache.org/jira/browse/SANDBOX-501?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Matthew P Mann updated SANDBOX-501:
-----------------------------------
    Attachment: commons-beanutils2.java8.patch

Benedikt,

What do you think of this patch?

{code}
@Test
public void test() throws MalformedURLException, ParseException {
    final DateFormat dateFormat = new SimpleDateFormat("MMMM d, yyyy");
    final BeanUtils beanUtils = BeanUtils
        .builder()
        .withDefaultTransformers()
        
.withTransformer(MethodTransformer.from(String.class).to(Date.class).using(dateFormat,
 "parse"))
        
.withTransformer(FunctionTransformer.from(String.class).to(PhoneNumber.class).using(PhoneNumber::parse))
        
.withTransformer(FunctionTransformer.from(String.class).to(State.class).using(State::valueOf))
        .build();
    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(State.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,
        beanUtils
            .bean(new Person())
            .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(
                beanUtils
                    .bean(new Address())
                    .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}

-Matt

> Add configurable type conversion support
> ----------------------------------------
>
>                 Key: SANDBOX-501
>                 URL: https://issues.apache.org/jira/browse/SANDBOX-501
>             Project: Commons Sandbox
>          Issue Type: New Feature
>          Components: BeanUtils2
>            Reporter: Benedikt Ritter
>         Attachments: commons-beanutils2.java8.patch
>
>
> BeanUtils1 supports automatic type conversion when setting properties. This 
> should be added to BeanUtils2. 
> A problem of the implementation of BeanUtils1 is, that the registry of 
> converts is cached in the BeanUtils class. BeanUtils2 should provide an API 
> for creating new instances of the o.a.c.beanutils2.BeanUtils with a 
> customized typ conversion registry.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to