package org.jboss.resteasy.test.providers.custom.resource;
import javax.ws.rs.container.ContainerRequestContext;
import javax.ws.rs.container.ContainerResponseContext;
import javax.ws.rs.container.ContainerResponseFilter;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.ws.rs.ext.Provider;
import java.io.IOException;
import java.lang.reflect.Type;
@Provider
public class ResponseFilter implements ContainerResponseFilter {
@Override
public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext) throws IOException {
if (requestContext.getUriInfo().getPath().endsWith("getstatus")) {
int status = responseContext.getStatus();
responseContext.setStatus(Response.Status.OK.getStatusCode());
responseContext.setEntity(String.valueOf(status), null, MediaType.TEXT_PLAIN_TYPE);
} else if (requestContext.getUriInfo().getPath().endsWith("getentitytype")) {
Type type = responseContext.getEntityType();
String name = "NULL";
if (type instanceof Class) {
name = ((Class<?>) type).getName();
} else if (type != null) {
name = type.getClass().getName();
}
responseContext.setEntity(name, null, MediaType.TEXT_PLAIN_TYPE);
} else if (requestContext.getUriInfo().getPath().endsWith("getstatusinfo")) {
Response.StatusType type = responseContext.getStatusInfo();
if (type == null) {
responseContext.setEntity("NULL", null, MediaType.TEXT_PLAIN_TYPE);
responseContext.setStatus(Response.Status.OK.getStatusCode());
return;
}
int status = type.getStatusCode();
responseContext.setStatus(Response.Status.OK.getStatusCode());
responseContext.setEntity(String.valueOf(status), null, MediaType.TEXT_PLAIN_TYPE);
}
}
}