GenericResponseWrapper.java

1    package com.acme.filter; 
2     
3    import javax.servlet.ServletOutputStream; 
4    import javax.servlet.http.HttpServletResponse; 
5    import javax.servlet.http.HttpServletResponseWrapper; 
6    import java.io.ByteArrayOutputStream; 
7    import java.io.PrintWriter; 
8     
9    public class GenericResponseWrapper extends HttpServletResponseWrapper { 
10       private ByteArrayOutputStream output; 
11       private int contentLength; 
12       private String contentType; 
13    
14       public GenericResponseWrapper(HttpServletResponse response) { 
15           super(response); 
16           output = new ByteArrayOutputStream(); 
17       } 
18    
19       public byte[] getData() { 
20           return output.toByteArray(); 
21       } 
22    
23       public ServletOutputStream getOutputStream() { 
24           return new FilterServletOutputStream(output); 
25       } 
26    
27       public void setContentLength(int length) { 
28           this.contentLength = length; 
29           super.setContentLength(length); 
30       } 
31    
32       public int getContentLength() { 
33           return contentLength; 
34       } 
35    
36       public void setContentType(String type) { 
37           this.contentType = type; 
38           super.setContentType(type); 
39       } 
40    
41       public String getContentType() { 
42           return contentType; 
43       } 
44    
45       public PrintWriter getWriter() { 
46           return new PrintWriter(getOutputStream(), true); 
47       } 
48   } 
49