1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.myfaces.shared.view;
20
21 import java.io.IOException;
22 import java.io.PrintWriter;
23
24 import javax.servlet.ServletOutputStream;
25 import javax.servlet.ServletResponse;
26 import javax.servlet.ServletResponseWrapper;
27
28
29
30
31
32
33
34
35 public class ServletResponseSwitch extends ServletResponseWrapper implements ResponseSwitch
36 {
37
38 private PrintWriter _switchableWriter;
39 private SwitchableOutputStream _switchableOutputStream;
40 private boolean _enabled = true;
41
42 public ServletResponseSwitch(ServletResponse response)
43 {
44 super(response);
45 }
46
47
48
49
50
51 public void setEnabled(boolean enabled)
52 {
53 _enabled = enabled;
54 }
55
56
57
58
59
60 public boolean isEnabled()
61 {
62 return _enabled;
63 }
64
65 @Override
66 public int getBufferSize()
67 {
68 if (isEnabled())
69 {
70 return super.getBufferSize();
71 }
72 return 0;
73 }
74
75 @Override
76 public boolean isCommitted()
77 {
78 if (isEnabled())
79 {
80 return super.isCommitted();
81 }
82 return false;
83 }
84
85 @Override
86 public void reset()
87 {
88 if (isEnabled())
89 {
90 super.reset();
91 }
92 }
93
94 @Override
95 public void resetBuffer()
96 {
97 if (isEnabled())
98 {
99 super.resetBuffer();
100 }
101 }
102
103 @Override
104 public void flushBuffer() throws IOException
105 {
106 if (isEnabled())
107 {
108 super.flushBuffer();
109 }
110 }
111
112 @Override
113 public void setResponse(ServletResponse response)
114 {
115
116 if (response != getResponse())
117 {
118
119 _switchableOutputStream = null;
120 _switchableWriter = null;
121
122
123 super.setResponse(response);
124 }
125 }
126
127 @Override
128 public ServletOutputStream getOutputStream() throws IOException
129 {
130 if (_switchableOutputStream == null)
131 {
132 _switchableOutputStream = new SwitchableOutputStream(super.getOutputStream(), this);
133 }
134 return _switchableOutputStream;
135 }
136
137 @Override
138 public PrintWriter getWriter() throws IOException
139 {
140 if (_switchableWriter == null)
141 {
142 _switchableWriter = new PrintWriter(new SwitchableWriter(super.getWriter(), this));
143 }
144 return _switchableWriter;
145 }
146
147 }