cxf-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Willem Jiang <willem.ji...@gmail.com>
Subject Re: svn commit: r1343446
Date Tue, 29 May 2012 13:07:11 GMT
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.


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);
>>
>>
>>
>
>


-- 
Willem
----------------------------------
CamelOne 2012 Conference, May 15-16, 2012: http://camelone.com
FuseSource
Web: http://www.fusesource.com
Blog:    http://willemjiang.blogspot.com (English)
          http://jnn.javaeye.com (Chinese)
Twitter: willemjiang
Weibo: willemjiang

Mime
View raw message