@@ -51,67 +51,23 @@ public final class DatePatternConverter extends LogEventPatternConverter impleme
5151
5252 private static final String DEFAULT_PATTERN = "yyyy-MM-dd HH:mm:ss,SSS" ;
5353
54- private abstract static class Formatter <F extends InstantFormatter > {
55-
56- final F delegate ;
57-
58- private Formatter (final F delegate ) {
59- this .delegate = delegate ;
60- }
61-
62- @ Nullable
63- public String toPattern () {
64- return null ;
65- }
66-
67- public TimeZone getTimeZone () {
68- return TimeZone .getDefault ();
69- }
70- }
71-
72- private static final class PatternFormatter extends Formatter <InstantPatternFormatter > {
73-
74- private PatternFormatter (final InstantPatternFormatter delegate ) {
75- super (delegate );
76- }
77-
78- @ Override
79- public String toPattern () {
80- return delegate .getPattern ();
81- }
82-
83- @ Override
84- public TimeZone getTimeZone () {
85- return delegate .getTimeZone ();
86- }
87- }
88-
89- private static final class NumberFormatter extends Formatter <InstantNumberFormatter > {
90-
91- private NumberFormatter (final InstantNumberFormatter delegate ) {
92- super (delegate );
93- }
94- }
95-
96- private final Formatter <?> formatter ;
54+ private final InstantFormatter formatter ;
9755
9856 private DatePatternConverter (@ Nullable final String [] options ) {
9957 super ("Date" , "date" );
10058 this .formatter = createFormatter (options );
10159 }
10260
103- private static Formatter <?> createFormatter (@ Nullable final String [] options ) {
61+ private static InstantFormatter createFormatter (@ Nullable final String [] options ) {
10462 try {
10563 return createFormatterUnsafely (options );
10664 } catch (final Exception error ) {
10765 logOptionReadFailure (options , error , "failed for options: {}, falling back to the default instance" );
10866 }
109- final InstantPatternFormatter delegateFormatter =
110- InstantPatternFormatter .newBuilder ().setPattern (DEFAULT_PATTERN ).build ();
111- return new PatternFormatter (delegateFormatter );
67+ return InstantPatternFormatter .newBuilder ().setPattern (DEFAULT_PATTERN ).build ();
11268 }
11369
114- private static Formatter <?> createFormatterUnsafely (@ Nullable final String [] options ) {
70+ private static InstantFormatter createFormatterUnsafely (@ Nullable final String [] options ) {
11571
11672 // Read options
11773 final String pattern = readPattern (options );
@@ -120,20 +76,19 @@ private static Formatter<?> createFormatterUnsafely(@Nullable final String[] opt
12076
12177 // Is it epoch seconds?
12278 if ("UNIX" .equals (pattern )) {
123- return new NumberFormatter ( InstantNumberFormatter .EPOCH_SECONDS_ROUNDED ) ;
79+ return InstantNumberFormatter .EPOCH_SECONDS_ROUNDED ;
12480 }
12581
12682 // Is it epoch milliseconds?
12783 if ("UNIX_MILLIS" .equals (pattern )) {
128- return new NumberFormatter ( InstantNumberFormatter .EPOCH_MILLIS_ROUNDED ) ;
84+ return InstantNumberFormatter .EPOCH_MILLIS_ROUNDED ;
12985 }
13086
131- final InstantPatternFormatter delegateFormatter = InstantPatternFormatter .newBuilder ()
87+ return InstantPatternFormatter .newBuilder ()
13288 .setPattern (pattern )
13389 .setTimeZone (timeZone )
13490 .setLocale (locale )
13591 .build ();
136- return new PatternFormatter (delegateFormatter );
13792 }
13893
13994 private static String readPattern (@ Nullable final String [] options ) {
@@ -320,7 +275,7 @@ public void format(final long epochMillis, final StringBuilder buffer) {
320275 */
321276 @ Deprecated
322277 public void format (final Instant instant , final StringBuilder buffer ) {
323- formatter .delegate . formatTo (buffer , instant );
278+ formatter .formatTo (buffer , instant );
324279 }
325280
326281 @ Override
@@ -361,13 +316,17 @@ public void format(final StringBuilder buffer, @Nullable final Object... objects
361316 * @return the pattern string describing this date format or {@code null} if the format does not have a pattern.
362317 */
363318 public String getPattern () {
364- return formatter .toPattern ();
319+ return (formatter instanceof InstantPatternFormatter )
320+ ? ((InstantPatternFormatter ) formatter ).getPattern ()
321+ : null ;
365322 }
366323
367324 /**
368325 * @return the time zone used by this date format
369326 */
370327 public TimeZone getTimeZone () {
371- return formatter .getTimeZone ();
328+ return (formatter instanceof InstantPatternFormatter )
329+ ? ((InstantPatternFormatter ) formatter ).getTimeZone ()
330+ : null ;
372331 }
373332}
0 commit comments