diff --git a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDDateFormat.java b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDDateFormat.java index d5003577..224b8dca 100644 --- a/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDDateFormat.java +++ b/library/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDDateFormat.java @@ -2,23 +2,24 @@ package org.mustangproject.ZUGFeRD; import java.text.SimpleDateFormat; import java.util.Date; +import java.util.function.Supplier; import org.mustangproject.ZUGFeRD.model.DateTimeTypeConstants; public enum ZUGFeRDDateFormat { - MONTH_OF_YEAR(DateTimeTypeConstants.MONTH, new SimpleDateFormat("yyyyMM")), - WEEK_OF_YEAR(DateTimeTypeConstants.WEEK, new SimpleDateFormat("yyyyww")), - DATE(DateTimeTypeConstants.DATE, new SimpleDateFormat("yyyyMMdd")); + MONTH_OF_YEAR(DateTimeTypeConstants.MONTH, () -> new SimpleDateFormat("yyyyMM")), + WEEK_OF_YEAR(DateTimeTypeConstants.WEEK, () -> new SimpleDateFormat("yyyyww")), + DATE(DateTimeTypeConstants.DATE, () -> new SimpleDateFormat("yyyyMMdd")); private String dateTimeType; - private SimpleDateFormat formatter; + private ThreadLocal formatter; private static final String QDT_FORMAT = "%s"; private static final String UDT_FORMAT = "%s"; - private ZUGFeRDDateFormat(String dateTimeType, SimpleDateFormat formatter) { + private ZUGFeRDDateFormat(String dateTimeType, Supplier formatter) { this.dateTimeType = dateTimeType; - this.formatter = formatter; + this.formatter = ThreadLocal.withInitial(formatter); } public String getDateTimeType() { @@ -26,7 +27,7 @@ public enum ZUGFeRDDateFormat { } public SimpleDateFormat getFormatter() { - return formatter; + return formatter.get(); } public String simpleFormat(Date date){