/** * Provides detailed logging for a writer. */ private void log(Writer writer) throws IOException { if(writer==null) { log.write("null"); } else if(writer instanceof LoggingWriter) { LoggingWriter loggingWriter = (LoggingWriter)writer; log.write("writer["); log.write(Long.toString(loggingWriter.getId())); log.write(']'); } else if(writer instanceof EncoderWriter) { EncoderWriter encoderWriter = (EncoderWriter)writer; log.write("new EncoderWriter("); log(encoderWriter.getEncoder()); log.write(", "); log(encoderWriter.getOut()); log.write(')'); } else { String classname = writer.getClass().getName(); if(classname.equals("org.apache.jasper.runtime.BodyContentImpl")) log.write("bodyContent"); else if(classname.equals("org.apache.jasper.runtime.JspWriterImpl")) log.write("jspWriter"); else log.write(classname); } }