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
36
37
38
39 public class ServletResponseSwitch extends ServletResponseWrapper implements ResponseSwitch
40 {
41
42 private PrintWriter _switchableWriter;
43 private SwitchableOutputStream _switchableOutputStream;
44 private boolean _enabled = true;
45
46 public ServletResponseSwitch(ServletResponse response)
47 {
48 super(response);
49 }
50
51
52
53
54
55 public void setEnabled(boolean enabled)
56 {
57 _enabled = enabled;
58 }
59
60
61
62
63
64 public boolean isEnabled()
65 {
66 return _enabled;
67 }
68
69 @Override
70 public int getBufferSize()
71 {
72 if (isEnabled())
73 {
74 return super.getBufferSize();
75 }
76 return 0;
77 }
78
79 @Override
80 public boolean isCommitted()
81 {
82 if (isEnabled())
83 {
84 return super.isCommitted();
85 }
86 return false;
87 }
88
89 @Override
90 public void reset()
91 {
92 if (isEnabled())
93 {
94 super.reset();
95 }
96 }
97
98 @Override
99 public void resetBuffer()
100 {
101 if (isEnabled())
102 {
103 super.resetBuffer();
104 }
105 }
106
107 @Override
108 public void flushBuffer() throws IOException
109 {
110 if (isEnabled())
111 {
112 super.flushBuffer();
113 }
114 }
115
116 @Override
117 public void setResponse(ServletResponse response)
118 {
119
120 if (response != getResponse())
121 {
122
123 _switchableOutputStream = null;
124 _switchableWriter = null;
125
126
127 super.setResponse(response);
128 }
129 }
130
131 @Override
132 public ServletOutputStream getOutputStream() throws IOException
133 {
134 if (_switchableOutputStream == null)
135 {
136 _switchableOutputStream = new SwitchableOutputStream(super.getOutputStream(), this);
137 }
138 return _switchableOutputStream;
139 }
140
141 @Override
142 public PrintWriter getWriter() throws IOException
143 {
144 if (_switchableWriter == null)
145 {
146 _switchableWriter = new PrintWriter(new SwitchableWriter(super.getWriter(), this));
147 }
148 return _switchableWriter;
149 }
150
151 }