From 378cef0ad3dafbc7f3df3184487933c014637744 Mon Sep 17 00:00:00 2001 From: Michael Zalewski Date: Fri, 22 Jun 2018 10:44:03 -0400 Subject: [PATCH 1/2] Add LocalDateConverterProvider.java and unit test --- .../param/LocalDateConverterProvider.java | 38 ++++++++++++++++ .../param/LocalDateConverterProviderTest.java | 43 +++++++++++++++++++ 2 files changed, 81 insertions(+) create mode 100644 src/main/java/edu/psu/swe/commons/jaxrs/converters/param/LocalDateConverterProvider.java create mode 100644 src/test/java/edu/psu/swe/common/jaxrs/converters/param/LocalDateConverterProviderTest.java diff --git a/src/main/java/edu/psu/swe/commons/jaxrs/converters/param/LocalDateConverterProvider.java b/src/main/java/edu/psu/swe/commons/jaxrs/converters/param/LocalDateConverterProvider.java new file mode 100644 index 0000000..5349d13 --- /dev/null +++ b/src/main/java/edu/psu/swe/commons/jaxrs/converters/param/LocalDateConverterProvider.java @@ -0,0 +1,38 @@ +package edu.psu.swe.commons.jaxrs.converters.param; + +import java.lang.annotation.Annotation; +import java.lang.reflect.Type; +import java.time.LocalDate; + +import javax.ws.rs.ext.ParamConverter; +import javax.ws.rs.ext.ParamConverterProvider; +import javax.ws.rs.ext.Provider; + +@Provider +public class LocalDateConverterProvider implements ParamConverterProvider { + + /* (non-Javadoc) + * @see javax.ws.rs.ext.ParamConverterProvider#getConverter(java.lang.Class, java.lang.reflect.Type, java.lang.annotation.Annotation[]) + */ + @Override + public ParamConverter getConverter(Class rawType, Type genericType, Annotation[] annotations) { + + if(rawType.getName().equals(LocalDate.class.getName()) ) { + return new ParamConverter() { + + @Override + public T fromString(String value) { + return rawType.cast(LocalDate.parse(value)); + } + + @Override + public String toString(T value) { + return value.toString(); + } + + }; + } + + return null; + } +} diff --git a/src/test/java/edu/psu/swe/common/jaxrs/converters/param/LocalDateConverterProviderTest.java b/src/test/java/edu/psu/swe/common/jaxrs/converters/param/LocalDateConverterProviderTest.java new file mode 100644 index 0000000..f957773 --- /dev/null +++ b/src/test/java/edu/psu/swe/common/jaxrs/converters/param/LocalDateConverterProviderTest.java @@ -0,0 +1,43 @@ +package edu.psu.swe.common.jaxrs.converters.param; + +import java.time.LocalDate; +import java.time.format.DateTimeParseException; + +import javax.ws.rs.ext.ParamConverter; + +import org.junit.Assert; +import org.junit.Test; + +import edu.psu.swe.commons.jaxrs.converters.param.LocalDateConverterProvider; + + +public class LocalDateConverterProviderTest { + + private static LocalDateConverterProvider provider = new LocalDateConverterProvider(); + private static ParamConverter converter = provider.getConverter(LocalDate.class, null, null); + + private static final String EXPECTED_DATE_STR = "2018-06-22"; + private static final LocalDate EXPECTED_DATE = LocalDate.of(2018, 6, 22); + private static final String NON_DATE_STR = "hello world"; + + @Test + public void testFromString() throws Exception { + LocalDate date = converter.fromString(EXPECTED_DATE_STR); + Assert.assertEquals(EXPECTED_DATE, date); + + boolean caughtExeption = false; + try { + converter.fromString(NON_DATE_STR); + } catch (DateTimeParseException e) { + caughtExeption = true; + } + Assert.assertTrue("Did not catch the expected parsing exception", caughtExeption); + } + + @Test + public void testToString() throws Exception { + String dateStr = converter.toString(EXPECTED_DATE); + Assert.assertEquals(EXPECTED_DATE_STR, dateStr); + } + +} From 08d29d7c6a70be1752af87bc582ce2cc796f4bf7 Mon Sep 17 00:00:00 2001 From: Michael Zalewski Date: Fri, 22 Jun 2018 10:47:13 -0400 Subject: [PATCH 2/2] Renaming package of unit test --- .../jaxrs/converters/param/LocalDateConverterProviderTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename src/test/java/edu/psu/swe/{common => commons}/jaxrs/converters/param/LocalDateConverterProviderTest.java (96%) diff --git a/src/test/java/edu/psu/swe/common/jaxrs/converters/param/LocalDateConverterProviderTest.java b/src/test/java/edu/psu/swe/commons/jaxrs/converters/param/LocalDateConverterProviderTest.java similarity index 96% rename from src/test/java/edu/psu/swe/common/jaxrs/converters/param/LocalDateConverterProviderTest.java rename to src/test/java/edu/psu/swe/commons/jaxrs/converters/param/LocalDateConverterProviderTest.java index f957773..3e9ed40 100644 --- a/src/test/java/edu/psu/swe/common/jaxrs/converters/param/LocalDateConverterProviderTest.java +++ b/src/test/java/edu/psu/swe/commons/jaxrs/converters/param/LocalDateConverterProviderTest.java @@ -1,4 +1,4 @@ -package edu.psu.swe.common.jaxrs.converters.param; +package edu.psu.swe.commons.jaxrs.converters.param; import java.time.LocalDate; import java.time.format.DateTimeParseException;