Methods Summary |
---|
private final void | bufferOverflow()
throw new IOException(getLocalizeMessage("jsp.error.overflow"));
|
public final void | clear()Discard the output buffer.
if ((bufferSize == 0) && (out != null))
// clear() is illegal after any unbuffered output (JSP.5.5)
throw new IllegalStateException(
getLocalizeMessage("jsp.error.ise_on_clear"));
if (flushed)
throw new IOException(
getLocalizeMessage("jsp.error.attempt_to_clear_flushed_buffer"));
ensureOpen();
nextChar = 0;
|
public void | clearBuffer()
if (bufferSize == 0)
throw new IllegalStateException(
getLocalizeMessage("jsp.error.ise_on_clear"));
ensureOpen();
nextChar = 0;
|
public void | close()Close the stream.
if (response == null || closed)
// multiple calls to close is OK
return;
flush();
if (out != null)
out.close();
out = null;
byteOut = null;
closed = true;
|
private void | ensureOpen()check to make sure that the stream has not been closed
if (response == null || closed)
throw new IOException("Stream closed");
|
public void | flush()Flush the stream.
flushBuffer();
if (out != null) {
out.flush();
}
// START 6426898
else {
// Cause response headers to be sent
response.flushBuffer();
}
// END 6426898
|
protected final void | flushBuffer()Flush the output buffer to the underlying character stream, without
flushing the stream itself. This method is non-private only so that it
may be invoked by PrintStream.
if (bufferSize == 0)
return;
flushed = true;
ensureOpen();
if (nextChar == 0)
return;
initOut();
out.write(cb, 0, nextChar);
nextChar = 0;
|
private java.lang.String | getLocalizeMessage(java.lang.String message)
if (SecurityUtil.isPackageProtectionEnabled()){
return (String)AccessController.doPrivileged(new PrivilegedAction(){
public Object run(){
return Localizer.getMessage(message);
}
});
} else {
return Localizer.getMessage(message);
}
|
public int | getRemaining()
return bufferSize - nextChar;
|
public boolean | hasData()
if (bufferSize != 0 && nextChar != 0) {
return true;
}
return false;
|
void | init(javax.servlet.ServletResponse response, int sz, boolean autoFlush)
this.response= response;
if( sz > 0 && ( cb == null || sz > cb.length ) )
cb=new char[sz];
nextChar = 0;
this.autoFlush=autoFlush;
this.bufferSize=sz;
// START OF IASRI 4641975/6172992
try {
response.setBufferSize(sz);
} catch (IllegalStateException ise) {
// ignore
}
// END OF IASRI 4641975/6172992
|
private void | initByteOut()
initOut();
if (byteOut == null) {
try {
byteOut = (ByteWriter) out;
implementsByteWriter = true;
} catch (ClassCastException ex) {
implementsByteWriter = false;
}
}
|
private void | initOut()
if (out == null) {
out = response.getWriter();
}
|
private int | min(int a, int b)Our own little min method, to avoid loading java.lang.Math if we've run
out of file descriptors and we're trying to print a stack trace.
if (a < b) return a;
return b;
|
public void | newLine()Write a line separator. The line separator string is defined by the
system property line.separator, and is not necessarily a single
newline ('\n') character.
write(lineSeparator);
|
public void | print(boolean b)Print a boolean value. The string produced by {@link
java.lang.String#valueOf(boolean)} is translated into bytes
according to the platform's default character encoding, and these bytes
are written in exactly the manner of the {@link
#write(int)} method.
write(b ? "true" : "false");
|
public void | print(char c)Print a character. The character is translated into one or more bytes
according to the platform's default character encoding, and these bytes
are written in exactly the manner of the {@link
#write(int)} method.
write(String.valueOf(c));
|
public void | print(int i)Print an integer. The string produced by {@link
java.lang.String#valueOf(int)} is translated into bytes according
to the platform's default character encoding, and these bytes are
written in exactly the manner of the {@link #write(int)}
method.
write(String.valueOf(i));
|
public void | print(long l)Print a long integer. The string produced by {@link
java.lang.String#valueOf(long)} is translated into bytes
according to the platform's default character encoding, and these bytes
are written in exactly the manner of the {@link #write(int)}
method.
write(String.valueOf(l));
|
public void | print(float f)Print a floating-point number. The string produced by {@link
java.lang.String#valueOf(float)} is translated into bytes
according to the platform's default character encoding, and these bytes
are written in exactly the manner of the {@link #write(int)}
method.
write(String.valueOf(f));
|
public void | print(double d)Print a double-precision floating-point number. The string produced by
{@link java.lang.String#valueOf(double)} is translated into
bytes according to the platform's default character encoding, and these
bytes are written in exactly the manner of the {@link
#write(int)} method.
write(String.valueOf(d));
|
public void | print(char[] s)Print an array of characters. The characters are converted into bytes
according to the platform's default character encoding, and these bytes
are written in exactly the manner of the {@link #write(int)}
method.
write(s);
|
public void | print(java.lang.String s)Print a string. If the argument is null then the string
"null" is printed. Otherwise, the string's characters are
converted into bytes according to the platform's default character
encoding, and these bytes are written in exactly the manner of the
{@link #write(int)} method.
if (s == null) {
s = "null";
}
write(s);
|
public void | print(java.lang.Object obj)Print an object. The string produced by the {@link
java.lang.String#valueOf(Object)} method is translated into bytes
according to the platform's default character encoding, and these bytes
are written in exactly the manner of the {@link #write(int)}
method.
write(String.valueOf(obj));
|
public void | println()Terminate the current line by writing the line separator string. The
line separator string is defined by the system property
line.separator , and is not necessarily a single newline
character ('\n' ).
Need to change this from PrintWriter because the default
println() writes to the sink directly instead of through the
write method...
newLine();
|
public void | println(boolean x)Print a boolean value and then terminate the line. This method behaves
as though it invokes {@link #print(boolean)} and then
{@link #println()} .
print(x);
println();
|
public void | println(char x)Print a character and then terminate the line. This method behaves as
though it invokes {@link #print(char)} and then {@link
#println()} .
print(x);
println();
|
public void | println(int x)Print an integer and then terminate the line. This method behaves as
though it invokes {@link #print(int)} and then {@link
#println()} .
print(x);
println();
|
public void | println(long x)Print a long integer and then terminate the line. This method behaves
as though it invokes {@link #print(long)} and then
{@link #println()} .
print(x);
println();
|
public void | println(float x)Print a floating-point number and then terminate the line. This method
behaves as though it invokes {@link #print(float)} and then
{@link #println()} .
print(x);
println();
|
public void | println(double x)Print a double-precision floating-point number and then terminate the
line. This method behaves as though it invokes {@link
#print(double)} and then {@link #println()} .
print(x);
println();
|
public void | println(char[] x)Print an array of characters and then terminate the line. This method
behaves as though it invokes {@link #print(char[])} and then
{@link #println()} .
print(x);
println();
|
public void | println(java.lang.String x)Print a String and then terminate the line. This method behaves as
though it invokes {@link #print(String)} and then
{@link #println()} .
print(x);
println();
|
public void | println(java.lang.Object x)Print an Object and then terminate the line. This method behaves as
though it invokes {@link #print(Object)} and then
{@link #println()} .
print(x);
println();
|
void | recycle()Package-level access
flushed = false;
closed = false;
out = null;
byteOut = null;
nextChar = 0;
response = null;
|
boolean | shouldOutputBytes()
if (bufferSize > 0) {
return false;
}
try {
initByteOut();
} catch (IOException ex) {
}
return implementsByteWriter;
|
public void | write(boolean bytesOK, byte[] buf, java.lang.String str)Attempt to write a String pre-encoded with the page encoding.
ensureOpen();
if (bufferSize == 0 && bytesOK) {
initByteOut();
if (implementsByteWriter) {
write(buf, 0, buf.length, str.length());
return;
}
}
write(str);
|
public void | write(byte[] buf, int off, int len, int strlen)
byteOut.write(buf, off, len, strlen);
|
public void | write(int c)Write a single character.
ensureOpen();
if (bufferSize == 0) {
initOut();
out.write(c);
}
else {
if (nextChar >= bufferSize)
if (autoFlush)
flushBuffer();
else
bufferOverflow();
cb[nextChar++] = (char) c;
}
|
public void | write(char[] cbuf, int off, int len)Write a portion of an array of characters.
Ordinarily this method stores characters from the given array into
this stream's buffer, flushing the buffer to the underlying stream as
needed. If the requested length is at least as large as the buffer,
however, then this method will flush the buffer and write the characters
directly to the underlying stream. Thus redundant
DiscardableBufferedWriter s will not copy data unnecessarily.
ensureOpen();
if (bufferSize == 0) {
initOut();
out.write(cbuf, off, len);
return;
}
if ((off < 0) || (off > cbuf.length) || (len < 0) ||
((off + len) > cbuf.length) || ((off + len) < 0)) {
throw new IndexOutOfBoundsException();
} else if (len == 0) {
return;
}
if (len >= bufferSize) {
/* If the request length exceeds the size of the output buffer,
flush the buffer and then write the data directly. In this
way buffered streams will cascade harmlessly. */
if (autoFlush)
flushBuffer();
else
bufferOverflow();
initOut();
out.write(cbuf, off, len);
return;
}
int b = off, t = off + len;
while (b < t) {
int d = min(bufferSize - nextChar, t - b);
System.arraycopy(cbuf, b, cb, nextChar, d);
b += d;
nextChar += d;
if (nextChar >= bufferSize)
if (autoFlush)
flushBuffer();
else
bufferOverflow();
}
|
public void | write(char[] buf)Write an array of characters. This method cannot be inherited from the
Writer class because it must suppress I/O exceptions.
write(buf, 0, buf.length);
|
public void | write(java.lang.String s, int off, int len)Write a portion of a String.
ensureOpen();
if (bufferSize == 0) {
initOut();
out.write(s, off, len);
return;
}
int b = off, t = off + len;
while (b < t) {
int d = min(bufferSize - nextChar, t - b);
s.getChars(b, b + d, cb, nextChar);
b += d;
nextChar += d;
if (nextChar >= bufferSize)
if (autoFlush)
flushBuffer();
else
bufferOverflow();
}
|
public void | write(java.lang.String s)Write a string. This method cannot be inherited from the Writer class
because it must suppress I/O exceptions.
// Simple fix for Bugzilla 35410
// Calling the other write function so as to init the buffer anyways
write(s, 0, (s != null) ? s.length() : 0);
|