
org.tiogasolutions.lib.jaxrs.providers.JavaTimeParamConverterProvider Maven / Gradle / Ivy
package org.tiogasolutions.lib.jaxrs.providers;
import java.lang.annotation.Annotation;
import java.lang.reflect.Type;
import java.time.*;
import javax.ws.rs.ext.*;
import org.tiogasolutions.dev.common.DateUtils;
@Provider
public class JavaTimeParamConverterProvider implements ParamConverterProvider {
@Override
public ParamConverter getConverter(Class rawType, Type genericType, Annotation[] annotations) {
if (LocalDate.class.equals(rawType)) {
return new LocalDateParamConverter(rawType);
} else if (LocalTime.class.equals(rawType)) {
return new LocalTimeParamConverter(rawType);
} else if (LocalDateTime.class.equals(rawType)) {
return new LocalDateTimeParamConverter(rawType);
} else if (ZonedDateTime.class.equals(rawType)) {
return new ZonedDateTimeParamConverter(rawType);
}
return null;
}
private static class LocalDateParamConverter implements ParamConverter {
private final Class rawType;
private LocalDateParamConverter(Class rawType) { this.rawType = rawType; }
@Override public T fromString(String value) { return (value == null) ? null : rawType.cast(DateUtils.toLocalDate(value)); }
@Override public String toString(T value) { return (value == null) ? "" : value.toString(); }
}
public class LocalDateTimeParamConverter implements ParamConverter {
private final Class rawType;
public LocalDateTimeParamConverter(Class rawType) { this.rawType = rawType; }
@Override public T fromString(String value) { return (value == null) ? null : rawType.cast(DateUtils.toLocalDateTime(value)); }
@Override public String toString(T value) { return (value == null) ? "" : value.toString(); }
}
public class LocalTimeParamConverter implements ParamConverter {
private final Class rawType;
public LocalTimeParamConverter(Class rawType) { this.rawType = rawType; }
@Override public T fromString(String value) { return (value == null) ? null : rawType.cast(DateUtils.toLocalTime(value)); }
@Override public String toString(T value) { return (value == null) ? "" : value.toString(); }
}
public class ZonedDateTimeParamConverter implements ParamConverter {
private final Class rawType;
public ZonedDateTimeParamConverter(Class rawType) { this.rawType = rawType; }
@Override public T fromString(String value) { return (value == null) ? null : rawType.cast(DateUtils.toZonedDateTime(value)); }
@Override public String toString(T value) { return (value == null) ? "" : value.toString(); }
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy