]> WPIA git - gigi.git/blobdiff - lib/servlet-api/javax/servlet/ServletRequestWrapper.java
adding servlet api (from tomcat)
[gigi.git] / lib / servlet-api / javax / servlet / ServletRequestWrapper.java
diff --git a/lib/servlet-api/javax/servlet/ServletRequestWrapper.java b/lib/servlet-api/javax/servlet/ServletRequestWrapper.java
new file mode 100644 (file)
index 0000000..308a29f
--- /dev/null
@@ -0,0 +1,458 @@
+/*
+ * 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 javax.servlet;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.util.Enumeration;
+import java.util.Locale;
+import java.util.Map;
+
+/**
+ * Provides a convenient implementation of the ServletRequest interface that can
+ * be subclassed by developers wishing to adapt the request to a Servlet. This
+ * class implements the Wrapper or Decorator pattern. Methods default to calling
+ * through to the wrapped request object.
+ *
+ * @since v 2.3
+ * @see javax.servlet.ServletRequest
+ */
+public class ServletRequestWrapper implements ServletRequest {
+    private ServletRequest request;
+
+    /**
+     * Creates a ServletRequest adaptor wrapping the given request object.
+     *
+     * @throws java.lang.IllegalArgumentException
+     *             if the request is null
+     */
+    public ServletRequestWrapper(ServletRequest request) {
+        if (request == null) {
+            throw new IllegalArgumentException("Request cannot be null");
+        }
+        this.request = request;
+    }
+
+    /**
+     * Return the wrapped request object.
+     */
+    public ServletRequest getRequest() {
+        return this.request;
+    }
+
+    /**
+     * Sets the request object being wrapped.
+     *
+     * @throws java.lang.IllegalArgumentException
+     *             if the request is null.
+     */
+    public void setRequest(ServletRequest request) {
+        if (request == null) {
+            throw new IllegalArgumentException("Request cannot be null");
+        }
+        this.request = request;
+    }
+
+    /**
+     * The default behavior of this method is to call getAttribute(String name)
+     * on the wrapped request object.
+     */
+    @Override
+    public Object getAttribute(String name) {
+        return this.request.getAttribute(name);
+    }
+
+    /**
+     * The default behavior of this method is to return getAttributeNames() on
+     * the wrapped request object.
+     */
+    @Override
+    public Enumeration<String> getAttributeNames() {
+        return this.request.getAttributeNames();
+    }
+
+    /**
+     * The default behavior of this method is to return getCharacterEncoding()
+     * on the wrapped request object.
+     */
+    @Override
+    public String getCharacterEncoding() {
+        return this.request.getCharacterEncoding();
+    }
+
+    /**
+     * The default behavior of this method is to set the character encoding on
+     * the wrapped request object.
+     */
+    @Override
+    public void setCharacterEncoding(String enc)
+            throws java.io.UnsupportedEncodingException {
+        this.request.setCharacterEncoding(enc);
+    }
+
+    /**
+     * The default behavior of this method is to return getContentLength() on
+     * the wrapped request object.
+     */
+    @Override
+    public int getContentLength() {
+        return this.request.getContentLength();
+    }
+
+    @Override
+    public long getContentLengthLong() {
+        return this.request.getContentLengthLong();
+    }
+
+    /**
+     * The default behavior of this method is to return getContentType() on the
+     * wrapped request object.
+     */
+    @Override
+    public String getContentType() {
+        return this.request.getContentType();
+    }
+
+    /**
+     * The default behavior of this method is to return getInputStream() on the
+     * wrapped request object.
+     */
+    @Override
+    public ServletInputStream getInputStream() throws IOException {
+        return this.request.getInputStream();
+    }
+
+    /**
+     * The default behavior of this method is to return getParameter(String
+     * name) on the wrapped request object.
+     */
+    @Override
+    public String getParameter(String name) {
+        return this.request.getParameter(name);
+    }
+
+    /**
+     * The default behavior of this method is to return getParameterMap() on the
+     * wrapped request object.
+     */
+    @Override
+    public Map<String, String[]> getParameterMap() {
+        return this.request.getParameterMap();
+    }
+
+    /**
+     * The default behavior of this method is to return getParameterNames() on
+     * the wrapped request object.
+     */
+    @Override
+    public Enumeration<String> getParameterNames() {
+        return this.request.getParameterNames();
+    }
+
+    /**
+     * The default behavior of this method is to return
+     * getParameterValues(String name) on the wrapped request object.
+     */
+    @Override
+    public String[] getParameterValues(String name) {
+        return this.request.getParameterValues(name);
+    }
+
+    /**
+     * The default behavior of this method is to return getProtocol() on the
+     * wrapped request object.
+     */
+    @Override
+    public String getProtocol() {
+        return this.request.getProtocol();
+    }
+
+    /**
+     * The default behavior of this method is to return getScheme() on the
+     * wrapped request object.
+     */
+    @Override
+    public String getScheme() {
+        return this.request.getScheme();
+    }
+
+    /**
+     * The default behavior of this method is to return getServerName() on the
+     * wrapped request object.
+     */
+    @Override
+    public String getServerName() {
+        return this.request.getServerName();
+    }
+
+    /**
+     * The default behavior of this method is to return getServerPort() on the
+     * wrapped request object.
+     */
+    @Override
+    public int getServerPort() {
+        return this.request.getServerPort();
+    }
+
+    /**
+     * The default behavior of this method is to return getReader() on the
+     * wrapped request object.
+     */
+    @Override
+    public BufferedReader getReader() throws IOException {
+        return this.request.getReader();
+    }
+
+    /**
+     * The default behavior of this method is to return getRemoteAddr() on the
+     * wrapped request object.
+     */
+    @Override
+    public String getRemoteAddr() {
+        return this.request.getRemoteAddr();
+    }
+
+    /**
+     * The default behavior of this method is to return getRemoteHost() on the
+     * wrapped request object.
+     */
+    @Override
+    public String getRemoteHost() {
+        return this.request.getRemoteHost();
+    }
+
+    /**
+     * The default behavior of this method is to return setAttribute(String
+     * name, Object o) on the wrapped request object.
+     */
+    @Override
+    public void setAttribute(String name, Object o) {
+        this.request.setAttribute(name, o);
+    }
+
+    /**
+     * The default behavior of this method is to call removeAttribute(String
+     * name) on the wrapped request object.
+     */
+    @Override
+    public void removeAttribute(String name) {
+        this.request.removeAttribute(name);
+    }
+
+    /**
+     * The default behavior of this method is to return getLocale() on the
+     * wrapped request object.
+     */
+    @Override
+    public Locale getLocale() {
+        return this.request.getLocale();
+    }
+
+    /**
+     * The default behavior of this method is to return getLocales() on the
+     * wrapped request object.
+     */
+    @Override
+    public Enumeration<Locale> getLocales() {
+        return this.request.getLocales();
+    }
+
+    /**
+     * The default behavior of this method is to return isSecure() on the
+     * wrapped request object.
+     */
+    @Override
+    public boolean isSecure() {
+        return this.request.isSecure();
+    }
+
+    /**
+     * The default behavior of this method is to return
+     * getRequestDispatcher(String path) on the wrapped request object.
+     */
+    @Override
+    public RequestDispatcher getRequestDispatcher(String path) {
+        return this.request.getRequestDispatcher(path);
+    }
+
+    /**
+     * The default behavior of this method is to return getRealPath(String path)
+     * on the wrapped request object.
+     *
+     * @deprecated As of Version 3.0 of the Java Servlet API
+     */
+    @Override
+    @SuppressWarnings("dep-ann")
+    // Spec API does not use @Deprecated
+    public String getRealPath(String path) {
+        return this.request.getRealPath(path);
+    }
+
+    /**
+     * The default behavior of this method is to return getRemotePort() on the
+     * wrapped request object.
+     *
+     * @since 2.4
+     */
+    @Override
+    public int getRemotePort() {
+        return this.request.getRemotePort();
+    }
+
+    /**
+     * The default behavior of this method is to return getLocalName() on the
+     * wrapped request object.
+     *
+     * @since 2.4
+     */
+    @Override
+    public String getLocalName() {
+        return this.request.getLocalName();
+    }
+
+    /**
+     * The default behavior of this method is to return getLocalAddr() on the
+     * wrapped request object.
+     *
+     * @since 2.4
+     */
+    @Override
+    public String getLocalAddr() {
+        return this.request.getLocalAddr();
+    }
+
+    /**
+     * The default behavior of this method is to return getLocalPort() on the
+     * wrapped request object.
+     *
+     * @since 2.4
+     */
+    @Override
+    public int getLocalPort() {
+        return this.request.getLocalPort();
+    }
+
+    /**
+     * The default behavior of this method is to return getServletContext() on
+     * the wrapped request object.
+     *
+     * @since Servlet 3.0
+     */
+    @Override
+    public ServletContext getServletContext() {
+        return request.getServletContext();
+    }
+
+    /**
+     * The default behavior of this method is to return startAsync() on the
+     * wrapped request object.
+     *
+     * @throws java.lang.IllegalStateException
+     * @since Servlet 3.0
+     */
+    @Override
+    public AsyncContext startAsync() throws IllegalStateException {
+        return request.startAsync();
+    }
+
+    /**
+     * The default behavior of this method is to return startAsync(Runnable) on
+     * the wrapped request object.
+     *
+     * @param servletRequest
+     * @param servletResponse
+     * @throws java.lang.IllegalStateException
+     * @since Servlet 3.0
+     */
+    @Override
+    public AsyncContext startAsync(ServletRequest servletRequest,
+            ServletResponse servletResponse) throws IllegalStateException {
+        return request.startAsync(servletRequest, servletResponse);
+    }
+
+    /**
+     * The default behavior of this method is to return isAsyncStarted() on the
+     * wrapped request object.
+     *
+     * @since Servlet 3.0
+     */
+    @Override
+    public boolean isAsyncStarted() {
+        return request.isAsyncStarted();
+    }
+
+    /**
+     * The default behavior of this method is to return isAsyncSupported() on
+     * the wrapped request object.
+     *
+     * @since Servlet 3.0
+     */
+    @Override
+    public boolean isAsyncSupported() {
+        return request.isAsyncSupported();
+    }
+
+    /**
+     * The default behavior of this method is to return getAsyncContext() on the
+     * wrapped request object.
+     *
+     * @since Servlet 3.0
+     */
+    @Override
+    public AsyncContext getAsyncContext() {
+        return request.getAsyncContext();
+    }
+
+    /**
+     * @param wrapped
+     * @since Servlet 3.0 TODO SERVLET3 - Add comments
+     */
+    public boolean isWrapperFor(ServletRequest wrapped) {
+        if (request == wrapped) {
+            return true;
+        }
+        if (request instanceof ServletRequestWrapper) {
+            return ((ServletRequestWrapper) request).isWrapperFor(wrapped);
+        }
+        return false;
+    }
+
+    /**
+     * @param wrappedType
+     * @since Servlet 3.0 TODO SERVLET3 - Add comments
+     */
+    public boolean isWrapperFor(Class<?> wrappedType) {
+        if (wrappedType.isAssignableFrom(request.getClass())) {
+            return true;
+        }
+        if (request instanceof ServletRequestWrapper) {
+            return ((ServletRequestWrapper) request).isWrapperFor(wrappedType);
+        }
+        return false;
+    }
+
+    /**
+     * The default behavior of this method is to call getDispatcherType() on the
+     * wrapped request object.
+     *
+     * @since Servlet 3.0
+     */
+    @Override
+    public DispatcherType getDispatcherType() {
+        return this.request.getDispatcherType();
+    }
+}