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 2017/03/15 16:54:31 UTC
cxf git commit: [CXF-7277] Making it a bit easier to auto reset the
thread local client state
Repository: cxf
Updated Branches:
refs/heads/master 08acb2e98 -> 8c6401b76
[CXF-7277] Making it a bit easier to auto reset the thread local client state
Project: http://git-wip-us.apache.org/repos/asf/cxf/repo
Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/8c6401b7
Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/8c6401b7
Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/8c6401b7
Branch: refs/heads/master
Commit: 8c6401b76ca76010e7e169656fd2f5fae6f3245a
Parents: 08acb2e
Author: Sergey Beryozkin <sb...@gmail.com>
Authored: Wed Mar 15 16:54:13 2017 +0000
Committer: Sergey Beryozkin <sb...@gmail.com>
Committed: Wed Mar 15 16:54:13 2017 +0000
----------------------------------------------------------------------
.../java/org/apache/cxf/jaxrs/client/AbstractClient.java | 7 +++++++
.../org/apache/cxf/jaxrs/client/ClientConfiguration.java | 10 +++++++++-
.../java/org/apache/cxf/jaxrs/client/ClientProxyImpl.java | 7 +++++--
.../main/java/org/apache/cxf/jaxrs/client/WebClient.java | 10 ++++++++--
4 files changed, 29 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cxf/blob/8c6401b7/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/AbstractClient.java
----------------------------------------------------------------------
diff --git a/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/AbstractClient.java b/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/AbstractClient.java
index 4a82349..27c1b31 100644
--- a/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/AbstractClient.java
+++ b/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/AbstractClient.java
@@ -1137,6 +1137,13 @@ public abstract class AbstractClient implements Client {
return respClass;
}
+ protected void resetResponseStateImmediatelyIfNeeded() {
+ if (state instanceof ThreadLocalClientState
+ && cfg.isResetThreadLocalStateImmediately()) {
+ state.reset();
+ }
+ }
+
protected abstract class AbstractBodyWriter extends AbstractOutDatabindingInterceptor {
public AbstractBodyWriter() {
http://git-wip-us.apache.org/repos/asf/cxf/blob/8c6401b7/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/ClientConfiguration.java
----------------------------------------------------------------------
diff --git a/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/ClientConfiguration.java b/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/ClientConfiguration.java
index 6d3c817..3067da3 100644
--- a/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/ClientConfiguration.java
+++ b/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/ClientConfiguration.java
@@ -60,8 +60,9 @@ public class ClientConfiguration implements InterceptorProvider, ConduitSelector
private Bus bus;
private Map<String, Object> requestContext = new HashMap<>();
private Map<String, Object> responseContext = new HashMap<>();
- private long synchronousTimeout = 60000;
+ private long synchronousTimeout = 60000;;
private boolean shutdownBusOnClose;
+ private boolean resetThreadLocalStateImmediately;
public long getSynchronousTimeout() {
Conduit conduit = getConduit();
@@ -245,4 +246,11 @@ public class ClientConfiguration implements InterceptorProvider, ConduitSelector
public void setShutdownBusOnClose(boolean shutdownBusOnClose) {
this.shutdownBusOnClose = shutdownBusOnClose;
}
+
+ public boolean isResetThreadLocalStateImmediately() {
+ return resetThreadLocalStateImmediately;
+ }
+ public void setResetThreadLocalStateImmediately(boolean reset) {
+ resetThreadLocalStateImmediately = reset;
+ }
}
http://git-wip-us.apache.org/repos/asf/cxf/blob/8c6401b7/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/ClientProxyImpl.java
----------------------------------------------------------------------
diff --git a/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/ClientProxyImpl.java b/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/ClientProxyImpl.java
index 36368b2..99bf10b 100644
--- a/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/ClientProxyImpl.java
+++ b/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/ClientProxyImpl.java
@@ -231,8 +231,11 @@ public class ClientProxyImpl extends AbstractClient implements
setRequestHeaders(headers, ori, types.containsKey(ParameterType.FORM),
body == null ? null : body.getClass(), m.getReturnType());
-
- return doChainedInvocation(uri, headers, ori, params, body, bodyIndex, null, null);
+ try {
+ return doChainedInvocation(uri, headers, ori, params, body, bodyIndex, null, null);
+ } finally {
+ resetResponseStateImmediatelyIfNeeded();
+ }
}
http://git-wip-us.apache.org/repos/asf/cxf/blob/8c6401b7/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/WebClient.java
----------------------------------------------------------------------
diff --git a/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/WebClient.java b/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/WebClient.java
index 0ed51e9..8b5e063 100644
--- a/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/WebClient.java
+++ b/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/WebClient.java
@@ -894,8 +894,14 @@ public class WebClient extends AbstractClient implements AsyncClient {
}
MultivaluedMap<String, String> headers = prepareHeaders(responseClass, body);
resetResponse();
- Response r = doChainedInvocation(httpMethod, headers, body, requestClass, inGenericType,
- inAnns, responseClass, outGenericType, null, null);
+ Response r = null;
+ try {
+ r = doChainedInvocation(httpMethod, headers, body, requestClass, inGenericType,
+ inAnns, responseClass, outGenericType, null, null);
+ } finally {
+ resetResponseStateImmediatelyIfNeeded();
+ }
+
if (r.getStatus() >= 300 && responseClass != Response.class) {
throw convertToWebApplicationException(r);
}