*** HttpRequestWrapper.java.save 2013-09-21 20:20:40.000000000 -0400 --- HttpRequestWrapper.java 2013-10-24 11:10:33.000000000 -0400 *************** *** 40,57 **** package com.sun.web.security; import java.io.IOException; import java.io.InputStream; import java.net.Socket; import java.security.Principal; import java.util.Iterator; import java.util.Locale; import javax.servlet.FilterChain; import javax.servlet.ServletInputStream; import javax.servlet.ServletRequest; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; - import javax.servlet.http.HttpServletRequestWrapper; import org.apache.catalina.Connector; import org.apache.catalina.Context; --- 40,65 ---- package com.sun.web.security; + import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; + import java.io.UnsupportedEncodingException; import java.net.Socket; import java.security.Principal; + import java.util.Enumeration; import java.util.Iterator; import java.util.Locale; + import java.util.Map; + import javax.servlet.AsyncContext; + import javax.servlet.DispatcherType; import javax.servlet.FilterChain; + import javax.servlet.RequestDispatcher; + import javax.servlet.ServletContext; import javax.servlet.ServletInputStream; import javax.servlet.ServletRequest; + import javax.servlet.ServletResponse; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import org.apache.catalina.Connector; import org.apache.catalina.Context; *************** *** 60,326 **** import org.apache.catalina.Response; import org.apache.catalina.Session; import org.apache.catalina.Wrapper; import org.glassfish.grizzly.http.util.DataChunk; ! class HttpRequestWrapper extends HttpServletRequestWrapper ! implements HttpRequest { ! private HttpRequest httpRequest; ! ! HttpRequestWrapper(HttpRequest request, ! HttpServletRequest servletRequest) { ! super(servletRequest); ! httpRequest = request; } // ----- HttpRequest Methods ----- public void addCookie(Cookie cookie) { httpRequest.addCookie(cookie); } ! /* Delegate to HttpServletResponse ! public void addHeader(String name, String value) { ! httpRequest.addHeader(name, value); ! } ! */ ! public void addHeader(String name, String value) { httpRequest.addHeader(name, value); } public void addLocale(Locale locale) { httpRequest.addLocale(locale); } public void addParameter(String name, String values[]) { httpRequest.addParameter(name, values); } public void clearCookies() { httpRequest.clearCookies(); } public void clearHeaders() { httpRequest.clearHeaders(); } public void clearLocales() { httpRequest.clearLocales(); } public void clearParameters() { httpRequest.clearParameters(); } public void replayPayload(byte[] payloadByteArray) { httpRequest.replayPayload(payloadByteArray); } public void setAuthType(String type) { httpRequest.setAuthType(type); } public void setMethod(String method) { httpRequest.setMethod(method); } public void setQueryString(String query) { httpRequest.setQueryString(query); } public Session getSessionInternal(boolean create) { return httpRequest.getSessionInternal(create); } public String changeSessionId() { return httpRequest.changeSessionId(); } public void setPathInfo(String path) { httpRequest.setPathInfo(path); } public DataChunk getRequestPathMB() { return httpRequest.getRequestPathMB(); } public void setRequestedSessionCookie(boolean flag) { httpRequest.setRequestedSessionCookie(flag); } public void setRequestedSessionCookiePath(String cookiePath) { httpRequest.setRequestedSessionCookiePath(cookiePath); } public void setRequestedSessionId(String id) { httpRequest.setRequestedSessionId(id); } public void setRequestedSessionURL(boolean flag) { httpRequest.setRequestedSessionURL(flag); } public void setRequestURI(String uri) { httpRequest.setRequestURI(uri); } public String getDecodedRequestURI() { return httpRequest.getDecodedRequestURI(); } public void setServletPath(String path) { httpRequest.setServletPath(path); } public void setUserPrincipal(Principal principal) { httpRequest.setUserPrincipal(principal); } // ----- Request Methods ----- public String getAuthorization() { return httpRequest.getAuthorization(); } public Connector getConnector() { return httpRequest.getConnector(); } public void setConnector(Connector connector) { httpRequest.setConnector(connector); } public Context getContext() { return httpRequest.getContext(); } public void setContext(Context context) { httpRequest.setContext(context); } public FilterChain getFilterChain() { return httpRequest.getFilterChain(); } public void setFilterChain(FilterChain filterChain) { httpRequest.setFilterChain(filterChain); } public Host getHost() { return httpRequest.getHost(); } public void setHost(Host host) { httpRequest.setHost(host); } public String getInfo() { return httpRequest.getInfo(); } public ServletRequest getRequest() { return getRequest(false); } public ServletRequest getRequest(boolean maskDefaultContextMapping) { ! return httpRequest.getRequest(maskDefaultContextMapping); } public Response getResponse() { return httpRequest.getResponse(); } public void setResponse(Response response) { httpRequest.setResponse(response); } public Socket getSocket() { return httpRequest.getSocket(); } public void setSocket(Socket socket) { httpRequest.setSocket(socket); } public InputStream getStream() { return httpRequest.getStream(); } public void setStream(InputStream stream) { httpRequest.setStream(stream); } public Wrapper getWrapper() { return httpRequest.getWrapper(); } public void setWrapper(Wrapper wrapper) { httpRequest.setWrapper(wrapper); } public ServletInputStream createInputStream() throws IOException { return httpRequest.createInputStream(); } public void finishRequest() throws IOException { httpRequest.finishRequest(); } public Object getNote(String name) { return httpRequest.getNote(name); } public Iterator getNoteNames() { return httpRequest.getNoteNames(); } public void recycle() { httpRequest.recycle(); } public void removeNote(String name) { httpRequest.removeNote(name); } public void setContentLength(int length) { httpRequest.setContentLength(length); } public void setContentType(String type) { httpRequest.setContentType(type); } public void setNote(String name, Object value) { httpRequest.setNote(name, value); } public void setProtocol(String protocol) { httpRequest.setProtocol(protocol); } public void setRemoteAddr(String remote) { httpRequest.setRemoteAddr(remote); } public void setSecure(boolean secure) { httpRequest.setSecure(secure); } public void setServerName(String name) { httpRequest.setServerName(name); } public void setServerPort(int port) { httpRequest.setServerPort(port); } public void setCheckRestrictedResources(boolean check) { httpRequest.setCheckRestrictedResources(check); } public boolean getCheckRestrictedResources() { return httpRequest.getCheckRestrictedResources(); } public String getJrouteId() { return httpRequest.getJrouteId(); } --- 68,408 ---- import org.apache.catalina.Response; import org.apache.catalina.Session; import org.apache.catalina.Wrapper; + import org.apache.catalina.connector.Request; import org.glassfish.grizzly.http.util.DataChunk; ! class HttpRequestWrapper implements ServletRequest, HttpRequest { ! private final Request httpRequest; ! private final HttpServletRequest servletRequest; ! private final boolean isDefaultContext; ! private ServletRequest maskedFacade; ! private ServletRequest facade; ! ! HttpRequestWrapper(HttpRequest request, HttpServletRequest servletRequest) { ! httpRequest = (Request) request; ! this.servletRequest = servletRequest; ! isDefaultContext = httpRequest.getMappingData().isDefaultContext; } // ----- HttpRequest Methods ----- + @Override public void addCookie(Cookie cookie) { httpRequest.addCookie(cookie); } ! @Override public void addHeader(String name, String value) { httpRequest.addHeader(name, value); } + @Override public void addLocale(Locale locale) { httpRequest.addLocale(locale); } + @Override public void addParameter(String name, String values[]) { httpRequest.addParameter(name, values); } + @Override public void clearCookies() { httpRequest.clearCookies(); } + @Override public void clearHeaders() { httpRequest.clearHeaders(); } + @Override public void clearLocales() { httpRequest.clearLocales(); } + @Override public void clearParameters() { httpRequest.clearParameters(); } + @Override public void replayPayload(byte[] payloadByteArray) { httpRequest.replayPayload(payloadByteArray); } + @Override public void setAuthType(String type) { httpRequest.setAuthType(type); } + @Override public void setMethod(String method) { httpRequest.setMethod(method); } + @Override public void setQueryString(String query) { httpRequest.setQueryString(query); } + @Override public Session getSessionInternal(boolean create) { return httpRequest.getSessionInternal(create); } + @Override public String changeSessionId() { return httpRequest.changeSessionId(); } + @Override public void setPathInfo(String path) { httpRequest.setPathInfo(path); } + @Override public DataChunk getRequestPathMB() { return httpRequest.getRequestPathMB(); } + @Override public void setRequestedSessionCookie(boolean flag) { httpRequest.setRequestedSessionCookie(flag); } + @Override public void setRequestedSessionCookiePath(String cookiePath) { httpRequest.setRequestedSessionCookiePath(cookiePath); } + @Override public void setRequestedSessionId(String id) { httpRequest.setRequestedSessionId(id); } + @Override public void setRequestedSessionURL(boolean flag) { httpRequest.setRequestedSessionURL(flag); } + @Override public void setRequestURI(String uri) { httpRequest.setRequestURI(uri); } + @Override public String getDecodedRequestURI() { return httpRequest.getDecodedRequestURI(); } + @Override public void setServletPath(String path) { httpRequest.setServletPath(path); } + @Override public void setUserPrincipal(Principal principal) { httpRequest.setUserPrincipal(principal); } // ----- Request Methods ----- + @Override public String getAuthorization() { return httpRequest.getAuthorization(); } + @Override public Connector getConnector() { return httpRequest.getConnector(); } + @Override public void setConnector(Connector connector) { httpRequest.setConnector(connector); } + @Override public Context getContext() { return httpRequest.getContext(); } + @Override public void setContext(Context context) { httpRequest.setContext(context); } + @Override public FilterChain getFilterChain() { return httpRequest.getFilterChain(); } + @Override public void setFilterChain(FilterChain filterChain) { httpRequest.setFilterChain(filterChain); } + @Override public Host getHost() { return httpRequest.getHost(); } + @Override public void setHost(Host host) { httpRequest.setHost(host); } + @Override public String getInfo() { return httpRequest.getInfo(); } + /* + * Would have been easier for this class to extend HttpServletRequestWrapper, + * but then the following method would override getRequest method of wrapper. + */ + @Override public ServletRequest getRequest() { return getRequest(false); } + @Override public ServletRequest getRequest(boolean maskDefaultContextMapping) { ! ServletRequest rvalue; ! boolean getMasked = maskDefaultContextMapping && isDefaultContext; ! rvalue = getMasked ? maskedFacade : facade; ! if (rvalue == null) { ! rvalue = new RequestFacadeWrapper(httpRequest, servletRequest, getMasked); ! if (getMasked) { ! maskedFacade = rvalue; ! } else { ! facade = rvalue; ! } ! } ! return rvalue; } + @Override public Response getResponse() { return httpRequest.getResponse(); } + @Override public void setResponse(Response response) { httpRequest.setResponse(response); } + @Override public Socket getSocket() { return httpRequest.getSocket(); } + @Override public void setSocket(Socket socket) { httpRequest.setSocket(socket); } + @Override public InputStream getStream() { return httpRequest.getStream(); } + @Override public void setStream(InputStream stream) { httpRequest.setStream(stream); } + @Override public Wrapper getWrapper() { return httpRequest.getWrapper(); } + @Override public void setWrapper(Wrapper wrapper) { httpRequest.setWrapper(wrapper); } + @Override public ServletInputStream createInputStream() throws IOException { return httpRequest.createInputStream(); } + @Override public void finishRequest() throws IOException { httpRequest.finishRequest(); } + @Override public Object getNote(String name) { return httpRequest.getNote(name); } + @Override public Iterator getNoteNames() { return httpRequest.getNoteNames(); } + @Override public void recycle() { httpRequest.recycle(); } + @Override public void removeNote(String name) { httpRequest.removeNote(name); } + @Override public void setContentLength(int length) { httpRequest.setContentLength(length); } + @Override public void setContentType(String type) { httpRequest.setContentType(type); } + @Override public void setNote(String name, Object value) { httpRequest.setNote(name, value); } + @Override public void setProtocol(String protocol) { httpRequest.setProtocol(protocol); } + @Override public void setRemoteAddr(String remote) { httpRequest.setRemoteAddr(remote); } + @Override public void setSecure(boolean secure) { httpRequest.setSecure(secure); } + @Override public void setServerName(String name) { httpRequest.setServerName(name); } + @Override public void setServerPort(int port) { httpRequest.setServerPort(port); } + @Override public void setCheckRestrictedResources(boolean check) { httpRequest.setCheckRestrictedResources(check); } + @Override public boolean getCheckRestrictedResources() { return httpRequest.getCheckRestrictedResources(); } + @Override public String getJrouteId() { return httpRequest.getJrouteId(); } *************** *** 331,336 **** --- 413,419 ---- * This hook allows connectors to provide their own scalable session * ID generators. */ + @Override public String generateSessionId() { return httpRequest.generateSessionId(); } *************** *** 338,353 **** --- 421,626 ---- /** * Disables async support on this request. */ + @Override public void disableAsyncSupport() { httpRequest.disableAsyncSupport(); } + @Override public Session lockSession() { return httpRequest.lockSession(); } + @Override public void unlockSession() { httpRequest.unlockSession(); } + // ----- ServletRequest Methods ----- + // implementation of ServletRequest interface + @Override + public Object getAttribute(String name) { + return servletRequest.getAttribute(name); + } + + @Override + public Enumeration getAttributeNames() { + return servletRequest.getAttributeNames(); + } + + @Override + public String getCharacterEncoding() { + return servletRequest.getCharacterEncoding(); + } + + @Override + public void setCharacterEncoding(String env) throws UnsupportedEncodingException { + servletRequest.setCharacterEncoding(env); + } + + @Override + public int getContentLength() { + return servletRequest.getContentLength(); + } + + @Override + public String getContentType() { + return servletRequest.getContentType(); + } + + @Override + public ServletInputStream getInputStream() throws IOException { + return servletRequest.getInputStream(); + } + + @Override + public String getParameter(String name) { + return servletRequest.getParameter(name); + } + + @Override + public Enumeration getParameterNames() { + return servletRequest.getParameterNames(); + } + + @Override + public String[] getParameterValues(String name) { + return servletRequest.getParameterValues(name); + } + + @Override + public Map getParameterMap() { + return servletRequest.getParameterMap(); + } + + @Override + public String getProtocol() { + return servletRequest.getProtocol(); + } + + @Override + public String getScheme() { + return servletRequest.getScheme(); + } + + @Override + public String getServerName() { + return servletRequest.getServerName(); + } + + @Override + public int getServerPort() { + return servletRequest.getServerPort(); + } + + @Override + public BufferedReader getReader() throws IOException { + return servletRequest.getReader(); + } + + @Override + public String getRemoteAddr() { + return servletRequest.getRemoteAddr(); + } + + @Override + public String getRemoteHost() { + return servletRequest.getRemoteHost(); + } + + @Override + public void setAttribute(String name, Object o) { + servletRequest.setAttribute(name, o); + } + + @Override + public void removeAttribute(String name) { + servletRequest.removeAttribute(name); + } + + @Override + public Locale getLocale() { + return servletRequest.getLocale(); + } + + @Override + public Enumeration getLocales() { + return servletRequest.getLocales(); + } + + @Override + public boolean isSecure() { + return servletRequest.isSecure(); + } + + @Override + public RequestDispatcher getRequestDispatcher(String path) { + return servletRequest.getRequestDispatcher(path); + } + + @Override + public String getRealPath(String path) { + return servletRequest.getRealPath(path); + } + + @Override + public int getRemotePort() { + return servletRequest.getRemotePort(); + } + + @Override + public String getLocalName() { + return servletRequest.getLocalName(); + } + + @Override + public String getLocalAddr() { + return servletRequest.getLocalAddr(); + } + + @Override + public int getLocalPort() { + return servletRequest.getLocalPort(); + } + + @Override + public ServletContext getServletContext() { + return servletRequest.getServletContext(); + } + + @Override + public AsyncContext startAsync() throws IllegalStateException { + return servletRequest.startAsync(); + } + + @Override + public AsyncContext startAsync(ServletRequest sRequest, ServletResponse sResponse) throws IllegalStateException { + return servletRequest.startAsync(sRequest, sResponse); + } + + @Override + public boolean isAsyncStarted() { + return servletRequest.isAsyncStarted(); + } + + @Override + public boolean isAsyncSupported() { + return servletRequest.isAsyncSupported(); + } + + @Override + public AsyncContext getAsyncContext() { + return servletRequest.getAsyncContext(); + } + + @Override + public DispatcherType getDispatcherType() { + return servletRequest.getDispatcherType(); + } + + @Override + public long getContentLengthLong() { + return servletRequest.getContentLengthLong(); + } + }