zweb/src/main/java/org/zkoss/web/servlet/ServletOutputStreamWrapper.java

Summary

Maintainability
A
0 mins
Test Coverage
/* ServletOutputStreamWrapper.java

    Purpose:
        
    Description:
        
    History:
        Mon Jan 17 14:08:22     2005, Created by tomyeh

Copyright (C) 2005 Potix Corporation. All Rights Reserved.

{{IS_RIGHT
    This program is distributed under LGPL Version 2.1 in the hope that
    it will be useful, but WITHOUT ANY WARRANTY.
}}IS_RIGHT
*/
package org.zkoss.web.servlet;

import java.io.IOException;
import java.io.OutputStream;
import java.io.Writer;

import javax.servlet.ServletOutputStream;
import javax.servlet.WriteListener;

import org.zkoss.io.WriterOutputStream;

/**
 * A facade of OutputStream for implementing ServletOutputStream.
 *
 * @author tomyeh
 */
public class ServletOutputStreamWrapper extends ServletOutputStream {
    private final OutputStream _stream;

    /** Returns a facade of the specified stream. */
    public static ServletOutputStream getInstance(OutputStream stream) {
        if (stream instanceof ServletOutputStream)
            return (ServletOutputStream) stream;
        return new ServletOutputStreamWrapper(stream);
    }

    /** Returns a facade of the specified writer.
     *
     * @param charset the charset. If null, "UTF-8" is assumed.
     */
    public static ServletOutputStream getInstance(Writer writer, String charset) {
        return new ServletOutputStreamWrapper(writer, charset);
    }

    private ServletOutputStreamWrapper(OutputStream stream) {
        if (stream == null)
            throw new IllegalArgumentException("null");
        _stream = stream;
    }

    /**
     * @param charset the charset. If null, "UTF-8" is assumed.
     */
    public ServletOutputStreamWrapper(Writer writer, String charset) {
        if (writer == null)
            throw new IllegalArgumentException("null");

        _stream = new WriterOutputStream(writer, charset);
    }

    public void write(int b) throws IOException {
        _stream.write(b);
    }

    public void flush() throws IOException {
        _stream.flush();
        super.flush();
    }

    public void close() throws IOException {
        _stream.close();
        super.close();
    }

    public boolean isReady() {
        return false;
    }

    public void setWriteListener(WriteListener writeListener) {
        throw new UnsupportedOperationException();
    }
}