From 0922569f0fe1391a09204ab1ec403321dd85d2bf Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Fri, 28 Aug 2020 22:21:09 +0200 Subject: [PATCH] Specifically detect Joda-Time 2.x Closes gh-25655 --- .../DefaultFormattingConversionService.java | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/spring-context/src/main/java/org/springframework/format/support/DefaultFormattingConversionService.java b/spring-context/src/main/java/org/springframework/format/support/DefaultFormattingConversionService.java index d18c9ba1e871..77316eaf4b14 100644 --- a/spring-context/src/main/java/org/springframework/format/support/DefaultFormattingConversionService.java +++ b/spring-context/src/main/java/org/springframework/format/support/DefaultFormattingConversionService.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2017 the original author or authors. + * Copyright 2002-2020 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -39,7 +39,7 @@ * {@link DefaultConversionService#addDefaultConverters addDefaultConverters} method. * *

Automatically registers formatters for JSR-354 Money & Currency, JSR-310 Date-Time - * and/or Joda-Time, depending on the presence of the corresponding API on the classpath. + * and/or Joda-Time 2.x, depending on the presence of the corresponding API on the classpath. * * @author Chris Beams * @author Juergen Hoeller @@ -47,11 +47,15 @@ */ public class DefaultFormattingConversionService extends FormattingConversionService { - private static final boolean jsr354Present = ClassUtils.isPresent( - "javax.money.MonetaryAmount", DefaultFormattingConversionService.class.getClassLoader()); + private static final boolean jsr354Present; - private static final boolean jodaTimePresent = ClassUtils.isPresent( - "org.joda.time.LocalDate", DefaultFormattingConversionService.class.getClassLoader()); + private static final boolean jodaTimePresent; + + static { + ClassLoader classLoader = DefaultFormattingConversionService.class.getClassLoader(); + jsr354Present = ClassUtils.isPresent("javax.money.MonetaryAmount", classLoader); + jodaTimePresent = ClassUtils.isPresent("org.joda.time.YearMonth", classLoader); + } /** @@ -78,7 +82,7 @@ public DefaultFormattingConversionService(boolean registerDefaultFormatters) { * Create a new {@code DefaultFormattingConversionService} with the set of * {@linkplain DefaultConversionService#addDefaultConverters default converters} and, * based on the value of {@code registerDefaultFormatters}, the set of - * {@linkplain #addDefaultFormatters default formatters} + * {@linkplain #addDefaultFormatters default formatters}. * @param embeddedValueResolver delegated to {@link #setEmbeddedValueResolver(StringValueResolver)} * prior to calling {@link #addDefaultFormatters}. * @param registerDefaultFormatters whether to register default formatters