CMSgov/dpc-app

View on GitHub
dpc-api/src/main/java/gov/cms/dpc/api/converters/HttpRangeHeaderParamConverterProvider.java

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
package gov.cms.dpc.api.converters;

import gov.cms.dpc.api.models.RangeHeader;

import javax.inject.Inject;
import javax.ws.rs.ext.ParamConverter;
import javax.ws.rs.ext.ParamConverterProvider;
import javax.ws.rs.ext.Provider;
import java.lang.annotation.Annotation;
import java.lang.reflect.Type;

/**
 * Implementation of Jersey's {@link ParamConverterProvider} which allows for constructing {@link RangeHeader} classes from a given header value
 */
@Provider
public class HttpRangeHeaderParamConverterProvider implements ParamConverterProvider {

    @Inject
    public HttpRangeHeaderParamConverterProvider() {
        // Not used
    }

    @SuppressWarnings("unchecked")
    @Override
    public <T> ParamConverter<T> getConverter(Class<T> rawType, Type genericType, Annotation[] annotations) {
        if (genericType.equals(RangeHeader.class)) {
            return (ParamConverter<T>) new HttpRangeHeaderParamConverter();
        }
        return null;
    }

}