/** * Creates a wrapper that implements either {@code ServletRequest} or {@code HttpServletRequest}, * depending on the type of {@code pImplementation.getRequest()}. * * @param pImplementation the servlet request to create a wrapper for * @return a {@code ServletResponse} or {@code HttpServletResponse}, depending on the type of * {@code pImplementation.getResponse()} */ public static ServletRequest createWrapper(final ServletRequestWrapper pImplementation) { // TODO: Get all interfaces from implementation if (pImplementation.getRequest() instanceof HttpServletRequest) { return (HttpServletRequest) Proxy.newProxyInstance( pImplementation.getClass().getClassLoader(), new Class[] {HttpServletRequest.class, ServletRequest.class}, new HttpServletRequestHandler(pImplementation)); } return pImplementation; }