/* * COMSAT * Copyright (c) 2013-2016, Parallel Universe Software Co. All rights reserved. * * This program and the accompanying materials are dual-licensed under * either the terms of the Eclipse Public License v1.0 as published by * the Eclipse Foundation * * or (per the licensee's choosing) * * under the terms of the GNU Lesser General Public License version 3.0 * as published by the Free Software Foundation. */ package co.paralleluniverse.fibers.servlet; import java.io.IOException; import java.security.Principal; import java.util.Collection; import java.util.Enumeration; import javax.servlet.ServletException; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import javax.servlet.http.Part; /** * * @author eitan */ public class FiberHttpServletRequest extends FiberServletRequest implements HttpServletRequest { private final String contextPath; private final String servletPath; private final String pathInfo; public FiberHttpServletRequest(FiberHttpServlet servlet, javax.servlet.http.HttpServletRequest req) { super(servlet, req); // Jetty (what about other containers?) nullifies the following values in the request // when the service method returns. If we want to access them in an async context (in // the fiber), we need to capture them. pathInfo = req.getPathInfo(); servletPath = req.getServletPath(); contextPath = req.getContextPath(); } @Override javax.servlet.http.HttpServletRequest getReq() { return (javax.servlet.http.HttpServletRequest) super.getReq(); } // Delegations @Override public String getAuthType() { return getReq().getAuthType(); } @Override public Cookie[] getCookies() { return getReq().getCookies(); } @Override public long getDateHeader(String name) { return getReq().getDateHeader(name); } @Override public String getHeader(String name) { return getReq().getHeader(name); } @Override public Enumeration<String> getHeaders(String name) { return getReq().getHeaders(name); } @Override public Enumeration<String> getHeaderNames() { return getReq().getHeaderNames(); } @Override public int getIntHeader(String name) { return getReq().getIntHeader(name); } @Override public String getMethod() { return getReq().getMethod(); } @Override public String getPathInfo() { return pathInfo; } @Override public String getPathTranslated() { return getReq().getPathTranslated(); } @Override public String getContextPath() { return contextPath; } @Override public String getQueryString() { return getReq().getQueryString(); } @Override public String getRemoteUser() { return getReq().getRemoteUser(); } @Override public boolean isUserInRole(String role) { return getReq().isUserInRole(role); } @Override public Principal getUserPrincipal() { return getReq().getUserPrincipal(); } @Override public String getRequestedSessionId() { return getReq().getRequestedSessionId(); } @Override public String getRequestURI() { return getReq().getRequestURI(); } @Override public StringBuffer getRequestURL() { return getReq().getRequestURL(); } @Override public String getServletPath() { return servletPath; } @Override public HttpSession getSession(boolean create) { return getReq().getSession(create); } @Override public HttpSession getSession() { return getReq().getSession(); } @Override public boolean isRequestedSessionIdValid() { return getReq().isRequestedSessionIdValid(); } @Override public boolean isRequestedSessionIdFromCookie() { return getReq().isRequestedSessionIdFromCookie(); } @Override public boolean isRequestedSessionIdFromURL() { return getReq().isRequestedSessionIdFromURL(); } @Override @Deprecated @SuppressWarnings("deprecation") public boolean isRequestedSessionIdFromUrl() { return getReq().isRequestedSessionIdFromUrl(); } @Override public boolean authenticate(HttpServletResponse response) throws IOException, ServletException { return getReq().authenticate(response); } @Override public void login(String username, String password) throws ServletException { getReq().login(username, password); } @Override public void logout() throws ServletException { getReq().logout(); } @Override public Collection<Part> getParts() throws IOException, ServletException { return getReq().getParts(); } @Override public Part getPart(String name) throws IOException, ServletException { return getReq().getPart(name); } }