]> WPIA git - gigi.git/blobdiff - lib/servlet-api/javax/servlet/ServletResponseWrapper.java
adding servlet api (from tomcat)
[gigi.git] / lib / servlet-api / javax / servlet / ServletResponseWrapper.java
diff --git a/lib/servlet-api/javax/servlet/ServletResponseWrapper.java b/lib/servlet-api/javax/servlet/ServletResponseWrapper.java
new file mode 100644 (file)
index 0000000..9b440dd
--- /dev/null
@@ -0,0 +1,244 @@
+/*
+ * 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.IOException;
+import java.io.PrintWriter;
+import java.util.Locale;
+
+/**
+ * Provides a convenient implementation of the ServletResponse interface that
+ * can be subclassed by developers wishing to adapt the response from a Servlet.
+ * This class implements the Wrapper or Decorator pattern. Methods default to
+ * calling through to the wrapped response object.
+ *
+ * @since v 2.3
+ * @see javax.servlet.ServletResponse
+ */
+public class ServletResponseWrapper implements ServletResponse {
+    private ServletResponse response;
+
+    /**
+     * Creates a ServletResponse adaptor wrapping the given response object.
+     *
+     * @throws java.lang.IllegalArgumentException
+     *             if the response is null.
+     */
+    public ServletResponseWrapper(ServletResponse response) {
+        if (response == null) {
+            throw new IllegalArgumentException("Response cannot be null");
+        }
+        this.response = response;
+    }
+
+    /**
+     * Return the wrapped ServletResponse object.
+     */
+    public ServletResponse getResponse() {
+        return this.response;
+    }
+
+    /**
+     * Sets the response being wrapped.
+     *
+     * @throws java.lang.IllegalArgumentException
+     *             if the response is null.
+     */
+    public void setResponse(ServletResponse response) {
+        if (response == null) {
+            throw new IllegalArgumentException("Response cannot be null");
+        }
+        this.response = response;
+    }
+
+    /**
+     * The default behavior of this method is to call
+     * setCharacterEncoding(String charset) on the wrapped response object.
+     *
+     * @since 2.4
+     */
+    @Override
+    public void setCharacterEncoding(String charset) {
+        this.response.setCharacterEncoding(charset);
+    }
+
+    /**
+     * The default behavior of this method is to return getCharacterEncoding()
+     * on the wrapped response object.
+     */
+    @Override
+    public String getCharacterEncoding() {
+        return this.response.getCharacterEncoding();
+    }
+
+    /**
+     * The default behavior of this method is to return getOutputStream() on the
+     * wrapped response object.
+     */
+    @Override
+    public ServletOutputStream getOutputStream() throws IOException {
+        return this.response.getOutputStream();
+    }
+
+    /**
+     * The default behavior of this method is to return getWriter() on the
+     * wrapped response object.
+     */
+    @Override
+    public PrintWriter getWriter() throws IOException {
+        return this.response.getWriter();
+    }
+
+    /**
+     * The default behavior of this method is to call setContentLength(int len)
+     * on the wrapped response object.
+     */
+    @Override
+    public void setContentLength(int len) {
+        this.response.setContentLength(len);
+    }
+
+    /**
+     * The default behavior of this method is to call setContentLength(long len)
+     * on the wrapped response object.
+     */
+    @Override
+    public void setContentLengthLong(long length) {
+        this.response.setContentLengthLong(length);
+    }
+
+    /**
+     * The default behavior of this method is to call setContentType(String
+     * type) on the wrapped response object.
+     */
+    @Override
+    public void setContentType(String type) {
+        this.response.setContentType(type);
+    }
+
+    /**
+     * The default behavior of this method is to return getContentType() on the
+     * wrapped response object.
+     *
+     * @since 2.4
+     */
+    @Override
+    public String getContentType() {
+        return this.response.getContentType();
+    }
+
+    /**
+     * The default behavior of this method is to call setBufferSize(int size) on
+     * the wrapped response object.
+     */
+    @Override
+    public void setBufferSize(int size) {
+        this.response.setBufferSize(size);
+    }
+
+    /**
+     * The default behavior of this method is to return getBufferSize() on the
+     * wrapped response object.
+     */
+    @Override
+    public int getBufferSize() {
+        return this.response.getBufferSize();
+    }
+
+    /**
+     * The default behavior of this method is to call flushBuffer() on the
+     * wrapped response object.
+     */
+    @Override
+    public void flushBuffer() throws IOException {
+        this.response.flushBuffer();
+    }
+
+    /**
+     * The default behavior of this method is to return isCommitted() on the
+     * wrapped response object.
+     */
+    @Override
+    public boolean isCommitted() {
+        return this.response.isCommitted();
+    }
+
+    /**
+     * The default behavior of this method is to call reset() on the wrapped
+     * response object.
+     */
+    @Override
+    public void reset() {
+        this.response.reset();
+    }
+
+    /**
+     * The default behavior of this method is to call resetBuffer() on the
+     * wrapped response object.
+     */
+    @Override
+    public void resetBuffer() {
+        this.response.resetBuffer();
+    }
+
+    /**
+     * The default behavior of this method is to call setLocale(Locale loc) on
+     * the wrapped response object.
+     */
+    @Override
+    public void setLocale(Locale loc) {
+        this.response.setLocale(loc);
+    }
+
+    /**
+     * The default behavior of this method is to return getLocale() on the
+     * wrapped response object.
+     */
+    @Override
+    public Locale getLocale() {
+        return this.response.getLocale();
+    }
+
+    /**
+     * @param wrapped
+     * @since Servlet 3.0 TODO SERVLET3 - Add comments
+     */
+    public boolean isWrapperFor(ServletResponse wrapped) {
+        if (response == wrapped) {
+            return true;
+        }
+        if (response instanceof ServletResponseWrapper) {
+            return ((ServletResponseWrapper) response).isWrapperFor(wrapped);
+        }
+        return false;
+    }
+
+    /**
+     * @param wrappedType
+     * @since Servlet 3.0 TODO SERVLET3 - Add comments
+     */
+    public boolean isWrapperFor(Class<?> wrappedType) {
+        if (wrappedType.isAssignableFrom(response.getClass())) {
+            return true;
+        }
+        if (response instanceof ServletResponseWrapper) {
+            return ((ServletResponseWrapper) response).isWrapperFor(wrappedType);
+        }
+        return false;
+    }
+
+}