Over a million developers have joined DZone.
{{announcement.body}}
{{announcement.title}}

Using ValueEncoders with Resteasy

DZone's Guide to

Using ValueEncoders with Resteasy

· Java Zone ·
Free Resource

How do you break a Monolith into Microservices at Scale? This ebook shows strategies and techniques for building scalable and resilient microservices.

The power of Tapestry’s ValueEncoder can be used with RestEasy by implementing javax.ws.rs.ext.ParamConverterProvider

import org.apache.tapestry5.ValueEncoder;
import org.apache.tapestry5.services.ValueEncoderSource;
 
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;
 
@Provider
public class ValueEncodersProvider implements ParamConverterProvider {
 
    private final ValueEncoderSource valueEncoderSource;
 
    public ValueEncodersProvider(ValueEncoderSource valueEncoderSource) {
        this.valueEncoderSource = valueEncoderSource;
    }
 
    @Override
    public <T> ParamConverter<T> getConverter(Class<T> rawType, Type genericType, Annotation[] annotations) {
        final ValueEncoder<T> encoder = valueEncoderSource.getValueEncoder(rawType);
        if (encoder == null) {
            return null;
        }
 
        return new ParamConverter<T>() {
            @Override
            public T fromString(String value) {
                return encoder.toValue(value);
            }
 
            @Override
            public String toString(T value) {
                return encoder.toClient(value);
            }
        };
    }
 
}



How do you break a Monolith into Microservices at Scale? This ebook shows strategies and techniques for building scalable and resilient microservices.

Topics:

Published at DZone with permission of

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}