You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by se...@apache.org on 2012/03/29 16:18:06 UTC
svn commit: r1306877 - in /cxf/trunk:
rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/
systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/
systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/failover/
Author: sergeyb
Date: Thu Mar 29 14:18:05 2012
New Revision: 1306877
URL: http://svn.apache.org/viewvc?rev=1306877&view=rev
Log:
[CXF-4154] Minor updates to JAX-RS AbstractClient and failover test
Modified:
cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/AbstractClient.java
cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/ClientProxyImpl.java
cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/WebClient.java
cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerBookTest.java
cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/failover/FailoverTest.java
Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/AbstractClient.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/AbstractClient.java?rev=1306877&r1=1306876&r2=1306877&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/AbstractClient.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/AbstractClient.java Thu Mar 29 14:18:05 2012
@@ -24,7 +24,6 @@ import java.lang.annotation.Annotation;
import java.lang.reflect.Type;
import java.net.HttpURLConnection;
import java.net.URI;
-import java.net.URISyntaxException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
@@ -460,21 +459,22 @@ public abstract class AbstractClient imp
return null;
}
- protected void completeExchange(Object response, Exchange exchange) {
+ protected void completeExchange(Object response, Exchange exchange, boolean proxy) {
// higher level conduits such as FailoverTargetSelector need to
// clear the request state but a fair number of response objects
// depend on InputStream being still open thus lower-level conduits
// operating on InputStream don't have to close streams pro-actively
exchange.put(KEEP_CONDUIT_ALIVE, true);
getConfiguration().getConduitSelector().complete(exchange);
- try {
- String s = (String)exchange.getOutMessage().get(Message.BASE_PATH);
- if (s != null) {
- state.setBaseURI(new URI(s));
- }
- } catch (URISyntaxException e) {
- //ignore
+ String s = (String)exchange.getOutMessage().get(Message.BASE_PATH);
+ if (s != null && !state.getBaseURI().toString().equals(s)) {
+ // usually the (failover) conduit change will result in a retry call
+ // which in turn will reset the base and current request URI.
+ // In some cases, such as the "upfront" load-balancing, etc, the retries
+ // won't be executed so it is necessary to reset the base address
+ calculateNewRequestURI(URI.create(s), getCurrentURI(), proxy);
}
+
}
protected Object[] preProcessResult(Message message) throws Exception {
Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/ClientProxyImpl.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/ClientProxyImpl.java?rev=1306877&r1=1306876&r2=1306877&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/ClientProxyImpl.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/ClientProxyImpl.java Thu Mar 29 14:18:05 2012
@@ -535,7 +535,7 @@ public class ClientProxyImpl extends Abs
response = ex;
throw ex;
} finally {
- completeExchange(response, outMessage.getExchange());
+ completeExchange(response, outMessage.getExchange(), true);
}
}
Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/WebClient.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/WebClient.java?rev=1306877&r1=1306876&r2=1306877&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/WebClient.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/WebClient.java Thu Mar 29 14:18:05 2012
@@ -770,7 +770,7 @@ public class WebClient extends AbstractC
entity = ex;
throw ex;
} finally {
- completeExchange(entity, m.getExchange());
+ completeExchange(entity, m.getExchange(), false);
}
}
Modified: cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerBookTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerBookTest.java?rev=1306877&r1=1306876&r2=1306877&view=diff
==============================================================================
--- cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerBookTest.java (original)
+++ cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerBookTest.java Thu Mar 29 14:18:05 2012
@@ -775,7 +775,8 @@ public class JAXRSClientServerBookTest e
HttpURLConnection urlConnection = (HttpURLConnection)url.openConnection();
urlConnection.setReadTimeout(30000); // 30 seconds tops
urlConnection.setConnectTimeout(30000); // 30 second tops
- urlConnection.addRequestProperty("Content-Type", "MissingSeparator");
+ urlConnection.addRequestProperty("Content-Type", "xxx/xxx");
+ urlConnection.addRequestProperty("Accept", "*/*");
urlConnection.setRequestMethod("POST");
assertEquals(415, urlConnection.getResponseCode());
}
Modified: cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/failover/FailoverTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/failover/FailoverTest.java?rev=1306877&r1=1306876&r2=1306877&view=diff
==============================================================================
--- cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/failover/FailoverTest.java (original)
+++ cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/failover/FailoverTest.java Thu Mar 29 14:18:05 2012
@@ -248,8 +248,8 @@ public class FailoverTest extends Abstra
}
for (int i = 0; i < 20; i++) {
- feature.getTargetSelector().close();
if (!singleProxy) {
+ feature.getTargetSelector().close();
bookStore = getBookStore(inactiveReplica, feature);
}
verifyStrategy(bookStore, expectRandom
@@ -344,7 +344,10 @@ public class FailoverTest extends Abstra
protected String getCurrentEndpointAddress(Object client) {
- return WebClient.client(client).getBaseURI().toString();
+ String currentBaseURI = WebClient.client(client).getBaseURI().toString();
+ String currentURI = WebClient.client(client).getCurrentURI().toString();
+ assertTrue(currentURI.startsWith(currentBaseURI));
+ return currentBaseURI;
}