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

Java-based (JDBC) data connectivity to SaaS, NoSQL, and Big Data. Download Now.

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);
            }
        };
    }
 
}



Connect any Java based application to your SaaS data.  Over 100+ Java-based data source connectors.

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 }}