package com.github.rmannibucau.boon.jaxrs;
import javax.ws.rs.Consumes;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.MultivaluedMap;
import javax.ws.rs.ext.MessageBodyReader;
import javax.ws.rs.ext.MessageBodyWriter;
import javax.ws.rs.ext.Provider;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.lang.annotation.Annotation;
import java.lang.reflect.Type;
@Provider
@Produces(MediaType.WILDCARD)
@Consumes(MediaType.WILDCARD)
public class BoonJsonProvider<T> implements MessageBodyReader<T>, MessageBodyWriter<T> {
private final BoonJsonMessageBodyReader<T> reader = new BoonJsonMessageBodyReader<T>();
private final BoonJsonMessageBodyWriter<T> writer = new BoonJsonMessageBodyWriter<T>();
@Override
public void writeTo(final T t, final Class<?> aClass, final Type type, final Annotation[] annotations, final MediaType mediaType,
final MultivaluedMap<String, Object> stringObjectMultivaluedMap, final OutputStream outputStream) throws IOException {
writer.writeTo(t, aClass, type, annotations, mediaType, stringObjectMultivaluedMap, outputStream);
}
@Override
public long getSize(final T t, final Class<?> aClass, final Type type, final Annotation[] annotations, final MediaType mediaType) {
return writer.getSize(t, aClass, type, annotations, mediaType);
}
@Override
public boolean isWriteable(final Class<?> aClass, final Type type, final Annotation[] annotations, final MediaType mediaType) {
return writer.isWriteable(aClass, type, annotations, mediaType);
}
@Override
public T readFrom(final Class<T> tClass, final Type type, final Annotation[] annotations, final MediaType mediaType,
final MultivaluedMap<String, String> stringStringMultivaluedMap, final InputStream inputStream) throws IOException {
return reader.readFrom(tClass, type, annotations, mediaType, stringStringMultivaluedMap, inputStream);
}
@Override
public boolean isReadable(final Class<?> aClass, final Type type, final Annotation[] annotations, final MediaType mediaType) {
return reader.isReadable(aClass, type, annotations, mediaType);
}
public void setCharset(final String charset) {
reader.setCharset(charset);
}
public void setLax(final boolean lax) {
reader.setLax(lax);
}
public void setChop(final boolean chop) {
reader.setChop(chop);
}
public void setLazyChop(final boolean lazyChop) {
reader.setLazyChop(lazyChop);
}
public void setFieldAccessType(final String fieldAccessType) {
reader.setFieldAccessType(fieldAccessType);
writer.setFieldAccessType(fieldAccessType);
}
public void setUseAnnotations(final boolean useAnnotations) {
reader.setUseAnnotations(useAnnotations);
writer.setUseAnnotations(useAnnotations);
}
public void setOutputType(final boolean outputType) {
writer.setOutputType(outputType);
}
public void setIncludeNulls(final boolean includeNulls) {
writer.setIncludeNulls(includeNulls);
}
public void setIncludeEmpty(final boolean includeEmpty) {
writer.setIncludeEmpty(includeEmpty);
}
public void setJsonFormatForDates(final boolean jsonFormatForDates) {
writer.setJsonFormatForDates(jsonFormatForDates);
}
public void setHandleSimpleBackReference(final boolean handleSimpleBackReference) {
writer.setHandleSimpleBackReference(handleSimpleBackReference);
}
public void setHandleComplexBackReference(final boolean handleComplexBackReference) {
writer.setHandleComplexBackReference(handleComplexBackReference);
}
public void setIncludeDefault(final boolean includeDefault) {
writer.setIncludeDefault(includeDefault);
}
public void setCacheInstances(final boolean cacheInstances) {
writer.setCacheInstances(cacheInstances);
}
public void setView(final String view) {
writer.setView(view);
}
}