Skip to content

Commit 942bfe0

Browse files
author
Stephane Landelle
committed
Move prepareResponse from Provider to HttpStatus
1 parent 0253d34 commit 942bfe0

26 files changed

+124
-189
lines changed

api/src/main/java/org/asynchttpclient/AsyncHttpProvider.java

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717

1818
import java.io.Closeable;
1919
import java.io.IOException;
20-
import java.util.List;
2120

2221
/**
2322
* Interface to be used when implementing custom asynchronous I/O HTTP client.
@@ -39,16 +38,4 @@ public interface AsyncHttpProvider extends Closeable {
3938
* Close the current underlying TCP/HTTP connection.
4039
*/
4140
public void close();
42-
43-
/**
44-
* Prepare a {@link Response}
45-
*
46-
* @param status {@link HttpResponseStatus}
47-
* @param headers {@link HttpResponseHeaders}
48-
* @param bodyParts list of {@link HttpResponseBodyPart}
49-
* @return a {@link Response}
50-
*/
51-
public Response prepareResponse(HttpResponseStatus status,
52-
HttpResponseHeaders headers,
53-
List<HttpResponseBodyPart> bodyParts);
5441
}

api/src/main/java/org/asynchttpclient/HttpContent.java

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -21,23 +21,12 @@
2121
* Base class for callback class used by {@link AsyncHandler}
2222
*/
2323
public class HttpContent {
24-
protected final AsyncHttpProvider provider;
2524
protected final URI uri;
2625

27-
protected HttpContent(URI url, AsyncHttpProvider provider) {
28-
this.provider = provider;
26+
protected HttpContent(URI url) {
2927
this.uri = url;
3028
}
3129

32-
/**
33-
* Return the current {@link AsyncHttpProvider}
34-
*
35-
* @return the current {@link AsyncHttpProvider}
36-
*/
37-
public final AsyncHttpProvider provider() {
38-
return provider;
39-
}
40-
4130
/**
4231
* Return the request {@link URI}
4332
*

api/src/main/java/org/asynchttpclient/HttpResponseBodyPart.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@
2626
*/
2727
public abstract class HttpResponseBodyPart extends HttpContent {
2828

29-
public HttpResponseBodyPart(URI uri, AsyncHttpProvider provider) {
30-
super(uri, provider);
29+
public HttpResponseBodyPart(URI uri) {
30+
super(uri);
3131
}
3232

3333
/**

api/src/main/java/org/asynchttpclient/HttpResponseHeaders.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,13 @@ public abstract class HttpResponseHeaders extends HttpContent {
2424

2525
private final boolean traillingHeaders;
2626

27-
public HttpResponseHeaders(URI uri, AsyncHttpProvider provider) {
28-
super(uri, provider);
27+
public HttpResponseHeaders(URI uri) {
28+
super(uri);
2929
this.traillingHeaders = false;
3030
}
3131

32-
public HttpResponseHeaders(URI uri, AsyncHttpProvider provider, boolean traillingHeaders) {
33-
super(uri, provider);
32+
public HttpResponseHeaders(URI uri, boolean traillingHeaders) {
33+
super(uri);
3434
this.traillingHeaders = traillingHeaders;
3535
}
3636

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

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,55 +17,66 @@
1717
package org.asynchttpclient;
1818

1919
import java.net.URI;
20+
import java.util.List;
2021

2122
/**
2223
* A class that represent the HTTP response' status line (code + text)
2324
*/
2425
public abstract class HttpResponseStatus extends HttpContent {
2526

26-
public HttpResponseStatus(URI uri, AsyncHttpProvider provider) {
27-
super(uri, provider);
27+
public HttpResponseStatus(URI uri) {
28+
super(uri);
2829
}
2930

31+
/**
32+
* Prepare a {@link Response}
33+
*
34+
* @param headers {@link HttpResponseHeaders}
35+
* @param bodyParts list of {@link HttpResponseBodyPart}
36+
* @return a {@link Response}
37+
*/
38+
public abstract Response prepareResponse(HttpResponseHeaders headers,
39+
List<HttpResponseBodyPart> bodyParts);
40+
3041
/**
3142
* Return the response status code
3243
*
3344
* @return the response status code
3445
*/
35-
abstract public int getStatusCode();
46+
public abstract int getStatusCode();
3647

3748
/**
3849
* Return the response status text
3950
*
4051
* @return the response status text
4152
*/
42-
abstract public String getStatusText();
53+
public abstract String getStatusText();
4354

4455
/**
4556
* Protocol name from status line.
4657
*
4758
* @return Protocol name.
4859
*/
49-
abstract public String getProtocolName();
60+
public abstract String getProtocolName();
5061

5162
/**
5263
* Protocol major version.
5364
*
5465
* @return Major version.
5566
*/
56-
abstract public int getProtocolMajorVersion();
67+
public abstract int getProtocolMajorVersion();
5768

5869
/**
5970
* Protocol minor version.
6071
*
6172
* @return Minor version.
6273
*/
63-
abstract public int getProtocolMinorVersion();
74+
public abstract int getProtocolMinorVersion();
6475

6576
/**
6677
* Full protocol name + version
6778
*
6879
* @return protocol name + version
6980
*/
70-
abstract public String getProtocolText();
81+
public abstract String getProtocolText();
7182
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,7 @@ public ResponseBuilder accumulate(HttpContent httpContent) {
213213
* @return a {@link Response} instance
214214
*/
215215
public Response build() {
216-
return status == null ? null : status.provider().prepareResponse(status, headers, bodies);
216+
return status == null ? null : status.prepareResponse(headers, bodies);
217217
}
218218

219219
/**

api/src/main/java/org/asynchttpclient/providers/jdk/JDKAsyncHttpProvider.java

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -20,17 +20,13 @@
2020
import org.asynchttpclient.AsyncHttpProviderConfig;
2121
import org.asynchttpclient.Body;
2222
import org.asynchttpclient.FluentCaseInsensitiveStringsMap;
23-
import org.asynchttpclient.HttpResponseBodyPart;
24-
import org.asynchttpclient.HttpResponseHeaders;
25-
import org.asynchttpclient.HttpResponseStatus;
2623
import org.asynchttpclient.ListenableFuture;
2724
import org.asynchttpclient.MaxRedirectException;
2825
import org.asynchttpclient.ProgressAsyncHandler;
2926
import org.asynchttpclient.ProxyServer;
3027
import org.asynchttpclient.Realm;
3128
import org.asynchttpclient.Request;
3229
import org.asynchttpclient.RequestBuilder;
33-
import org.asynchttpclient.Response;
3430
import org.asynchttpclient.filter.FilterContext;
3531
import org.asynchttpclient.filter.FilterException;
3632
import org.asynchttpclient.filter.IOExceptionFilter;
@@ -208,10 +204,6 @@ public void close() {
208204
}
209205
}
210206

211-
public Response prepareResponse(HttpResponseStatus status, HttpResponseHeaders headers, List<HttpResponseBodyPart> bodyParts) {
212-
return new JDKResponse(status, headers, bodyParts);
213-
}
214-
215207
private final class AsyncHttpUrlConnection<T> implements Callable<T> {
216208

217209
private HttpURLConnection urlConnection;
@@ -254,7 +246,7 @@ public T call() throws Exception {
254246

255247
logger.debug("\n\nRequest {}\n\nResponse {}\n", request, statusCode);
256248

257-
ResponseStatus status = new ResponseStatus(uri, urlConnection, JDKAsyncHttpProvider.this);
249+
ResponseStatus status = new ResponseStatus(uri, urlConnection);
258250
FilterContext<T> fc = new FilterContext.FilterContextBuilder<T>().asyncHandler(asyncHandler).request(request).responseStatus(status).build();
259251
for (ResponseFilter asyncFilter : config.getResponseFilters()) {
260252
fc = asyncFilter.filter(fc);
@@ -315,7 +307,7 @@ public T call() throws Exception {
315307

316308
state = asyncHandler.onStatusReceived(status);
317309
if (state == AsyncHandler.STATE.CONTINUE) {
318-
state = asyncHandler.onHeadersReceived(new ResponseHeaders(uri, urlConnection, JDKAsyncHttpProvider.this));
310+
state = asyncHandler.onHeadersReceived(new ResponseHeaders(uri, urlConnection));
319311
}
320312

321313
if (state == AsyncHandler.STATE.CONTINUE) {
@@ -352,12 +344,12 @@ public T call() throws Exception {
352344
byte[] b = new byte[read];
353345
System.arraycopy(bytes, 0, b, 0, read);
354346
leftBytes -= read;
355-
asyncHandler.onBodyPartReceived(new ResponseBodyPart(uri, b, JDKAsyncHttpProvider.this, leftBytes > -1));
347+
asyncHandler.onBodyPartReceived(new ResponseBodyPart(uri, b, leftBytes > -1));
356348
}
357349
}
358350

359351
if (request.getMethod().equalsIgnoreCase("HEAD")) {
360-
asyncHandler.onBodyPartReceived(new ResponseBodyPart(uri, "".getBytes(), JDKAsyncHttpProvider.this, true));
352+
asyncHandler.onBodyPartReceived(new ResponseBodyPart(uri, "".getBytes(), true));
361353
}
362354
}
363355

api/src/main/java/org/asynchttpclient/providers/jdk/ResponseBodyPart.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
*/
1313
package org.asynchttpclient.providers.jdk;
1414

15-
import org.asynchttpclient.AsyncHttpProvider;
1615
import org.asynchttpclient.HttpResponseBodyPart;
1716

1817
import java.io.ByteArrayInputStream;
@@ -31,8 +30,8 @@ public class ResponseBodyPart extends HttpResponseBodyPart {
3130
private final boolean isLast;
3231
private boolean closeConnection;
3332

34-
public ResponseBodyPart(URI uri, byte[] chunk, AsyncHttpProvider provider, boolean last) {
35-
super(uri, provider);
33+
public ResponseBodyPart(URI uri, byte[] chunk, boolean last) {
34+
super(uri);
3635
this.chunk = chunk;
3736
isLast = last;
3837
}

api/src/main/java/org/asynchttpclient/providers/jdk/ResponseHeaders.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
*/
1313
package org.asynchttpclient.providers.jdk;
1414

15-
import org.asynchttpclient.AsyncHttpProvider;
1615
import org.asynchttpclient.FluentCaseInsensitiveStringsMap;
1716
import org.asynchttpclient.HttpResponseHeaders;
1817

@@ -29,8 +28,8 @@ public class ResponseHeaders extends HttpResponseHeaders {
2928
private final HttpURLConnection urlConnection;
3029
private final FluentCaseInsensitiveStringsMap headers;
3130

32-
public ResponseHeaders(URI uri, HttpURLConnection urlConnection, AsyncHttpProvider provider) {
33-
super(uri, provider, false);
31+
public ResponseHeaders(URI uri, HttpURLConnection urlConnection) {
32+
super(uri, false);
3433
this.urlConnection = urlConnection;
3534
headers = computerHeaders();
3635
}

api/src/main/java/org/asynchttpclient/providers/jdk/ResponseStatus.java

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,15 @@
1212
*/
1313
package org.asynchttpclient.providers.jdk;
1414

15-
import org.asynchttpclient.AsyncHttpProvider;
15+
import org.asynchttpclient.HttpResponseBodyPart;
16+
import org.asynchttpclient.HttpResponseHeaders;
1617
import org.asynchttpclient.HttpResponseStatus;
18+
import org.asynchttpclient.Response;
1719

1820
import java.io.IOException;
1921
import java.net.HttpURLConnection;
2022
import java.net.URI;
23+
import java.util.List;
2124

2225
/**
2326
* A class that represent the HTTP response' status line (code + text)
@@ -26,11 +29,15 @@ public class ResponseStatus extends HttpResponseStatus {
2629

2730
private final HttpURLConnection urlConnection;
2831

29-
public ResponseStatus(URI uri, HttpURLConnection urlConnection, AsyncHttpProvider provider) {
30-
super(uri, provider);
32+
public ResponseStatus(URI uri, HttpURLConnection urlConnection) {
33+
super(uri);
3134
this.urlConnection = urlConnection;
3235
}
3336

37+
public Response prepareResponse(HttpResponseHeaders headers, List<HttpResponseBodyPart> bodyParts) {
38+
return new JDKResponse(this, headers, bodyParts);
39+
}
40+
3441
/**
3542
* Return the response status code
3643
*

api/src/main/java/org/asynchttpclient/webdav/WebDavCompletionHandlerBase.java

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -81,12 +81,12 @@ public final STATE onHeadersReceived(final HttpResponseHeaders headers) throws E
8181
/* @Override */
8282
public final T onCompleted() throws Exception {
8383
if (status != null) {
84-
Response response = status.provider().prepareResponse(status, headers, bodies);
84+
Response response = status.prepareResponse(headers, bodies);
8585
Document document = null;
8686
if (status.getStatusCode() == 207) {
8787
document = readXMLResponse(response.getResponseBodyAsStream());
8888
}
89-
return onCompleted(new WebDavResponse(status.provider().prepareResponse(status, headers, bodies), document));
89+
return onCompleted(new WebDavResponse(status.prepareResponse(headers, bodies), document));
9090
} else {
9191
throw new IllegalStateException("Status is null");
9292
}
@@ -118,12 +118,17 @@ private class HttpStatusWrapper extends HttpResponseStatus {
118118
private final int statusCode;
119119

120120
public HttpStatusWrapper(HttpResponseStatus wrapper, String statusText, int statusCode) {
121-
super(wrapper.getUrl(), wrapper.provider());
121+
super(wrapper.getUrl());
122122
this.wrapper = wrapper;
123123
this.statusText = statusText;
124124
this.statusCode = statusCode;
125125
}
126126

127+
public Response prepareResponse(HttpResponseHeaders headers,
128+
List<HttpResponseBodyPart> bodyParts) {
129+
return wrapper.prepareResponse(headers, bodyParts);
130+
}
131+
127132
@Override
128133
public int getStatusCode() {
129134
return (statusText == null ? wrapper.getStatusCode() : statusCode);

providers/grizzly/src/main/java/org/asynchttpclient/providers/grizzly/EventHandler.java

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -108,8 +108,7 @@ public void onHttpContentParsed(HttpContent content,
108108
context.setCurrentState(handler.onBodyPartReceived(
109109
new GrizzlyResponseBodyPart(content,
110110
context.getRequest().getURI(),
111-
ctx.getConnection(),
112-
provider)));
111+
ctx.getConnection())));
113112
} catch (Exception e) {
114113
handler.onThrowable(e);
115114
}
@@ -194,7 +193,7 @@ public void onInitialLineParsed(HttpHeader httpHeader,
194193
final GrizzlyResponseStatus responseStatus =
195194
new GrizzlyResponseStatus((HttpResponsePacket) httpHeader,
196195
context.getRequest().getURI(),
197-
provider);
196+
provider.getClientConfig().isRfc6265CookieEncoding());
198197
context.setResponseStatus(responseStatus);
199198
if (context.getStatusHandler() != null) {
200199
return;
@@ -248,8 +247,7 @@ public void onHttpHeadersParsed(HttpHeader httpHeader,
248247
final AsyncHandler handler = context.getHandler();
249248
final GrizzlyResponseHeaders responseHeaders =
250249
new GrizzlyResponseHeaders((HttpResponsePacket) httpHeader,
251-
context.getRequest().getURI(),
252-
provider);
250+
context.getRequest().getURI());
253251
if (context.getProvider().getClientConfig().hasResponseFilters()) {
254252
final List<ResponseFilter> filters = context.getProvider()
255253
.getClientConfig().getResponseFilters();

0 commit comments

Comments
 (0)