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