Skip to content

Commit 5b4fc25

Browse files
committed
Remove ResponseFuture uri internal, use request's
1 parent e37befb commit 5b4fc25

File tree

4 files changed

+19
-45
lines changed

4 files changed

+19
-45
lines changed

providers/netty3/src/main/java/org/asynchttpclient/netty/NettyResponseFuture.java

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,6 @@ public enum STATE {
7878

7979
// state mutated only inside the event loop
8080
private Channel channel;
81-
private Uri uri;
8281
private boolean keepAlive = true;
8382
private Request request;
8483
private NettyRequest nettyRequest;
@@ -100,7 +99,6 @@ public NettyResponseFuture(Request request,//
10099
this.asyncHandler = asyncHandler;
101100
this.request = request;
102101
this.nettyRequest = nettyRequest;
103-
this.uri = request.getUri();
104102
this.connectionPoolPartitioning = connectionPoolPartitioning;
105103
this.proxyServer = proxyServer;
106104
this.maxRetry = maxRetry;
@@ -252,11 +250,7 @@ public void touch() {
252250
/*********************************************/
253251

254252
public Uri getUri() {
255-
return uri;
256-
}
257-
258-
public void setUri(Uri uri) {
259-
this.uri = uri;
253+
return request.getUri();
260254
}
261255

262256
public ConnectionPoolPartitioning getConnectionPoolPartitioning() {
@@ -417,15 +411,15 @@ public void setRequest(Request request) {
417411
*/
418412
public boolean canBeReplayed() {
419413
return !isDone() && canRetry()
420-
&& !(Channels.isChannelValid(channel) && !uri.getScheme().equalsIgnoreCase("https")) && !isInAuth();
414+
&& !(Channels.isChannelValid(channel) && !getUri().getScheme().equalsIgnoreCase("https")) && !isInAuth();
421415
}
422416

423417
public long getStart() {
424418
return start;
425419
}
426420

427421
public Object getPartitionKey() {
428-
return connectionPoolPartitioning.getPartitionKey(uri, proxyServer);
422+
return connectionPoolPartitioning.getPartitionKey(getUri(), proxyServer);
429423
}
430424

431425
@Override
@@ -437,7 +431,7 @@ public String toString() {
437431
",\n\tasyncHandler=" + asyncHandler + //
438432
",\n\tnettyRequest=" + nettyRequest + //
439433
",\n\tcontent=" + content + //
440-
",\n\turi=" + uri + //
434+
",\n\turi=" + getUri() + //
441435
",\n\tkeepAlive=" + keepAlive + //
442436
",\n\thttpHeaders=" + httpHeaders + //
443437
",\n\texEx=" + exEx + //

providers/netty3/src/main/java/org/asynchttpclient/netty/handler/Protocol.java

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,6 @@
1515

1616
import static org.asynchttpclient.util.AsyncHttpProviderUtils.followRedirect;
1717
import static org.asynchttpclient.util.AsyncHttpProviderUtils.isSameHostAndProtocol;
18-
import static org.asynchttpclient.util.HttpUtils.HTTP;
19-
import static org.asynchttpclient.util.HttpUtils.WS;
2018
import static org.jboss.netty.handler.codec.http.HttpHeaders.Names.AUTHORIZATION;
2119
import static org.jboss.netty.handler.codec.http.HttpHeaders.Names.PROXY_AUTHORIZATION;
2220
import static org.jboss.netty.handler.codec.http.HttpResponseStatus.FOUND;
@@ -148,14 +146,9 @@ protected boolean exitAfterHandlingRedirect(//
148146

149147
HttpHeaders responseHeaders = response.headers();
150148
String location = responseHeaders.get(HttpHeaders.Names.LOCATION);
151-
Uri uri = Uri.create(future.getUri(), location);
152-
future.setUri(uri);
153-
String newUrl = uri.toUrl();
154-
if (request.getUri().getScheme().startsWith(WS)) {
155-
newUrl = newUrl.replaceFirst(HTTP, WS);
156-
}
149+
Uri newUri = Uri.create(future.getUri(), location);
157150

158-
logger.debug("Redirecting to {}", newUrl);
151+
logger.debug("Redirecting to {}", newUri);
159152

160153
for (String cookieStr : responseHeaders.getAll(HttpHeaders.Names.SET_COOKIE)) {
161154
Cookie c = CookieDecoder.decode(cookieStr);
@@ -165,13 +158,13 @@ protected boolean exitAfterHandlingRedirect(//
165158

166159
requestBuilder.setHeaders(propagatedHeaders(future.getRequest(), realm, switchToGet));
167160

168-
final Request nextRequest = requestBuilder.setUrl(newUrl).build();
161+
final Request nextRequest = requestBuilder.setUri(newUri).build();
169162

170-
logger.debug("Sending redirect to {}", request.getUri());
163+
logger.debug("Sending redirect to {}", newUri);
171164

172165
if (future.isKeepAlive() && !HttpHeaders.isTransferEncodingChunked(response) && !response.isChunked()) {
173166

174-
if (isSameHostAndProtocol(request.getUri(), nextRequest.getUri())) {
167+
if (isSameHostAndProtocol(request.getUri(), newUri)) {
175168
future.setReuseChannel(true);
176169
} else {
177170
channelManager.drainChannelAndOffer(channel, future, initialConnectionKeepAlive, initialPartitionKey);

providers/netty4/src/main/java/org/asynchttpclient/netty/NettyResponseFuture.java

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,6 @@ public enum STATE {
7878

7979
// state mutated only inside the event loop
8080
private Channel channel;
81-
private Uri uri;
8281
private boolean keepAlive = true;
8382
private Request request;
8483
private NettyRequest nettyRequest;
@@ -100,7 +99,6 @@ public NettyResponseFuture(Request request,//
10099
this.asyncHandler = asyncHandler;
101100
this.request = request;
102101
this.nettyRequest = nettyRequest;
103-
this.uri = request.getUri();
104102
this.connectionPoolPartitioning = connectionPoolPartitioning;
105103
this.proxyServer = proxyServer;
106104
this.maxRetry = maxRetry;
@@ -252,11 +250,7 @@ public void touch() {
252250
/*********************************************/
253251

254252
public Uri getUri() {
255-
return uri;
256-
}
257-
258-
public void setUri(Uri uri) {
259-
this.uri = uri;
253+
return request.getUri();
260254
}
261255

262256
public ConnectionPoolPartitioning getConnectionPoolPartitioning() {
@@ -417,15 +411,15 @@ public void setRequest(Request request) {
417411
*/
418412
public boolean canBeReplayed() {
419413
return !isDone() && canRetry()
420-
&& !(Channels.isChannelValid(channel) && !uri.getScheme().equalsIgnoreCase("https")) && !isInAuth();
414+
&& !(Channels.isChannelValid(channel) && !getUri().getScheme().equalsIgnoreCase("https")) && !isInAuth();
421415
}
422416

423417
public long getStart() {
424418
return start;
425419
}
426420

427421
public Object getPartitionKey() {
428-
return connectionPoolPartitioning.getPartitionKey(uri, proxyServer);
422+
return connectionPoolPartitioning.getPartitionKey(getUri(), proxyServer);
429423
}
430424

431425
@Override
@@ -437,7 +431,7 @@ public String toString() {
437431
",\n\tasyncHandler=" + asyncHandler + //
438432
",\n\tnettyRequest=" + nettyRequest + //
439433
",\n\tcontent=" + content + //
440-
",\n\turi=" + uri + //
434+
",\n\turi=" + getUri() + //
441435
",\n\tkeepAlive=" + keepAlive + //
442436
",\n\thttpHeaders=" + httpHeaders + //
443437
",\n\texEx=" + exEx + //

providers/netty4/src/main/java/org/asynchttpclient/netty/handler/Protocol.java

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,6 @@
1616
import static io.netty.handler.codec.http.HttpHeaders.Names.*;
1717
import static io.netty.handler.codec.http.HttpResponseStatus.*;
1818
import static org.asynchttpclient.util.AsyncHttpProviderUtils.*;
19-
import static org.asynchttpclient.util.HttpUtils.HTTP;
20-
import static org.asynchttpclient.util.HttpUtils.WS;
2119
import io.netty.channel.Channel;
2220
import io.netty.handler.codec.http.HttpHeaders;
2321
import io.netty.handler.codec.http.HttpResponse;
@@ -140,14 +138,9 @@ protected boolean exitAfterHandlingRedirect(//
140138

141139
HttpHeaders responseHeaders = response.headers();
142140
String location = responseHeaders.get(HttpHeaders.Names.LOCATION);
143-
Uri uri = Uri.create(future.getUri(), location);
144-
future.setUri(uri);
145-
String newUrl = uri.toUrl();
146-
if (request.getUri().getScheme().startsWith(WS)) {
147-
newUrl = newUrl.replaceFirst(HTTP, WS);
148-
}
141+
Uri newUri = Uri.create(future.getUri(), location);
149142

150-
logger.debug("Redirecting to {}", newUrl);
143+
logger.debug("Redirecting to {}", newUri);
151144

152145
for (String cookieStr : responseHeaders.getAll(HttpHeaders.Names.SET_COOKIE)) {
153146
Cookie c = CookieDecoder.decode(cookieStr);
@@ -157,16 +150,16 @@ protected boolean exitAfterHandlingRedirect(//
157150

158151
requestBuilder.setHeaders(propagatedHeaders(future.getRequest(), realm, switchToGet));
159152

160-
final Request nextRequest = requestBuilder.setUrl(newUrl).build();
153+
final Request nextRequest = requestBuilder.setUri(newUri).build();
161154

162-
logger.debug("Sending redirect to {}", request.getUri());
155+
logger.debug("Sending redirect to {}", newUri);
163156

164157
if (future.isKeepAlive() && !HttpHeaders.isTransferEncodingChunked(response)) {
165158

166-
if (isSameHostAndProtocol(request.getUri(), nextRequest.getUri())) {
159+
if (isSameHostAndProtocol(request.getUri(), newUri)) {
167160
future.setReuseChannel(true);
161+
// we can't directly send the next request because we still have to received LastContent
168162
requestSender.drainChannelAndExecuteNextRequest(channel, future, nextRequest);
169-
170163
} else {
171164
channelManager.drainChannelAndOffer(channel, future, initialConnectionKeepAlive, initialPartitionKey);
172165
requestSender.sendNextRequest(nextRequest, future);

0 commit comments

Comments
 (0)