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