1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 package org.apache.hc.client5.http.impl.classic;
29
30 import java.io.IOException;
31 import java.util.Iterator;
32 import java.util.Locale;
33
34 import org.apache.hc.client5.http.classic.ExecRuntime;
35 import org.apache.hc.core5.http.ClassicHttpResponse;
36 import org.apache.hc.core5.http.Header;
37 import org.apache.hc.core5.http.HttpEntity;
38 import org.apache.hc.core5.http.ProtocolException;
39 import org.apache.hc.core5.http.ProtocolVersion;
40 import org.apache.hc.core5.util.Args;
41
42
43
44
45
46
47 public final class CloseableHttpResponse implements ClassicHttpResponse {
48
49 private final ClassicHttpResponse response;
50 private final ExecRuntime execRuntime;
51
52 static CloseableHttpResponse adapt(final ClassicHttpResponse response) {
53 if (response == null) {
54 return null;
55 }
56 return response instanceof CloseableHttpResponse
57 ? (CloseableHttpResponse) response
58 : new CloseableHttpResponse(response, null);
59 }
60
61 CloseableHttpResponse(final ClassicHttpResponse response, final ExecRuntime execRuntime) {
62 this.response = Args.notNull(response, "Response");
63 this.execRuntime = execRuntime;
64 }
65
66 @Override
67 public int getCode() {
68 return response.getCode();
69 }
70
71 @Override
72 public HttpEntity getEntity() {
73 return response.getEntity();
74 }
75
76 @Override
77 public boolean containsHeader(final String name) {
78 return response.containsHeader(name);
79 }
80
81 @Override
82 public void setVersion(final ProtocolVersion version) {
83 response.setVersion(version);
84 }
85
86 @Override
87 public void setCode(final int code) {
88 response.setCode(code);
89 }
90
91 @Override
92 public String getReasonPhrase() {
93 return response.getReasonPhrase();
94 }
95
96 @Override
97 public int countHeaders(final String name) {
98 return response.countHeaders(name);
99 }
100
101 @Override
102 public void setEntity(final HttpEntity entity) {
103 response.setEntity(entity);
104 }
105
106 @Override
107 public ProtocolVersion getVersion() {
108 return response.getVersion();
109 }
110
111 @Override
112 public void setReasonPhrase(final String reason) {
113 response.setReasonPhrase(reason);
114 }
115
116 @Override
117 public Header[] getHeaders(final String name) {
118 return response.getHeaders(name);
119 }
120
121 @Override
122 public void addHeader(final Header header) {
123 response.addHeader(header);
124 }
125
126 @Override
127 public Locale getLocale() {
128 return response.getLocale();
129 }
130
131 @Override
132 public void addHeader(final String name, final Object value) {
133 response.addHeader(name, value);
134 }
135
136 @Override
137 public void setLocale(final Locale loc) {
138 response.setLocale(loc);
139 }
140
141 @Override
142 public Header getHeader(final String name) throws ProtocolException {
143 return response.getHeader(name);
144 }
145
146 @Override
147 public void setHeader(final Header header) {
148 response.setHeader(header);
149 }
150
151 @Override
152 public Header getFirstHeader(final String name) {
153 return response.getFirstHeader(name);
154 }
155
156 @Override
157 public void setHeader(final String name, final Object value) {
158 response.setHeader(name, value);
159 }
160
161 @Override
162 public void setHeaders(final Header... headers) {
163 response.setHeaders(headers);
164 }
165
166 @Override
167 public boolean removeHeader(final Header header) {
168 return response.removeHeader(header);
169 }
170
171 @Override
172 public boolean removeHeaders(final String name) {
173 return response.removeHeaders(name);
174 }
175
176 @Override
177 public Header getLastHeader(final String name) {
178 return response.getLastHeader(name);
179 }
180
181 @Override
182 public Header[] getHeaders() {
183 return response.getHeaders();
184 }
185
186 @Override
187 public Iterator<Header> headerIterator() {
188 return response.headerIterator();
189 }
190
191 @Override
192 public Iterator<Header> headerIterator(final String name) {
193 return response.headerIterator(name);
194 }
195
196 @Override
197 public void close() throws IOException {
198 if (execRuntime != null) {
199 try {
200 response.close();
201 execRuntime.disconnectEndpoint();
202 } finally {
203 execRuntime.discardEndpoint();
204 }
205 } else {
206 response.close();
207 }
208 }
209
210 @Override
211 public String toString() {
212 return response.toString();
213 }
214
215 }