Skip to content

Commit 74b9881

Browse files
committed
Drop ResponseBase, remove one hierarchy level
1 parent b23004e commit 74b9881

File tree

6 files changed

+173
-318
lines changed

6 files changed

+173
-318
lines changed

client/src/main/java/org/asynchttpclient/HttpResponseStatus.java

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
package org.asynchttpclient;
1818

1919
import java.net.SocketAddress;
20-
import java.util.List;
2120

2221
import org.asynchttpclient.uri.Uri;
2322

@@ -43,15 +42,6 @@ public final Uri getUri() {
4342
return uri;
4443
}
4544

46-
/**
47-
* Prepare a {@link Response}
48-
*
49-
* @param headers {@link HttpResponseHeaders}
50-
* @param bodyParts list of {@link HttpResponseBodyPart}
51-
* @return a {@link Response}
52-
*/
53-
public abstract Response prepareResponse(HttpResponseHeaders headers, List<HttpResponseBodyPart> bodyParts);
54-
5545
/**
5646
* Return the response status code
5747
*

client/src/main/java/org/asynchttpclient/Response.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
package org.asynchttpclient;
1818

1919
import org.asynchttpclient.cookie.Cookie;
20+
import org.asynchttpclient.netty.NettyResponse;
2021
import org.asynchttpclient.uri.Uri;
2122

2223
import io.netty.handler.codec.http.HttpHeaders;
@@ -199,7 +200,7 @@ public ResponseBuilder accumulate(HttpResponseBodyPart bodyPart) {
199200
* @return a {@link Response} instance
200201
*/
201202
public Response build() {
202-
return status == null ? null : status.prepareResponse(headers, bodyParts);
203+
return status == null ? null : new NettyResponse(status, headers, bodyParts);
203204
}
204205

205206
/**

client/src/main/java/org/asynchttpclient/ResponseBase.java

Lines changed: 0 additions & 144 deletions
This file was deleted.

client/src/main/java/org/asynchttpclient/netty/NettyResponse.java

Lines changed: 132 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,41 +13,53 @@
1313
*/
1414
package org.asynchttpclient.netty;
1515

16+
import static io.netty.handler.codec.http.HttpHeaders.Names.*;
17+
import static org.asynchttpclient.util.HttpUtils.*;
1618
import static org.asynchttpclient.util.MiscUtils.isNonEmpty;
1719
import io.netty.handler.codec.http.HttpHeaders;
1820

1921
import java.io.ByteArrayInputStream;
2022
import java.io.InputStream;
23+
import java.net.SocketAddress;
2124
import java.nio.ByteBuffer;
2225
import java.nio.charset.Charset;
2326
import java.util.ArrayList;
2427
import java.util.Collections;
2528
import java.util.List;
29+
import java.util.Map;
2630

2731
import org.asynchttpclient.HttpResponseBodyPart;
2832
import org.asynchttpclient.HttpResponseHeaders;
2933
import org.asynchttpclient.HttpResponseStatus;
30-
import org.asynchttpclient.ResponseBase;
34+
import org.asynchttpclient.Response;
3135
import org.asynchttpclient.cookie.Cookie;
3236
import org.asynchttpclient.cookie.CookieDecoder;
37+
import org.asynchttpclient.uri.Uri;
3338

3439
/**
3540
* Wrapper around the {@link org.asynchttpclient.Response} API.
3641
*/
37-
public class NettyResponse extends ResponseBase {
42+
public class NettyResponse implements Response {
43+
44+
private final List<HttpResponseBodyPart> bodyParts;
45+
private final HttpResponseHeaders headers;
46+
private final HttpResponseStatus status;
47+
private List<Cookie> cookies;
3848

3949
public NettyResponse(HttpResponseStatus status,//
4050
HttpResponseHeaders headers,//
4151
List<HttpResponseBodyPart> bodyParts) {
42-
super(status, headers, bodyParts);
52+
this.bodyParts = bodyParts;
53+
this.headers = headers;
54+
this.status = status;
4355
}
4456

45-
protected List<Cookie> buildCookies() {
57+
private List<Cookie> buildCookies() {
4658

47-
List<String> setCookieHeaders = headers.getHeaders().getAll(HttpHeaders.Names.SET_COOKIE2);
59+
List<String> setCookieHeaders = headers.getHeaders().getAll(SET_COOKIE2);
4860

4961
if (!isNonEmpty(setCookieHeaders)) {
50-
setCookieHeaders = headers.getHeaders().getAll(HttpHeaders.Names.SET_COOKIE);
62+
setCookieHeaders = headers.getHeaders().getAll(SET_COOKIE);
5163
}
5264

5365
if (isNonEmpty(setCookieHeaders)) {
@@ -63,6 +75,94 @@ protected List<Cookie> buildCookies() {
6375
return Collections.emptyList();
6476
}
6577

78+
@Override
79+
public final int getStatusCode() {
80+
return status.getStatusCode();
81+
}
82+
83+
@Override
84+
public final String getStatusText() {
85+
return status.getStatusText();
86+
}
87+
88+
@Override
89+
public final Uri getUri() {
90+
return status.getUri();
91+
}
92+
93+
@Override
94+
public SocketAddress getRemoteAddress() {
95+
return status.getRemoteAddress();
96+
}
97+
98+
@Override
99+
public SocketAddress getLocalAddress() {
100+
return status.getLocalAddress();
101+
}
102+
103+
@Override
104+
public final String getContentType() {
105+
return headers != null ? getHeader(CONTENT_TYPE) : null;
106+
}
107+
108+
@Override
109+
public final String getHeader(String name) {
110+
return headers != null ? getHeaders().get(name) : null;
111+
}
112+
113+
@Override
114+
public final List<String> getHeaders(String name) {
115+
return headers != null ? getHeaders().getAll(name) : Collections.<String> emptyList();
116+
}
117+
118+
@Override
119+
public final HttpHeaders getHeaders() {
120+
return headers != null ? headers.getHeaders() : HttpHeaders.EMPTY_HEADERS;
121+
}
122+
123+
@Override
124+
public final boolean isRedirected() {
125+
switch (status.getStatusCode()) {
126+
case 301:
127+
case 302:
128+
case 303:
129+
case 307:
130+
case 308:
131+
return true;
132+
default:
133+
return false;
134+
}
135+
}
136+
137+
@Override
138+
public List<Cookie> getCookies() {
139+
140+
if (headers == null) {
141+
return Collections.emptyList();
142+
}
143+
144+
if (cookies == null) {
145+
cookies = buildCookies();
146+
}
147+
return cookies;
148+
149+
}
150+
151+
@Override
152+
public boolean hasResponseStatus() {
153+
return status != null;
154+
}
155+
156+
@Override
157+
public boolean hasResponseHeaders() {
158+
return headers != null && !headers.getHeaders().isEmpty();
159+
}
160+
161+
@Override
162+
public boolean hasResponseBody() {
163+
return isNonEmpty(bodyParts);
164+
}
165+
66166
@Override
67167
public byte[] getResponseBodyAsBytes() {
68168
return getResponseBodyAsByteBuffer().array();
@@ -87,6 +187,17 @@ public String getResponseBody() {
87187
return getResponseBody(null);
88188
}
89189

190+
private Charset computeCharset(Charset charset) {
191+
192+
if (charset == null) {
193+
String contentType = getContentType();
194+
if (contentType != null)
195+
charset = parseCharset(contentType); // parseCharset can return
196+
// null
197+
}
198+
return charset != null ? charset : DEFAULT_CHARSET;
199+
}
200+
90201
@Override
91202
public String getResponseBody(Charset charset) {
92203
return new String(getResponseBodyAsBytes(), computeCharset(charset));
@@ -96,4 +207,19 @@ public String getResponseBody(Charset charset) {
96207
public InputStream getResponseBodyAsStream() {
97208
return new ByteArrayInputStream(getResponseBodyAsBytes());
98209
}
210+
211+
@Override
212+
public String toString() {
213+
StringBuilder sb = new StringBuilder();
214+
sb.append(getClass().getSimpleName()).append(" {\n")//
215+
.append("\tstatusCode=").append(getStatusCode()).append("\n")//
216+
.append("\theaders=\n");
217+
218+
for (Map.Entry<String, String> header : getHeaders()) {
219+
sb.append("\t\t").append(header.getKey()).append(": ").append(header.getValue()).append("\n");
220+
}
221+
sb.append("\tbody=\n").append(getResponseBody()).append("\n")//
222+
.append("}").toString();
223+
return sb.toString();
224+
}
99225
}

0 commit comments

Comments
 (0)