/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ package org.apache.sling.engine.impl.adapter; import java.io.BufferedReader; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.security.Principal; import java.util.Enumeration; import java.util.Locale; import java.util.Map; import javax.servlet.RequestDispatcher; import javax.servlet.ServletInputStream; import javax.servlet.ServletRequest; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import org.apache.sling.api.SlingHttpServletRequest; import org.apache.sling.api.wrappers.SlingHttpServletRequestWrapper; /** * The <code>SlingServletRequestAdapter</code> class is a * <code>ComponentRequestWrapper</code> which does not delegate to a wrapped * <code>ComponentRequest</code> but to a wrapped * <code>HttpServletRequest</code>. This is required if any user of the * <code>RequestDispatcher.include</code> method uses a * <code>HttpServletRequestWrapper</code> instead of a * <code>ComponentRequestWrapper</code>. */ public class SlingServletRequestAdapter extends SlingHttpServletRequestWrapper { private final HttpServletRequest request; public SlingServletRequestAdapter(SlingHttpServletRequest delegatee, HttpServletRequest request) { super(delegatee); this.request = request; } @Override public String getLocalAddr() { return request.getLocalAddr(); } @Override public String getLocalName() { return request.getLocalName(); } @Override public int getLocalPort() { return request.getLocalPort(); } @Override public int getRemotePort() { return request.getRemotePort(); } @Override public String getAuthType() { return request.getAuthType(); } @Override public String getContextPath() { return request.getContextPath(); } @Override public Cookie[] getCookies() { return request.getCookies(); } @Override public long getDateHeader(String name) { return request.getDateHeader(name); } @Override public String getHeader(String name) { return request.getHeader(name); } @Override public Enumeration<String> getHeaderNames() { return request.getHeaderNames(); } @Override public Enumeration<String> getHeaders(String name) { return request.getHeaders(name); } @Override public int getIntHeader(String name) { return request.getIntHeader(name); } @Override public String getMethod() { return request.getMethod(); } @Override public String getPathInfo() { return request.getPathInfo(); } @Override public String getPathTranslated() { return request.getPathTranslated(); } @Override public String getQueryString() { return request.getQueryString(); } @Override public String getRemoteUser() { return request.getRemoteUser(); } @Override public String getRequestURI() { return request.getRequestURI(); } @Override public StringBuffer getRequestURL() { return request.getRequestURL(); } @Override public String getRequestedSessionId() { return request.getRequestedSessionId(); } @Override public String getServletPath() { return request.getServletPath(); } @Override public HttpSession getSession() { return request.getSession(); } @Override public HttpSession getSession(boolean create) { return request.getSession(create); } @Override public Principal getUserPrincipal() { return request.getUserPrincipal(); } @Override public boolean isRequestedSessionIdFromCookie() { return request.isRequestedSessionIdFromCookie(); } @Override public boolean isRequestedSessionIdFromURL() { return request.isRequestedSessionIdFromURL(); } @Override @Deprecated public boolean isRequestedSessionIdFromUrl() { return request.isRequestedSessionIdFromUrl(); } @Override public boolean isRequestedSessionIdValid() { return request.isRequestedSessionIdValid(); } @Override public boolean isUserInRole(String role) { return request.isUserInRole(role); } @Override public Object getAttribute(String name) { return request.getAttribute(name); } @Override public Enumeration<String> getAttributeNames() { return request.getAttributeNames(); } @Override public String getCharacterEncoding() { return request.getCharacterEncoding(); } @Override public int getContentLength() { return request.getContentLength(); } @Override public String getContentType() { return request.getContentType(); } @Override public ServletInputStream getInputStream() throws IOException { return request.getInputStream(); } @Override public Locale getLocale() { return request.getLocale(); } @Override public Enumeration<Locale> getLocales() { return request.getLocales(); } @Override public String getParameter(String name) { return request.getParameter(name); } @Override public Map<String, String[]> getParameterMap() { return request.getParameterMap(); } @Override public Enumeration<String> getParameterNames() { return request.getParameterNames(); } @Override public String[] getParameterValues(String name) { return request.getParameterValues(name); } @Override public String getProtocol() { return request.getProtocol(); } @Override public BufferedReader getReader() throws IOException { return request.getReader(); } @Override @Deprecated public String getRealPath(String path) { return request.getRealPath(path); } @Override public String getRemoteAddr() { return request.getRemoteAddr(); } @Override public String getRemoteHost() { return request.getRemoteHost(); } @Override public ServletRequest getRequest() { return request; } @Override public SlingHttpServletRequest getSlingRequest() { // overwrite base class getSlingRequest since that method // calls getRequest which is overwritten here to return the // HttpServletRequest - we have to get the actual underlying // request object which is available from the base class return (SlingHttpServletRequest) super.getRequest(); } @Override public RequestDispatcher getRequestDispatcher(String path) { return request.getRequestDispatcher(path); } @Override public String getScheme() { return request.getScheme(); } @Override public String getServerName() { return request.getServerName(); } @Override public int getServerPort() { return request.getServerPort(); } @Override public boolean isSecure() { return request.isSecure(); } @Override public void removeAttribute(String name) { request.removeAttribute(name); } @Override public void setAttribute(String name, Object o) { request.setAttribute(name, o); } @Override public void setCharacterEncoding(String enc) throws UnsupportedEncodingException { request.setCharacterEncoding(enc); } }