package org.jboss.resteasy.test.providers.custom.resource; import javax.ws.rs.ApplicationPath; import javax.ws.rs.WebApplicationException; import javax.ws.rs.core.Application; 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; import java.util.HashSet; import java.util.Set; @Provider @ApplicationPath("/") public class SingletonCustomProviderApplication extends Application { public static Set<Class<?>> classes = new HashSet<Class<?>>(); public static Set<Object> singletons = new HashSet<Object>(); /** * @see Application#getClasses() */ @Override public Set<Class<?>> getClasses() { if (classes.isEmpty()) { classes.add(SingletonCustomProviderResource.class); } return classes; } /** * @see Application#getSingletons() */ @Override public Set<Object> getSingletons() { if (singletons.isEmpty()) { singletons.add(new MessageBodyReader<SingletonCustomProviderObject>() { public boolean isReadable(Class<?> type, Type genericType, Annotation[] annotations, MediaType mediType) { return true; } public SingletonCustomProviderObject readFrom(Class<SingletonCustomProviderObject> type, Type genericType, Annotation[] annotations, MediaType mediaType, MultivaluedMap<String, String> httpHeaders, InputStream entityStream) throws IOException, WebApplicationException { throw new WebApplicationException(999); // deliberate crazy status } }); singletons.add(new MessageBodyWriter<SingletonCustomProviderObject>() { public long getSize(SingletonCustomProviderObject dummyObject, Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType) { return -1; } public boolean isWriteable(Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType) { return true; } public void writeTo(SingletonCustomProviderObject t, Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType, MultivaluedMap<String, Object> httpHeaders, OutputStream entityStream) throws IOException, WebApplicationException { throw new WebApplicationException(999); // deliberate crazy status } }); } return singletons; } }