private static Object getValueForPath(Path path, String value) { if (value == null) return null; Class c = path.getModel().getBindableJavaType(); try { if (c.equals(Date.class)) return Date.from(ZonedDateTime.parse(value).toInstant()); if (c.equals(Instant.class)) return ZonedDateTime.parse(value).toInstant(); if (c.equals(Boolean.class)) return Boolean.parseBoolean(value); if (c.isEnum()) return Enum.valueOf(c, value); if (c.equals(UUID.class)) return UUID.fromString(value); } catch (IllegalArgumentException | DateTimeParseException e) { throw new InvalidFieldValueException(e.getMessage(), path.getAlias(), value); } return value; }