Skip to content

Commit ee94757

Browse files
committed
Don't use string builder and cache datetimeformatter
1 parent 90f9e9e commit ee94757

File tree

1 file changed

+14
-8
lines changed
  • vaadin-simple-grid-filter/src/main/java/software/xdev/vaadin/comparators/utl

1 file changed

+14
-8
lines changed

vaadin-simple-grid-filter/src/main/java/software/xdev/vaadin/comparators/utl/DateHelper.java

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,12 @@
1616
package software.xdev.vaadin.comparators.utl;
1717

1818
import java.time.format.DateTimeFormatter;
19+
import java.util.Collections;
20+
import java.util.List;
21+
import java.util.Map;
1922
import java.util.Objects;
23+
import java.util.WeakHashMap;
24+
import java.util.stream.Collectors;
2025

2126
import com.vaadin.flow.component.datepicker.DatePicker;
2227

@@ -26,6 +31,9 @@
2631
*/
2732
public final class DateHelper
2833
{
34+
private static final Map<List<String>, DateTimeFormatter> CACHED_FORMATTERS =
35+
Collections.synchronizedMap(new WeakHashMap<>());
36+
2937
private DateHelper()
3038
{
3139
}
@@ -34,13 +42,11 @@ public static DateTimeFormatter getDatePattern(final DatePicker.DatePickerI18n d
3442
{
3543
Objects.requireNonNull(datePickerI18n);
3644

37-
final StringBuilder patternString = new StringBuilder();
38-
39-
for(final String pattern : datePickerI18n.getDateFormats())
40-
{
41-
patternString.append('[').append(pattern).append(']');
42-
}
43-
44-
return DateTimeFormatter.ofPattern(patternString.toString());
45+
return CACHED_FORMATTERS.computeIfAbsent(
46+
datePickerI18n.getDateFormats(),
47+
formats -> DateTimeFormatter.ofPattern(formats
48+
.stream()
49+
.map(pattern -> "[" + pattern + "]")
50+
.collect(Collectors.joining())));
4551
}
4652
}

0 commit comments

Comments
 (0)