package org.jboss.resteasy.test.resource.basic.resource;
import org.jboss.logging.Logger;
import javax.ws.rs.GET;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.Cookie;
import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.MultivaluedMap;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.Arrays;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Set;
@Path(value = "/HeadersTest")
public class HttpHeadersResource {
private static Logger logger = Logger.getLogger(HttpHeadersResource.class);
@Context
HttpHeaders hs;
StringBuffer sb;
@GET
@Path("/headers")
public String headersGet() {
sb = new StringBuffer();
List<String> myHeaders = Arrays.asList("Accept", "Content-Type");
try {
MultivaluedMap<String, String> rqhdrs = hs.getRequestHeaders();
Set<String> keys = rqhdrs.keySet();
sb.append("getRequestHeaders= ");
for (String header : myHeaders) {
if (keys.contains(header)) {
sb.append("Found " + header + ": " +
hs.getRequestHeader(header) + "; ");
}
}
} catch (Throwable ex) {
sb.append("Unexpected exception thrown in getRequestHeaders: " +
ex.getMessage());
StringWriter errors = new StringWriter();
ex.printStackTrace(new PrintWriter(errors));
logger.error(errors.toString());
}
return sb.toString();
}
@GET
@Path("/acl")
public String aclGet() {
sb = new StringBuffer();
try {
sb.append("Accept-Language");
List<Locale> acl = hs.getAcceptableLanguages();
sb.append("getLanguage= ");
for (Locale tmp : acl) {
sb.append(tmp.toString() + "; ");
}
} catch (Throwable ex) {
sb.append("Unexpected exception thrown in getAcceptableLanguages: " +
ex.getMessage());
StringWriter errors = new StringWriter();
ex.printStackTrace(new PrintWriter(errors));
logger.error(errors.toString());
}
return sb.toString();
}
@GET
@Path("/amt")
public String amtGet() {
sb = new StringBuffer();
try {
sb.append("getAcceptableMediaTypes");
List<MediaType> acmts = hs.getAcceptableMediaTypes();
for (MediaType mt : acmts) {
sb.append(mt.getType());
sb.append("/");
sb.append(mt.getSubtype());
}
} catch (Throwable ex) {
sb.append("Unexpected exception thrown: " + ex.getMessage());
StringWriter errors = new StringWriter();
ex.printStackTrace(new PrintWriter(errors));
logger.error(errors.toString());
}
return sb.toString();
}
@GET
@Path("/mt")
public String mtGet() {
sb = new StringBuffer();
try {
sb.append("getMediaType");
MediaType mt = hs.getMediaType();
if (mt != null) {
sb.append(mt.getType());
sb.append("/");
sb.append(mt.getSubtype());
sb.append(" ");
Map<String, String> pmap =
mt.getParameters();
sb.append("MediaType size=" + pmap.size());
for (Map.Entry<String, String> entry : pmap.entrySet()) {
sb.append("Key " + entry.getKey() + "; Value " + entry.getValue());
}
sb.append(mt.toString());
sb.append("MediaType= " + mt.toString() + "; ");
} else {
sb.append("MediaType= null; ");
}
} catch (Throwable ex) {
sb.append("Unexpected exception thrown: " + ex.getMessage());
StringWriter errors = new StringWriter();
ex.printStackTrace(new PrintWriter(errors));
logger.error(errors.toString());
}
return sb.toString();
}
@GET
@Path("/cookie")
public String cookieGet() {
sb = new StringBuffer();
try {
sb.append("getCookies= ");
Map<String, Cookie> cookies = hs.getCookies();
sb.append("Cookie Size=" + cookies.size());
for (Map.Entry<String, Cookie> tmp : cookies.entrySet()) {
sb.append(tmp.getKey() + ": " + tmp.getValue() + "; ");
Cookie c = cookies.get("name1");
sb.append("Cookie Name=" + c.getName());
sb.append("Cookie Value=" + c.getValue());
sb.append("Cookie Path=" + c.getPath());
sb.append("Cookie Domain=" + c.getDomain());
sb.append("Cookie Version=" + c.getVersion());
}
} catch (Throwable ex) {
sb.append("Unexpected exception thrown: " + ex.getMessage());
StringWriter errors = new StringWriter();
ex.printStackTrace(new PrintWriter(errors));
logger.error(errors.toString());
}
return sb.toString();
}
@PUT
public String headersPlainPut() {
sb = new StringBuffer();
sb.append("Content-Language");
sb.append(hs.getLanguage());
return sb.toString();
}
}