Defensively check javaUtilOptionalEmpty

Issue: SPR-11888
master
Juergen Hoeller 10 years ago
parent cff36d68b1
commit bc1f19ce18
  1. 10
      spring-beans/src/main/java/org/springframework/beans/TypeConverterDelegate.java

@ -60,7 +60,8 @@ class TypeConverterDelegate {
try { try {
Class<?> clazz = ClassUtils.forName("java.util.Optional", TypeConverterDelegate.class.getClassLoader()); Class<?> clazz = ClassUtils.forName("java.util.Optional", TypeConverterDelegate.class.getClassLoader());
javaUtilOptionalEmpty = ClassUtils.getMethod(clazz, "empty").invoke(null); javaUtilOptionalEmpty = ClassUtils.getMethod(clazz, "empty").invoke(null);
} catch (Exception ex) { }
catch (Exception ex) {
// Java 8 not available - conversion to Optional not supported then. // Java 8 not available - conversion to Optional not supported then.
} }
} }
@ -257,8 +258,11 @@ class TypeConverterDelegate {
standardConversion = true; standardConversion = true;
} }
} }
else if (requiredType.equals(javaUtilOptionalEmpty.getClass())) { else {
convertedValue = javaUtilOptionalEmpty; // convertedValue == null
if (javaUtilOptionalEmpty != null && requiredType.equals(javaUtilOptionalEmpty.getClass())) {
convertedValue = javaUtilOptionalEmpty;
}
} }
if (!ClassUtils.isAssignableValue(requiredType, convertedValue)) { if (!ClassUtils.isAssignableValue(requiredType, convertedValue)) {

Loading…
Cancel
Save