From 83ace655e1114d43e7f849e8d9ad6280ce4b256a Mon Sep 17 00:00:00 2001 From: sjaakd Date: Thu, 5 Feb 2015 20:19:21 +0100 Subject: [PATCH] #449 Handle XmlGregoriancalendar from String with empty date format as xml datatype --- ...p.model.builtin.StringToXmlGregorianCalendar.ftl | 13 +++++++++---- .../org/mapstruct/ap/test/builtin/BuiltInTest.java | 12 +++++++++--- 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/processor/src/main/resources/org.mapstruct.ap.model.builtin.StringToXmlGregorianCalendar.ftl b/processor/src/main/resources/org.mapstruct.ap.model.builtin.StringToXmlGregorianCalendar.ftl index 3c3700c56..8d2a9e2c8 100644 --- a/processor/src/main/resources/org.mapstruct.ap.model.builtin.StringToXmlGregorianCalendar.ftl +++ b/processor/src/main/resources/org.mapstruct.ap.model.builtin.StringToXmlGregorianCalendar.ftl @@ -24,10 +24,15 @@ private XMLGregorianCalendar ${name}( String date, String dateFormat ) { } try { - DateFormat df = dateFormat != null ? new SimpleDateFormat( dateFormat ) : SimpleDateFormat.getInstance(); - GregorianCalendar c = new GregorianCalendar(); - c.setTime( df.parse( date ) ); - return DatatypeFactory.newInstance().newXMLGregorianCalendar( c ); + if ( dateFormat != null ) { + DateFormat df = new SimpleDateFormat( dateFormat ); + GregorianCalendar c = new GregorianCalendar(); + c.setTime( df.parse( date ) ); + return DatatypeFactory.newInstance().newXMLGregorianCalendar( c ); + } + else { + return DatatypeFactory.newInstance().newXMLGregorianCalendar( date ); + } } catch ( DatatypeConfigurationException ex ) { throw new RuntimeException( ex ); diff --git a/processor/src/test/java/org/mapstruct/ap/test/builtin/BuiltInTest.java b/processor/src/test/java/org/mapstruct/ap/test/builtin/BuiltInTest.java index 5a3dad954..35b0cc7e1 100644 --- a/processor/src/test/java/org/mapstruct/ap/test/builtin/BuiltInTest.java +++ b/processor/src/test/java/org/mapstruct/ap/test/builtin/BuiltInTest.java @@ -165,12 +165,18 @@ public class BuiltInTest { assertThat( target.getProp() ).isNotNull(); assertThat( target.getProp().toString() ).isEqualTo( "1999-07-05T00:00:00.000+02:00" ); - source.setProp( createLocaleDate( "31-08-1982 10:20:56" ) ); - + // direct,via lexical representation + source.setProp( "2000-03-04T23:00:00+03:00" ); target = StringToXmlGregCalMapper.INSTANCE.map( source ); assertThat( target ).isNotNull(); assertThat( target.getProp() ).isNotNull(); - assertThat( target.getProp().toString() ).isEqualTo( "1982-08-31T10:20:00.000+02:00" ); + assertThat( target.getProp().toString() ).isEqualTo( "2000-03-04T23:00:00+03:00" ); + + // null string + source.setProp( null ); + target = StringToXmlGregCalMapper.INSTANCE.map( source ); + assertThat( target ).isNotNull(); + assertThat( target.getProp() ).isNull(); }