1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.exoplatform.services.portletcache;
21
22 import java.io.ByteArrayOutputStream;
23 import java.io.IOException;
24 import java.io.OutputStream;
25 import java.io.PrintWriter;
26
27 import javax.portlet.MimeResponse;
28 import javax.portlet.RenderResponse;
29 import javax.portlet.filter.RenderResponseWrapper;
30
31
32
33
34
35 class BufferedRenderResponse extends RenderResponseWrapper
36 {
37
38
39 private ByteArrayOutputStream buffer;
40
41
42 private String expirationCache;
43
44 BufferedRenderResponse(RenderResponse response)
45 {
46 super(response);
47 }
48
49 public byte[] getBytes()
50 {
51 return buffer != null ? buffer.toByteArray() : new byte[0];
52 }
53
54 public String getExpirationCache()
55 {
56 return expirationCache;
57 }
58
59 @Override
60 public PrintWriter getWriter() throws IOException
61 {
62 throw new UnsupportedOperationException("Not yet implemented");
63 }
64
65 @Override
66 public OutputStream getPortletOutputStream() throws IOException
67 {
68 if (buffer == null)
69 {
70 buffer = new ByteArrayOutputStream();
71 }
72 return buffer;
73 }
74
75 @Override
76 public void addProperty(String key, String value)
77 {
78 if (MimeResponse.EXPIRATION_CACHE.equals(key))
79 {
80 if (expirationCache != null)
81 {
82 expirationCache = value;
83 }
84 }
85 else
86 {
87 super.addProperty(key, value);
88 }
89 }
90
91 @Override
92 public void setProperty(String key, String value)
93 {
94 if (MimeResponse.EXPIRATION_CACHE.equals(key))
95 {
96 expirationCache = value;
97 }
98 else
99 {
100 super.addProperty(key, value);
101 }
102 }
103 }