/* @VaadinApache2LicenseForJavaFiles@ */ package com.vaadin.terminal.gwt.server; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequestWrapper; import com.vaadin.Application; import com.vaadin.terminal.CombinedRequest; import com.vaadin.terminal.DeploymentConfiguration; import com.vaadin.terminal.WrappedRequest; /** * Wrapper for {@link HttpServletRequest}. * * @author Vaadin Ltd. * @since 7.0 * * @see WrappedRequest * @see WrappedHttpServletResponse */ public class WrappedHttpServletRequest extends HttpServletRequestWrapper implements WrappedRequest { private final DeploymentConfiguration deploymentConfiguration; /** * Wraps a http servlet request and associates with a deployment * configuration * * @param request * the http servlet request to wrap * @param deploymentConfiguration * the associated deployment configuration */ public WrappedHttpServletRequest(HttpServletRequest request, DeploymentConfiguration deploymentConfiguration) { super(request); this.deploymentConfiguration = deploymentConfiguration; } @Override public String getRequestPathInfo() { return getPathInfo(); } @Override public int getSessionMaxInactiveInterval() { return getSession().getMaxInactiveInterval(); } @Override public Object getSessionAttribute(String name) { return getSession().getAttribute(name); } @Override public void setSessionAttribute(String name, Object attribute) { getSession().setAttribute(name, attribute); } /** * Gets the original, unwrapped HTTP servlet request. * * @return the servlet request */ public HttpServletRequest getHttpServletRequest() { return this; } @Override public DeploymentConfiguration getDeploymentConfiguration() { return deploymentConfiguration; } @Override public BrowserDetails getBrowserDetails() { return new BrowserDetails() { @Override public String getUriFragment() { return null; } @Override public String getWindowName() { return null; } @Override public WebBrowser getWebBrowser() { WebApplicationContext context = (WebApplicationContext) Application .getCurrent().getContext(); return context.getBrowser(); } }; } /** * Helper method to get a WrappedHttpServletRequest from a * WrappedRequest. Aside from casting, this method also takes * care of situations where there's another level of wrapping. * * @param request * a wrapped request * @return a wrapped http servlet request * @throws ClassCastException * if the wrapped request doesn't wrap a http servlet request */ public static WrappedHttpServletRequest cast(WrappedRequest request) { if (request instanceof CombinedRequest) { CombinedRequest combinedRequest = (CombinedRequest) request; request = combinedRequest.getSecondRequest(); } return (WrappedHttpServletRequest) request; } }