diff --git a/server/src/main/java/com/mirth/connect/client/core/api/providers/CalendarParamConverterProvider.java b/server/src/main/java/com/mirth/connect/client/core/api/providers/CalendarParamConverterProvider.java index f194439702..486c89038f 100644 --- a/server/src/main/java/com/mirth/connect/client/core/api/providers/CalendarParamConverterProvider.java +++ b/server/src/main/java/com/mirth/connect/client/core/api/providers/CalendarParamConverterProvider.java @@ -10,7 +10,7 @@ package com.mirth.connect.client.core.api.providers; import javax.inject.Singleton; -import javax.ws.rs.ProcessingException; +import javax.ws.rs.BadRequestException; import javax.ws.rs.ext.ParamConverter; import javax.ws.rs.ext.ParamConverterProvider; import javax.ws.rs.ext.Provider; @@ -49,7 +49,7 @@ public T fromString(String value) { T result = (T) calendar; return result; } catch (DateTimeParseException e) { - throw new ProcessingException(e); + throw new BadRequestException("Invalid date '" + value + "'. Expected format yyyy-MM-dd'T'HH:mm:ss.SSSZ, for example 1985-10-26T09:00:00.000-0700.", e); } } diff --git a/server/src/test/java/com/mirth/connect/client/core/api/providers/CalendarParamConverterProviderTest.java b/server/src/test/java/com/mirth/connect/client/core/api/providers/CalendarParamConverterProviderTest.java new file mode 100644 index 0000000000..e02f120d27 --- /dev/null +++ b/server/src/test/java/com/mirth/connect/client/core/api/providers/CalendarParamConverterProviderTest.java @@ -0,0 +1,51 @@ +// SPDX-License-Identifier: MPL-2.0 +// SPDX-FileCopyrightText: Open Integration Engine Contributors + +package com.mirth.connect.client.core.api.providers; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.fail; + +import java.util.Calendar; + +import javax.ws.rs.BadRequestException; +import javax.ws.rs.core.Response; +import javax.ws.rs.ext.ParamConverter; + +import org.junit.BeforeClass; +import org.junit.Test; + +public class CalendarParamConverterProviderTest { + + private static ParamConverter converter; + + @BeforeClass + public static void setup() { + converter = new CalendarParamConverterProvider().getConverter(Calendar.class, null, null); + } + + @Test + public void testNullReturnsNull() { + assertNull(converter.fromString(null)); + } + + @Test + public void testValidDateRoundTrips() { + String value = "1985-10-26T09:00:00.000-0700"; + Calendar calendar = converter.fromString(value); + assertNotNull(calendar); + assertEquals(value, converter.toString(calendar)); + } + + @Test + public void testInvalidDateThrowsBadRequest() { + try { + converter.fromString("1985"); + fail("Expected BadRequestException for a malformed date"); + } catch (BadRequestException e) { + assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), e.getResponse().getStatus()); + } + } +}