All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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