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 09:12:18 GMT
By the way, Willem, if you have any specific preference on how such a 
single method would like then lets work on it, ping me here or IRC

I'm thinking of having the one or max two methods which can take an 
address, class, and the list of features. JAXRSClientFactory can not 
take all the variations really - one may want then to offer a support 
for accepting in or out or both in/out interceptors, etc - hope you see 
what I mean

Sergey

On 29/05/12 10:00, 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