diff --git a/processor/src/main/java/org/mapstruct/ap/model/source/builtin/BuiltInMappingMethods.java b/processor/src/main/java/org/mapstruct/ap/model/source/builtin/BuiltInMappingMethods.java index a7d778c7a..b05f20c66 100644 --- a/processor/src/main/java/org/mapstruct/ap/model/source/builtin/BuiltInMappingMethods.java +++ b/processor/src/main/java/org/mapstruct/ap/model/source/builtin/BuiltInMappingMethods.java @@ -18,10 +18,12 @@ */ package org.mapstruct.ap.model.source.builtin; -import java.util.Arrays; import java.util.List; import org.mapstruct.ap.model.common.TypeFactory; +import org.mapstruct.ap.util.Collections; +import org.mapstruct.ap.util.JavaTimeConstants; +import org.mapstruct.ap.util.NativeTypes; /** * Registry for all built-in methods. @@ -33,7 +35,7 @@ public class BuiltInMappingMethods { private final List builtInMethods; public BuiltInMappingMethods(TypeFactory typeFactory) { - builtInMethods = Arrays.asList( + builtInMethods = Collections.newArrayList( new JaxbElemToValue( typeFactory ), new ListOfJaxbElemToListOfValue( typeFactory ), new DateToXmlGregorianCalendar( typeFactory ), @@ -41,11 +43,18 @@ public class BuiltInMappingMethods { new StringToXmlGregorianCalendar( typeFactory ), new XmlGregorianCalendarToString( typeFactory ), new CalendarToXmlGregorianCalendar( typeFactory ), - new XmlGregorianCalendarToCalendar( typeFactory ), - new ZonedDateTimeToCalendar( typeFactory ), - new CalendarToZonedDateTime( typeFactory ) + new XmlGregorianCalendarToCalendar( typeFactory ) ); + + if ( isJava8TimeAvailable() ) { + builtInMethods.add( new ZonedDateTimeToCalendar( typeFactory ) ); + builtInMethods.add( new CalendarToZonedDateTime( typeFactory ) ); + } + } + + private static boolean isJava8TimeAvailable() { + return NativeTypes.isTypeAvailable( JavaTimeConstants.ZONED_DATE_TIME_FQN ); } public List getBuiltInMethods() { diff --git a/processor/src/main/java/org/mapstruct/ap/util/Collections.java b/processor/src/main/java/org/mapstruct/ap/util/Collections.java index 19bdc40d3..1b2913d1f 100644 --- a/processor/src/main/java/org/mapstruct/ap/util/Collections.java +++ b/processor/src/main/java/org/mapstruct/ap/util/Collections.java @@ -18,8 +18,11 @@ */ package org.mapstruct.ap.util; +import java.util.ArrayList; +import java.util.Arrays; import java.util.Collection; import java.util.HashSet; +import java.util.List; import java.util.Set; /** @@ -42,6 +45,14 @@ public class Collections { return set; } + public static List newArrayList(T... elements) { + List list = new ArrayList(); + + list.addAll( Arrays.asList( elements ) ); + + return list; + } + public static Set asSet(Collection collection, T... elements) { Set set = new HashSet( collection );