diff --git a/graphql-jpa-query-schema/src/main/java/com/introproventures/graphql/jpa/query/schema/JavaScalars.java b/graphql-jpa-query-schema/src/main/java/com/introproventures/graphql/jpa/query/schema/JavaScalars.java index fd0aa975b..bb337928d 100644 --- a/graphql-jpa-query-schema/src/main/java/com/introproventures/graphql/jpa/query/schema/JavaScalars.java +++ b/graphql-jpa-query-schema/src/main/java/com/introproventures/graphql/jpa/query/schema/JavaScalars.java @@ -214,6 +214,24 @@ private LocalDate parseStringToLocalDate(String input) { }; public static class GraphQLDateCoercing implements Coercing { + final DateFormat df; + + + /** + * Default to pattern 'yyyy-MM-dd' + */ + public GraphQLDateCoercing() { + df = new SimpleDateFormat("yyyy-MM-dd"); + } + + /** + * Parse date strings according to the provided SimpleDateFormat pattern + * + * @param dateFormatString e.g. "yyyy-MM-dd'T'HH:mm:ss.SSSXXX" for "2001-07-04T12:08:56.235-07:00" + */ + public GraphQLDateCoercing(String dateFormatString) { + df = new SimpleDateFormat(dateFormatString); + } @Override public Object serialize(Object input) { @@ -247,7 +265,7 @@ public Object parseLiteral(Object input) { private Date parseStringToDate(String input) { try { - return new SimpleDateFormat("yyyy-MM-dd").parse(input); + return df.parse(input); } catch (ParseException e) { log.warn("Failed to parse Date from input: " + input, e); return null;