001 package com.mockrunner.mock.web; 002 003 import java.io.ByteArrayOutputStream; 004 import java.io.IOException; 005 006 import javax.servlet.ServletOutputStream; 007 008 import com.mockrunner.base.NestedApplicationException; 009 010 /** 011 * Mock implementation of <code>ServletOutputStream</code>. 012 */ 013 public class MockServletOutputStream extends ServletOutputStream 014 { 015 private ByteArrayOutputStream buffer; 016 private String encoding; 017 018 public MockServletOutputStream() 019 { 020 this("ISO-8859-1"); 021 } 022 023 public MockServletOutputStream(String encoding) 024 { 025 buffer = new ByteArrayOutputStream(); 026 this.encoding = encoding; 027 } 028 029 public void setEncoding(String encoding) 030 { 031 this.encoding = encoding; 032 } 033 034 public void write(int value) throws IOException 035 { 036 buffer.write(value); 037 } 038 039 public String getContent() 040 { 041 try 042 { 043 buffer.flush(); 044 return buffer.toString(encoding); 045 } 046 catch(IOException exc) 047 { 048 throw new NestedApplicationException(exc); 049 } 050 } 051 052 public byte[] getBinaryContent() 053 { 054 try 055 { 056 buffer.flush(); 057 return buffer.toByteArray(); 058 } 059 catch(IOException exc) 060 { 061 throw new NestedApplicationException(exc); 062 } 063 } 064 065 public void clearContent() 066 { 067 buffer = new ByteArrayOutputStream(); 068 } 069 }