Repository: cxf Updated Branches: refs/heads/2.7.x-fixes 76c8ab51e -> 56fe9fa38
[CXF-5621] Adding JAXRS client factory methods allowing to control the time the thread local proxy keeps the state, patch from Parwiz Rezai applied Project: http://git-wip-us.apache.org/repos/asf/cxf/repo Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/56fe9fa3 Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/56fe9fa3 Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/56fe9fa3 Branch: refs/heads/2.7.x-fixes Commit: 56fe9fa38b541314882a31d842fd9a329d37dd1e Parents: 76c8ab5 Author: Sergey Beryozkin <[email protected]> Authored: Tue Mar 18 21:32:37 2014 +0000 Committer: Sergey Beryozkin <[email protected]> Committed: Tue Mar 18 21:44:32 2014 +0000 ---------------------------------------------------------------------- .../cxf/jaxrs/client/JAXRSClientFactory.java | 35 ++++++++++++++++++++ .../org/apache/cxf/jaxrs/client/WebClient.java | 13 ++++++++ 2 files changed, 48 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cxf/blob/56fe9fa3/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/JAXRSClientFactory.java ---------------------------------------------------------------------- diff --git a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/JAXRSClientFactory.java b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/JAXRSClientFactory.java index 975d9c5..a510bd5 100644 --- a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/JAXRSClientFactory.java +++ b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/JAXRSClientFactory.java @@ -144,6 +144,21 @@ public final class JAXRSClientFactory { } /** + * Creates a thread safe proxy and allows to specify time to keep state. + * @param baseAddress baseAddress + * @param cls proxy class, if not interface then a CGLIB proxy will be created + * @param providers list of providers + * @param timeToKeepState how long to keep this state + * @return typed proxy + */ + public static <T> T create(String baseAddress, Class<T> cls, List<?> providers, long timeToKeepState) { + JAXRSClientFactoryBean bean = getBean(baseAddress, cls, null); + bean.setProviders(providers); + bean.setInitialState(new ThreadLocalClientState(baseAddress, timeToKeepState)); + return bean.create(cls); + } + + /** * Creates a proxy * @param baseAddress baseAddress * @param cls proxy class, if not interface then a CGLIB proxy will be created @@ -263,6 +278,26 @@ public final class JAXRSClientFactory { } /** + * Creates a thread safe proxy using user resource model and allows to + * specify time to keep state. + * @param baseAddress baseAddress + * @param cls proxy class, if not interface then a CGLIB proxy will be created + * @param modelRef model location + * @param providers list of providers + * @param timeToKeepState how long to keep this state + * @return typed proxy + */ + public static <T> T createFromModel(String baseAddress, Class<T> cls, String modelRef, + List<?> providers, long timeToKeepState) { + JAXRSClientFactoryBean bean = WebClient.getBean(baseAddress, null); + bean.setProviders(providers); + bean.setModelRef(modelRef); + bean.setServiceClass(cls); + bean.setInitialState(new ThreadLocalClientState(baseAddress, timeToKeepState)); + return bean.create(cls); + } + + /** * Creates a proxy using user resource model * @param baseAddress baseAddress * @param cls proxy class, if not interface then a CGLIB proxy will be created http://git-wip-us.apache.org/repos/asf/cxf/blob/56fe9fa3/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/WebClient.java ---------------------------------------------------------------------- diff --git a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/WebClient.java b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/WebClient.java index 224af56..da20bbf 100644 --- a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/WebClient.java +++ b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/WebClient.java @@ -149,6 +149,19 @@ public class WebClient extends AbstractClient { } /** + * Creates a thread safe WebClient + * @param baseURI baseURI + * @param providers list of providers + * @param timeToKeepState time to keep this thread safe state. + */ + public static WebClient create(String baseAddress, List<?> providers, long timeToKeepState) { + JAXRSClientFactoryBean bean = getBean(baseAddress, null); + bean.setProviders(providers); + bean.setInitialState(new ThreadLocalClientState(baseAddress, timeToKeepState)); + return bean.createWebClient(); + } + + /** * Creates WebClient * @param baseAddress baseAddress * @param providers list of providers
