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

io.dropwizard.jersey.optional.OptionalDoubleParamConverterProvider Maven / Gradle / Ivy

There is a newer version: 5.0.0-rc.1
Show newest version
package io.dropwizard.jersey.optional;

import javax.inject.Singleton;
import javax.ws.rs.ext.ParamConverter;
import javax.ws.rs.ext.ParamConverterProvider;
import java.lang.annotation.Annotation;
import java.lang.reflect.Type;
import java.util.OptionalDouble;

import static com.google.common.base.Preconditions.checkArgument;

@Singleton
public class OptionalDoubleParamConverterProvider implements ParamConverterProvider {
    private final OptionalDoubleParamConverter paramConverter = new OptionalDoubleParamConverter();

    /**
     * {@inheritDoc}
     */
    @Override
    @SuppressWarnings("unchecked")
    public  ParamConverter getConverter(final Class rawType, final Type genericType,
                                              final Annotation[] annotations) {
        return OptionalDouble.class.equals(rawType) ? (ParamConverter) paramConverter : null;
    }

    public static class OptionalDoubleParamConverter implements ParamConverter {
        @Override
        public OptionalDouble fromString(final String value) {
            if (value == null) {
                return OptionalDouble.empty();
            }

            try {
                return OptionalDouble.of(Double.parseDouble(value));
            } catch (NumberFormatException e) {
                throw new IllegalArgumentException(e);
            }
        }

        @Override
        public String toString(final OptionalDouble value) {
            checkArgument(value != null);
            return value.isPresent() ? Double.toString(value.getAsDouble()) : "";
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy