001
014
015 package com.liferay.portal.kernel.servlet;
016
017 import java.util.ArrayList;
018 import java.util.HashMap;
019 import java.util.List;
020 import java.util.Map;
021
022 import javax.servlet.http.HttpServletResponse;
023 import javax.servlet.http.HttpServletResponseWrapper;
024
025
028 public class HeaderCacheServletResponse extends HttpServletResponseWrapper {
029
030 public HeaderCacheServletResponse(HttpServletResponse response) {
031 super(response);
032 }
033
034 public void addDateHeader(String name, long value) {
035 List<Header> values = _headers.get(name);
036
037 if (values == null) {
038 values = new ArrayList<Header>();
039
040 _headers.put(name, values);
041 }
042
043 Header header = new Header();
044
045 header.setType(Header.DATE_TYPE);
046 header.setDateValue(value);
047
048 values.add(header);
049
050 super.addDateHeader(name, value);
051 }
052
053 public void addHeader(String name, String value) {
054 List<Header> values = _headers.get(name);
055
056 if (values == null) {
057 values = new ArrayList<Header>();
058
059 _headers.put(name, values);
060 }
061
062 Header header = new Header();
063
064 header.setType(Header.STRING_TYPE);
065 header.setStringValue(value);
066
067 values.add(header);
068
069 if (name.equals(HttpHeaders.CONTENT_TYPE)) {
070 setContentType(value);
071 }
072
073 super.addHeader(name, value);
074 }
075
076 public void addIntHeader(String name, int value) {
077 List<Header> values = _headers.get(name);
078
079 if (values == null) {
080 values = new ArrayList<Header>();
081
082 _headers.put(name, values);
083 }
084
085 Header header = new Header();
086
087 header.setType(Header.INTEGER_TYPE);
088 header.setIntValue(value);
089
090 values.add(header);
091
092 super.addIntHeader(name, value);
093 }
094
095 public String getHeader(String name) {
096 List<Header> values = _headers.get(name);
097
098 if ((values == null) || values.isEmpty()) {
099 return null;
100 }
101
102 Header header = values.get(0);
103
104 return header.toString();
105 }
106
107 public Map<String, List<Header>> getHeaders() {
108 return _headers;
109 }
110
111 public void setDateHeader(String name, long value) {
112 List<Header> values = new ArrayList<Header>();
113
114 _headers.put(name, values);
115
116 Header header = new Header();
117
118 header.setType(Header.DATE_TYPE);
119 header.setDateValue(value);
120
121 values.add(header);
122
123 super.setDateHeader(name, value);
124 }
125
126 public void setHeader(String name, String value) {
127 List<Header> values = new ArrayList<Header>();
128
129 _headers.put(name, values);
130
131 Header header = new Header();
132
133 header.setType(Header.STRING_TYPE);
134 header.setStringValue(value);
135
136 values.add(header);
137
138 if (name.equals(HttpHeaders.CONTENT_TYPE)) {
139 setContentType(value);
140 }
141
142 super.setHeader(name, value);
143 }
144
145 public void setIntHeader(String name, int value) {
146 List<Header> values = new ArrayList<Header>();
147
148 _headers.put(name, values);
149
150 Header header = new Header();
151
152 header.setType(Header.INTEGER_TYPE);
153 header.setIntValue(value);
154
155 values.add(header);
156
157 super.setIntHeader(name, value);
158 }
159
160 private Map<String, List<Header>> _headers =
161 new HashMap<String, List<Header>>();
162
163 }