From ca0448260f3bdc067cc94024be6bed2d966ddb19 Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Wed, 25 Sep 2024 12:45:20 +0200 Subject: [PATCH] Convert DateTimeException to expected IllegalArgumentException Closes gh-33545 --- .../beans/propertyeditors/ZoneIdEditor.java | 15 +++++++++++---- .../beans/propertyeditors/ZoneIdEditorTests.java | 9 ++++++++- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/spring-beans/src/main/java/org/springframework/beans/propertyeditors/ZoneIdEditor.java b/spring-beans/src/main/java/org/springframework/beans/propertyeditors/ZoneIdEditor.java index 4992e33aeb..cee4801e66 100644 --- a/spring-beans/src/main/java/org/springframework/beans/propertyeditors/ZoneIdEditor.java +++ b/spring-beans/src/main/java/org/springframework/beans/propertyeditors/ZoneIdEditor.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2022 the original author or authors. + * Copyright 2002-2024 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. @@ -17,16 +17,18 @@ package org.springframework.beans.propertyeditors; import java.beans.PropertyEditorSupport; +import java.time.DateTimeException; import java.time.ZoneId; import org.springframework.util.StringUtils; /** - * Editor for {@code java.time.ZoneId}, translating zone ID Strings into {@code ZoneId} - * objects. Exposes the {@code TimeZone} ID as a text representation. + * Editor for {@code java.time.ZoneId}, translating time zone Strings into {@code ZoneId} + * objects. Exposes the time zone as a text representation. * * @author Nicholas Williams * @author Sam Brannen + * @author Juergen Hoeller * @since 4.0 * @see java.time.ZoneId * @see TimeZoneEditor @@ -38,7 +40,12 @@ public class ZoneIdEditor extends PropertyEditorSupport { if (StringUtils.hasText(text)) { text = text.trim(); } - setValue(ZoneId.of(text)); + try { + setValue(ZoneId.of(text)); + } + catch (DateTimeException ex) { + throw new IllegalArgumentException(ex.getMessage(), ex); + } } @Override diff --git a/spring-beans/src/test/java/org/springframework/beans/propertyeditors/ZoneIdEditorTests.java b/spring-beans/src/test/java/org/springframework/beans/propertyeditors/ZoneIdEditorTests.java index 535f0ed3ad..932a78fdbd 100644 --- a/spring-beans/src/test/java/org/springframework/beans/propertyeditors/ZoneIdEditorTests.java +++ b/spring-beans/src/test/java/org/springframework/beans/propertyeditors/ZoneIdEditorTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2023 the original author or authors. + * Copyright 2002-2024 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. @@ -23,10 +23,12 @@ import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.ValueSource; import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException; /** * @author Nicholas Williams * @author Sam Brannen + * @author Juergen Hoeller */ class ZoneIdEditorTests { @@ -69,4 +71,9 @@ class ZoneIdEditorTests { assertThat(editor.getAsText()).as("The text version is not correct.").isEqualTo("America/New_York"); } + @Test + void correctExceptionForInvalid() { + assertThatIllegalArgumentException().isThrownBy(() -> editor.setAsText("INVALID")).withMessageContaining("INVALID"); + } + }