public ElideSettingsBuilder withEpochDates() { serdes.put(Date.class, new EpochToDateConverter<Date>(Date.class)); serdes.put(java.sql.Date.class, new EpochToDateConverter<java.sql.Date>(java.sql.Date.class)); serdes.put(java.sql.Time.class, new EpochToDateConverter<java.sql.Time>(java.sql.Time.class)); serdes.put(java.sql.Timestamp.class, new EpochToDateConverter<java.sql.Timestamp>(java.sql.Timestamp.class)); return this; }
@Override public T deserialize(Object val) { return convert(targetType, val); }
private static <T> T stringToDate(Class<T> cls, String epoch) throws ReflectiveOperationException { return numberToDate(cls, Long.parseLong(epoch)); } }
@Override public <T> T convert(Class<T> cls, Object value) { try { if (ClassUtils.isAssignable(value.getClass(), String.class)) { return stringToDate(cls, (String) value); } if (ClassUtils.isAssignable(value.getClass(), Number.class, true)) { return numberToDate(cls, (Number) value); } throw new UnsupportedOperationException(value.getClass().getSimpleName() + " is not a valid epoch"); } catch (IndexOutOfBoundsException | ReflectiveOperationException | UnsupportedOperationException | IllegalArgumentException e) { throw new InvalidAttributeException("Unknown " + cls.getSimpleName() + " value " + value, e); } }
@Override public <T> T convert(Class<T> cls, Object value) { try { if (ClassUtils.isAssignable(value.getClass(), String.class)) { return stringToDate(cls, (String) value); } if (ClassUtils.isAssignable(value.getClass(), Number.class, true)) { return numberToDate(cls, (Number) value); } throw new UnsupportedOperationException(value.getClass().getSimpleName() + " is not a valid epoch"); } catch (IndexOutOfBoundsException | ReflectiveOperationException | UnsupportedOperationException | IllegalArgumentException e) { throw new InvalidAttributeException("Unknown " + cls.getSimpleName() + " value " + value, e); } }
private static <T> T stringToDate(Class<T> cls, String epoch) throws ReflectiveOperationException { return numberToDate(cls, Long.parseLong(epoch)); } }
public ElideSettingsBuilder withEpochDates() { serdes.put(Date.class, new EpochToDateConverter<Date>(Date.class)); serdes.put(java.sql.Date.class, new EpochToDateConverter<java.sql.Date>(java.sql.Date.class)); serdes.put(java.sql.Time.class, new EpochToDateConverter<java.sql.Time>(java.sql.Time.class)); serdes.put(java.sql.Timestamp.class, new EpochToDateConverter<java.sql.Timestamp>(java.sql.Timestamp.class)); return this; }
@Override public T deserialize(Object val) { return convert(targetType, val); }