1
14
15 package com.liferay.portal.kernel.servlet;
16
17 import java.util.ArrayList;
18 import java.util.HashMap;
19 import java.util.List;
20 import java.util.Map;
21
22 import javax.servlet.http.HttpServletResponse;
23 import javax.servlet.http.HttpServletResponseWrapper;
24
25
30 public abstract class HeaderCacheServletResponse
31 extends HttpServletResponseWrapper {
32
33 public HeaderCacheServletResponse(HttpServletResponse response) {
34 super(response);
35 }
36
37 public void addDateHeader(String name, long value) {
38 List<Header> values = _headers.get(name);
39
40 if (values == null) {
41 values = new ArrayList<Header>();
42
43 _headers.put(name, values);
44 }
45
46 Header header = new Header();
47
48 header.setType(Header.DATE_TYPE);
49 header.setDateValue(value);
50
51 values.add(header);
52
53 super.addDateHeader(name, value);
54 }
55
56 public void addHeader(String name, String value) {
57 List<Header> values = _headers.get(name);
58
59 if (values == null) {
60 values = new ArrayList<Header>();
61
62 _headers.put(name, values);
63 }
64
65 Header header = new Header();
66
67 header.setType(Header.STRING_TYPE);
68 header.setStringValue(value);
69
70 values.add(header);
71
72 if (name.equals(HttpHeaders.CONTENT_TYPE)) {
73 setContentType(value);
74 }
75
76 super.addHeader(name, value);
77 }
78
79 public void addIntHeader(String name, int value) {
80 List<Header> values = _headers.get(name);
81
82 if (values == null) {
83 values = new ArrayList<Header>();
84
85 _headers.put(name, values);
86 }
87
88 Header header = new Header();
89
90 header.setType(Header.INTEGER_TYPE);
91 header.setIntValue(value);
92
93 values.add(header);
94
95 super.addIntHeader(name, value);
96 }
97
98 public String getHeader(String name) {
99 List<Header> values = _headers.get(name);
100
101 if ((values == null) || values.isEmpty()) {
102 return null;
103 }
104
105 Header header = values.get(0);
106
107 return header.toString();
108 }
109
110 public Map<String, List<Header>> getHeaders() {
111 return _headers;
112 }
113
114 public void setDateHeader(String name, long value) {
115 List<Header> values = new ArrayList<Header>();
116
117 _headers.put(name, values);
118
119 Header header = new Header();
120
121 header.setType(Header.DATE_TYPE);
122 header.setDateValue(value);
123
124 values.add(header);
125
126 super.setDateHeader(name, value);
127 }
128
129 public void setHeader(String name, String value) {
130 List<Header> values = new ArrayList<Header>();
131
132 _headers.put(name, values);
133
134 Header header = new Header();
135
136 header.setType(Header.STRING_TYPE);
137 header.setStringValue(value);
138
139 values.add(header);
140
141 if (name.equals(HttpHeaders.CONTENT_TYPE)) {
142 setContentType(value);
143 }
144
145 super.setHeader(name, value);
146 }
147
148 public void setIntHeader(String name, int value) {
149 List<Header> values = new ArrayList<Header>();
150
151 _headers.put(name, values);
152
153 Header header = new Header();
154
155 header.setType(Header.INTEGER_TYPE);
156 header.setIntValue(value);
157
158 values.add(header);
159
160 super.setIntHeader(name, value);
161 }
162
163 private Map<String, List<Header>> _headers =
164 new HashMap<String, List<Header>>();
165
166 }