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(); }