cxf-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Sergey Beryozkin <sberyoz...@gmail.com>
Subject Re: svn commit: r1343446
Date Tue, 29 May 2012 13:11:32 GMT
On 29/05/12 14:07, Willem Jiang wrote:
> Hi Sergey,
>
> JAXRSClientFactory provides the static method to create the proxy or the
> client. I didn't find a better way to apply the features to all these
> method by just changing a single method.
>
> If you have a better idea, please share it with me.
>
> BTW, I just found my commit introduced a stall over follow issue, I will
> commit a patch to fix the build right way.
>
I already fixed it

As I said, JAXRSClientFactoryBean can always be used.
Having a single utility method should be enough,

Sergey

>
> On 5/29/12 5:00 PM, Sergey Beryozkin wrote:
>> Hi Willem
>>
>> I'd really prefer us discussing updates like this one to the public
>> client API that the CXF JAX-RS runtime offers.
>>
>> I can see you just added 5 or so new JAXRSClientFactory methods.
>> I consider most of them redundant. JAXRSClientFactory is a *utility*
>> factory and is already a bit overloaded without these new extra 5
>> methods added.
>>
>> JAXRSClientFactoryBean is always there to offer a more custom approach
>> toward creating a proxy and I would like to revert most of the methods
>> you added.
>>
>> I agree it may make sense to offer say a single utility method for
>> accepting the features, but I'd not like to have 5+ variations, the API
>> will become too 'noisy'. Besides the same would then need to be added to
>> WebClient factory methods...
>>
>> I'll take care of updating the api
>>
>> Thanks, Sergey
>>
>>
>> On 29/05/12 02:39, ningjiang@apache.org wrote:
>>> Author: ningjiang
>>> Date: Tue May 29 01:39:02 2012
>>> New Revision: 1343446
>>>
>>> URL: http://svn.apache.org/viewvc?rev=1343446&view=rev
>>> Log:
>>> CXF-4345 Allow user-secified feautres for JAXRSClientFactory
>>>
>>> Modified:
>>> cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/JAXRSClientFactory.java
>>>
>>>
>>>
>>> Modified:
>>> cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/JAXRSClientFactory.java
>>>
>>>
>>> URL:
>>> http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/JAXRSClientFactory.java?rev=1343446&r1=1343445&r2=1343446&view=diff
>>>
>>>
>>> ==============================================================================
>>>
>>>
>>> ---
>>> cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/JAXRSClientFactory.java
>>>
>>> (original)
>>> +++
>>> cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/JAXRSClientFactory.java
>>>
>>> Tue May 29 01:39:02 2012
>>> @@ -26,6 +26,7 @@ import java.util.List;
>>> import javax.ws.rs.core.MultivaluedMap;
>>>
>>> import org.apache.cxf.common.util.ProxyHelper;
>>> +import org.apache.cxf.feature.AbstractFeature;
>>> import org.apache.cxf.jaxrs.model.UserResource;
>>>
>>> /**
>>> @@ -56,7 +57,20 @@ public final class JAXRSClientFactory {
>>> * @return typed proxy
>>> */
>>> public static<T> T create(String baseAddress, Class<T> cls,
>>> ClassLoader loader) {
>>> +
>>> + return create(baseAddress, cls, loader, null);
>>> + }
>>> +
>>> + /**
>>> + * Creates a proxy using a custom class loader
>>> + * @param baseAddress baseAddress
>>> + * @param loader class loader
>>> + * @param cls resource class, if not interface then a CGLIB proxy
>>> will be created
>>> + * @return typed proxy
>>> + */
>>> + public static<T> T create(String baseAddress, Class<T> cls,
>>> ClassLoader loader, List<AbstractFeature> features) {
>>> JAXRSClientFactoryBean bean = getBean(baseAddress, cls, null);
>>> + bean.setFeatures(features);
>>> bean.setClassLoader(loader);
>>> return bean.create(cls);
>>> }
>>> @@ -80,18 +94,30 @@ public final class JAXRSClientFactory {
>>> * @return typed proxy
>>> */
>>> public static<T> T create(URI baseURI, Class<T> cls, boolean
>>> inheritHeaders) {
>>> -
>>> + return create(baseURI, cls, inheritHeaders, null);
>>> + }
>>> +
>>> + /**
>>> + * Creates a proxy
>>> + * @param baseURI baseURI
>>> + * @param cls resource class, if not interface then a CGLIB proxy
>>> will be created
>>> + * @param inheritHeaders if true then existing proxy headers will be
>>> inherited by
>>> + * subresource proxies if any
>>> + * @param features, the features which will be applied to the client
>>> + * @return typed proxy
>>> + */
>>> + public static<T> T create(URI baseURI, Class<T> cls, boolean
>>> inheritHeaders, List<AbstractFeature> features) {
>>> JAXRSClientFactoryBean bean = getBean(baseURI.toString(), cls, null);
>>> bean.setInheritHeaders(inheritHeaders);
>>> + bean.setFeatures(features);
>>> return bean.create(cls);
>>> -
>>> }
>>>
>>> /**
>>> * Creates a proxy
>>> * @param baseAddress baseAddress
>>> * @param cls resource class, if not interface then a CGLIB proxy will
>>> be created
>>> - * @param config classpath location of Spring configuration resource
>>> + * @param configLocation classpath location of Spring configuration
>>> resource
>>> * @return typed proxy
>>> */
>>> public static<T> T create(String baseAddress, Class<T> cls, String
>>> configLocation) {
>>> @@ -103,9 +129,42 @@ public final class JAXRSClientFactory {
>>> * Creates a proxy
>>> * @param baseAddress baseAddress
>>> * @param cls resource class, if not interface then a CGLIB proxy will
>>> be created
>>> + * @param configLocation classpath location of Spring configuration
>>> resource
>>> + * @param features, the features which will be applied to the client
>>> + * @return typed proxy
>>> + */
>>> + public static<T> T create(String baseAddress, Class<T> cls, String
>>> configLocation,
>>> + List<AbstractFeature> features) {
>>> + JAXRSClientFactoryBean bean = getBean(baseAddress, cls,
>>> configLocation);
>>> + bean.setFeatures(features);
>>> + return bean.create(cls);
>>> + }
>>> +
>>> + /**
>>> + * Creates a proxy
>>> + * @param baseAddress baseAddress
>>> + * @param cls resource class, if not interface then a CGLIB proxy
>>> will be created
>>> + * This class is expected to have a root JAXRS Path annotation
>>> containing
>>> + * template variables, for ex, "/path/{id1}/{id2}"
>>> + * @param configLocation classpath location of Spring configuration
>>> resource
>>> + * @param features, the features which will be applied to the client
>>> + * @param varValues values to replace root Path template variables
>>> + * @return typed proxy
>>> + */
>>> + public static<T> T create(String baseAddress, Class<T> cls, String
>>> configLocation,
>>> + List<AbstractFeature> features, Object... varValues) {
>>> + JAXRSClientFactoryBean bean = getBean(baseAddress, cls,
>>> configLocation);
>>> + bean.setFeatures(features);
>>> + return bean.create(cls, varValues);
>>> + }
>>> +
>>> + /**
>>> + * Creates a proxy
>>> + * @param baseAddress baseAddress
>>> + * @param cls resource class, if not interface then a CGLIB proxy
>>> will be created
>>> * This class is expected to have a root JAXRS Path annotation containing
>>> * template variables, for ex, "/path/{id1}/{id2}"
>>> - * @param config classpath location of Spring configuration resource
>>> + * @param configLocation classpath location of Spring configuration
>>> resource
>>> * @param varValues values to replace root Path template variables
>>> * @return typed proxy
>>> */
>>> @@ -136,11 +195,26 @@ public final class JAXRSClientFactory {
>>> * @return typed proxy
>>> */
>>> public static<T> T create(String baseAddress, Class<T> cls, List<?>
>>> providers, boolean threadSafe) {
>>> + return create(baseAddress, cls, providers, threadSafe, null);
>>> + }
>>> +
>>> + /**
>>> + * Creates a thread safe proxy
>>> + * @param baseAddress baseAddress
>>> + * @param cls proxy class, if not interface then a CGLIB proxy will
>>> be created
>>> + * @param providers list of providers
>>> + * @param threadSafe if true then a thread-safe proxy will be created
>>> + * @param features, the features which will be applied to the client
>>> + * @return typed proxy
>>> + */
>>> + public static<T> T create(String baseAddress, Class<T> cls, List<?>
>>> providers, boolean threadSafe,
>>> + List<AbstractFeature> features) {
>>> JAXRSClientFactoryBean bean = getBean(baseAddress, cls, null);
>>> bean.setProviders(providers);
>>> if (threadSafe) {
>>> bean.setInitialState(new ThreadLocalClientState(baseAddress));
>>> }
>>> + bean.setFeatures(features);
>>> return bean.create(cls);
>>> }
>>>
>>> @@ -149,12 +223,27 @@ public final class JAXRSClientFactory {
>>> * @param baseAddress baseAddress
>>> * @param cls proxy class, if not interface then a CGLIB proxy will be
>>> created
>>> * @param providers list of providers
>>> - * @param config classpath location of Spring configuration resource
>>> + * @param configLocation classpath location of Spring configuration
>>> resource
>>> * @return typed proxy
>>> */
>>> public static<T> T create(String baseAddress, Class<T> cls, List<?>
>>> providers, String configLocation) {
>>> + return create(baseAddress, cls, providers, configLocation);
>>> + }
>>> +
>>> + /**
>>> + * Creates a proxy
>>> + * @param baseAddress baseAddress
>>> + * @param cls proxy class, if not interface then a CGLIB proxy will
>>> be created
>>> + * @param providers list of providers
>>> + * @param configLocation classpath location of Spring configuration
>>> resource
>>> + * @param features, the features which will be applied to the client
>>> + * @return typed proxy
>>> + */
>>> + public static<T> T create(String baseAddress, Class<T> cls, List<?>
>>> providers, String configLocation,
>>> + List<AbstractFeature> features) {
>>> JAXRSClientFactoryBean bean = getBean(baseAddress, cls, configLocation);
>>> bean.setProviders(providers);
>>> + bean.setFeatures(features);
>>> return bean.create(cls);
>>> }
>>>
>>> @@ -164,14 +253,30 @@ public final class JAXRSClientFactory {
>>> * @param cls proxy class, if not interface then a CGLIB proxy will be
>>> created
>>> * @param username username
>>> * @param password password
>>> - * @param config classpath location of Spring configuration resource
>>> + * @param configLocation classpath location of Spring configuration
>>> resource
>>> * @return typed proxy
>>> */
>>> public static<T> T create(String baseAddress, Class<T> cls, String
>>> username,
>>> String password, String configLocation) {
>>> + return create(baseAddress, cls, username, password, configLocation);
>>> + }
>>> +
>>> + /**
>>> + * Creates a proxy which will do basic authentication
>>> + * @param baseAddress baseAddress
>>> + * @param cls proxy class, if not interface then a CGLIB proxy will
>>> be created
>>> + * @param username username
>>> + * @param password password
>>> + * @param configLocation classpath location of Spring configuration
>>> resource
>>> + * @param features, the features which will be applied to the client
>>> + * @return typed proxy
>>> + */
>>> + public static<T> T create(String baseAddress, Class<T> cls, String
>>> username,
>>> + String password, String configLocation, List<AbstractFeature>
>>> features) {
>>> JAXRSClientFactoryBean bean = getBean(baseAddress, cls, configLocation);
>>> bean.setUsername(username);
>>> bean.setPassword(password);
>>> + bean.setFeatures(features);
>>> return bean.create(cls);
>>> }
>>>
>>> @@ -193,14 +298,31 @@ public final class JAXRSClientFactory {
>>> * @param cls proxy class, if not interface then a CGLIB proxy will be
>>> created
>>> * @param modelRef model location
>>> * @param providers list of providers
>>> + * @param configLocation classpath location of Spring configuration
>>> resource
>>> * @return typed proxy
>>> */
>>> public static<T> T createFromModel(String baseAddress, Class<T> cls,
>>> String modelRef,
>>> List<?> providers, String configLocation) {
>>> + return createFromModel(baseAddress, cls, modelRef, providers,
>>> configLocation, null);
>>> + }
>>> +
>>> + /**
>>> + * Creates a proxy using user resource model
>>> + * @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 configLocation classpath location of Spring configuration
>>> resource
>>> + * @param features, the features which will be applied to the client
>>> + * @return typed proxy
>>> + */
>>> + public static<T> T createFromModel(String baseAddress, Class<T>
cls,
>>> String modelRef,
>>> + List<?> providers, String configLocation, List<AbstractFeature>
>>> features) {
>>> JAXRSClientFactoryBean bean = WebClient.getBean(baseAddress,
>>> configLocation);
>>> bean.setProviders(providers);
>>> bean.setModelRef(modelRef);
>>> bean.setServiceClass(cls);
>>> + bean.setFeatures(features);
>>> return bean.create(cls);
>>> }
>>>
>>> @@ -215,6 +337,20 @@ public final class JAXRSClientFactory {
>>> */
>>> public static<T> T createFromModel(String baseAddress, Class<T> cls,
>>> String modelRef,
>>> List<?> providers, boolean threadSafe) {
>>> + return createFromModel(baseAddress, cls, modelRef, providers,
>>> threadSafe, null);
>>> + }
>>> +
>>> + /**
>>> + * Creates a thread safe proxy using user resource model
>>> + * @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 threadSafe if true then thread-safe proxy will be created
>>> + * @return typed proxy
>>> + */
>>> + public static<T> T createFromModel(String baseAddress, Class<T>
cls,
>>> String modelRef,
>>> + List<?> providers, boolean threadSafe, List<AbstractFeature>
>>> features) {
>>> JAXRSClientFactoryBean bean = WebClient.getBean(baseAddress, null);
>>> bean.setProviders(providers);
>>> bean.setModelRef(modelRef);
>>> @@ -222,6 +358,7 @@ public final class JAXRSClientFactory {
>>> if (threadSafe) {
>>> bean.setInitialState(new ThreadLocalClientState(baseAddress));
>>> }
>>> + bean.setFeatures(features);
>>> return bean.create(cls);
>>> }
>>>
>>> @@ -230,6 +367,7 @@ public final class JAXRSClientFactory {
>>> * @param baseAddress baseAddress
>>> * @param cls proxy class, if not interface then a CGLIB proxy will be
>>> created
>>> * @param modelBeans model beans
>>> + * @param configLocation classpath location of Spring configuration
>>> resource
>>> * @return typed proxy
>>> */
>>> public static<T> T createFromModel(String baseAddress, Class<T> cls,
>>> List<UserResource> modelBeans,
>>> @@ -243,15 +381,32 @@ public final class JAXRSClientFactory {
>>> * @param cls proxy class, if not interface then a CGLIB proxy will be
>>> created
>>> * @param modelBeans model beans
>>> * @param providers list of providers
>>> + * @param configLocation classpath location of Spring configuration
>>> resource
>>> * @return typed proxy
>>> */
>>> public static<T> T createFromModel(String baseAddress, Class<T> cls,
>>> List<UserResource> modelBeans,
>>> List<?> providers, String configLocation) {
>>> + return createFromModel(baseAddress, cls, modelBeans, providers,
>>> configLocation);
>>> + }
>>> +
>>> + /**
>>> + * Creates a proxy using user resource model
>>> + * @param baseAddress baseAddress
>>> + * @param cls proxy class, if not interface then a CGLIB proxy will
>>> be created
>>> + * @param modelBeans model beans
>>> + * @param providers list of providers
>>> + * @param configLocation classpath location of Spring configuration
>>> resource
>>> + * @param features, the features which will be applied to the client
>>> + * @return typed proxy
>>> + */
>>> + public static<T> T createFromModel(String baseAddress, Class<T>
cls,
>>> List<UserResource> modelBeans,
>>> + List<?> providers, String configLocation, List<AbstractFeature>
>>> features) {
>>> JAXRSClientFactoryBean bean = WebClient.getBean(baseAddress,
>>> configLocation);
>>>
>>> bean.setProviders(providers);
>>> bean.setModelBeans(modelBeans);
>>> bean.setServiceClass(cls);
>>> + bean.setFeatures(features);
>>> return bean.create(cls);
>>> }
>>>
>>> @@ -275,8 +430,23 @@ public final class JAXRSClientFactory {
>>> * @return typed proxy
>>> */
>>> public static<T> T fromClient(Client client, Class<T> cls, boolean
>>> inheritHeaders) {
>>> + return fromClient(client, cls, inheritHeaders, null);
>>> + }
>>> +
>>> + /**
>>> + * Creates a proxy, baseURI will be set to Client currentURI
>>> + * @param client Client instance
>>> + * @param cls proxy class, if not interface then a CGLIB proxy will
>>> be created
>>> + * @param inheritHeaders if true then existing Client headers will be
>>> inherited by new proxy
>>> + * and subresource proxies if any
>>> + * @param features, the features which will be applied to the client
>>> + * @return typed proxy
>>> + */
>>> + public static<T> T fromClient(Client client, Class<T> cls, boolean
>>> inheritHeaders,
>>> + List<AbstractFeature> features) {
>>> JAXRSClientFactoryBean bean =
>>> getBean(client.getCurrentURI().toString(), cls, null);
>>> bean.setInheritHeaders(inheritHeaders);
>>> + bean.setFeatures(features);
>>>
>>> ClientState clientState = WebClient.getClientState(client);
>>>
>>>
>>>
>>
>>
>
>


-- 
Sergey Beryozkin

Talend Community Coders
http://coders.talend.com/

Blog: http://sberyozkin.blogspot.com

Mime
View raw message