All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.yestech.lib.web.GenericResponseWrapper Maven / Gradle / Ivy

Go to download

A collection of classes that can be used across yestech artifacts/components, but must not be dependant on any yestech component. Most of the code is utility type code. When more than a few classes are found to be in a package or the package start to handle more that a few reposibilities then a new independant component is created and the existing code in yeslib is ported to the new component.

There is a newer version: 1.2.0
Show newest version
/*
 * Copyright LGPL3
 * YES Technology Association
 * http://yestech.org
 *
 * http://www.opensource.org/licenses/lgpl-3.0.html
 */
package org.yestech.lib.web;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.yestech.lib.web.filter.FilterServletOutputStream;

import javax.servlet.ServletOutputStream;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpServletResponseWrapper;
import java.io.*;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

/**
 * Provides a wrapper for {@link javax.servlet.http.HttpServletResponseWrapper}.
 * 

* It is used to wrap the real Response so that we can modify it after * that the target of the request has delivered its response. *

* It uses the Wrapper pattern. * * @author Artie Copeland * @version $Revision: $ */ public class GenericResponseWrapper extends HttpServletResponseWrapper implements Serializable { private static final long serialVersionUID = -5976708169031065498L; final private static Logger logger = LoggerFactory.getLogger(GenericResponseWrapper.class); private int statusCode = SC_OK; private int contentLength; private String contentType; private final List headers = new ArrayList(); private final List cookies = new ArrayList(); private ServletOutputStream outstr; private PrintWriter writer; /** * Creates a GenericResponseWrapper */ public GenericResponseWrapper(final HttpServletResponse response, final OutputStream outstr) { super(response); this.outstr = new FilterServletOutputStream(outstr); } /** * Gets the outputstream. */ public ServletOutputStream getOutputStream() { return outstr; } /** * Sets the status code for this response. */ public void setStatus(final int code) { statusCode = code; super.setStatus(code); } /** * Send the error. If the response is not ok, most of the logic is bypassed and the error is sent raw * Also, the content is not cached. * * @param i the status code * @param string the error message * @throws java.io.IOException */ public void sendError(int i, String string) throws IOException { statusCode = i; super.sendError(i, string); } /** * Send the error. If the response is not ok, most of the logic is bypassed and the error is sent raw * Also, the content is not cached. * * @param i the status code * @throws IOException */ public void sendError(int i) throws IOException { statusCode = i; super.sendError(i); } /** * Send the redirect. If the response is not ok, most of the logic is bypassed and the error is sent raw. * Also, the content is not cached. * * @param string the URL to redirect to * @throws IOException */ public void sendRedirect(String string) throws IOException { statusCode = HttpServletResponse.SC_MOVED_TEMPORARILY; super.sendRedirect(string); } /** * Sets the status code for this response. */ public void setStatus(final int code, final String msg) { statusCode = code; logger.warn("Discarding message because this method is deprecated."); super.setStatus(code); } /** * Returns the status code for this response. */ public int getStatus() { return statusCode; } /** * Sets the content length. */ public void setContentLength(final int length) { this.contentLength = length; super.setContentLength(length); } /** * Gets the content length. */ public int getContentLength() { return contentLength; } /** * Sets the content type. */ public void setContentType(final String type) { this.contentType = type; super.setContentType(type); } /** * Gets the content type. */ public String getContentType() { return contentType; } /** * Gets the print writer. */ public PrintWriter getWriter() throws IOException { if (writer == null) { writer = new PrintWriter(new OutputStreamWriter(outstr, getCharacterEncoding()), true); } return writer; } /** * Adds a header. */ public void addHeader(final String name, final String value) { final String[] header = new String[]{name, value}; headers.add(header); super.addHeader(name, value); } /** * @see #addHeader */ public void setHeader(final String name, final String value) { addHeader(name, value); } /** * Gets the headers. */ public Collection getHeaders() { return headers; } /** * Adds a cookie. */ public void addCookie(final Cookie cookie) { cookies.add(cookie); super.addCookie(cookie); } /** * Gets all the cookies. */ public Collection getCookies() { return cookies; } /** * Flushes buffer and commits response to client. */ public void flushBuffer() throws IOException { flush(); super.flushBuffer(); } /** * Resets the response. */ public void reset() { super.reset(); cookies.clear(); headers.clear(); statusCode = SC_OK; contentType = null; contentLength = 0; } /** * Resets the buffers. */ public void resetBuffer() { super.resetBuffer(); } /** * Flushes all the streams for this response. */ public void flush() throws IOException { if (writer != null) { writer.flush(); } outstr.flush(); } /** * Override the deprecated method and call non-deprecated method */ public String encodeRedirectUrl(String s) { return super.encodeRedirectURL(s); } /** * Override the deprecated method and call non-deprecated method */ public String encodeUrl(String s) { return super.encodeURL(s); } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy