1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.apache.myfaces.tobago.internal.webapp;
21
22 import org.slf4j.Logger;
23 import org.slf4j.LoggerFactory;
24
25 import javax.servlet.ServletOutputStream;
26 import javax.servlet.http.HttpServletResponse;
27 import javax.servlet.http.HttpServletResponseWrapper;
28 import java.io.IOException;
29 import java.io.PrintWriter;
30 import java.io.StringWriter;
31
32 public class TobagoResponse extends HttpServletResponseWrapper {
33
34 private static final Logger LOG = LoggerFactory.getLogger(TobagoResponse.class);
35
36 private PrintWriter printWriter = null;
37 private StringWriter bufferedWriter = null;
38
39
40 public TobagoResponse(HttpServletResponse base) {
41 super(base);
42 }
43
44 public void setBuffering() {
45 if (bufferedWriter == null) {
46 bufferedWriter = new StringWriter();
47 printWriter = new PrintWriter(bufferedWriter);
48 }
49 }
50
51 public String getBufferedString() {
52 if (bufferedWriter != null) {
53 printWriter.flush();
54 return bufferedWriter.toString();
55 } else {
56 return "";
57 }
58 }
59
60 @Override
61 public ServletOutputStream getOutputStream() throws IOException {
62 LOG.debug("***** getOutputStream() from " + new Exception().getStackTrace()[1]);
63 return getResponse().getOutputStream();
64 }
65
66 @Override
67 public PrintWriter getWriter() throws IOException {
68 LOG.debug("***** getWriter() from " + new Exception().getStackTrace()[1]);
69 if (printWriter != null) {
70 return printWriter;
71 }
72 return getResponse().getWriter();
73 }
74
75
76 @Override
77 public void setContentType(String s) {
78 LOG.debug("***** setContentType(" + s + ") from " + new Exception().getStackTrace()[1]);
79 getResponse().setContentType(s);
80 }
81
82 }