You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by se...@apache.org on 2009/03/19 14:20:28 UTC
svn commit: r755987 - in /cxf/branches/2.1.x-fixes: ./
rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/
rt/databinding/jaxb/src/test/java/org/apache/cxf/jaxb/
rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/
rt/frontend/jaxrs/src/main/java/o...
Author: sergeyb
Date: Thu Mar 19 13:20:27 2009
New Revision: 755987
URL: http://svn.apache.org/viewvc?rev=755987&view=rev
Log:
Merged revisions 747390,747407 via svnmerge from
https://svn.apache.org/repos/asf/cxf/trunk
........
r747390 | sergeyb | 2009-02-24 14:17:23 +0000 (Tue, 24 Feb 2009) | 1 line
JAXRS: ProviderFactory cleanup, enhancing jaxrs:client
........
r747407 | sergeyb | 2009-02-24 15:46:30 +0000 (Tue, 24 Feb 2009) | 1 line
Fixing test failure
........
Modified:
cxf/branches/2.1.x-fixes/ (props changed)
cxf/branches/2.1.x-fixes/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/WrapperHelperCompiler.java (props changed)
cxf/branches/2.1.x-fixes/rt/databinding/jaxb/src/test/java/org/apache/cxf/jaxb/JAXBWrapperHelperTest.java (props changed)
cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/AbstractJAXRSFactoryBean.java
cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/JAXRSServerFactoryBean.java
cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/AbstractClient.java
cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/ClientProxyImpl.java
cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/JAXRSClientFactoryBean.java
cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/WebClient.java
cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ProviderFactory.java
cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/spring/JAXRSClientFactoryBeanDefinitionParser.java
cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/resources/schemas/jaxrs.xsd
cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/ProviderFactoryTest.java
cxf/branches/2.1.x-fixes/systests/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSMultipartTest.java
cxf/branches/2.1.x-fixes/systests/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSSoapBookTest.java
cxf/branches/2.1.x-fixes/systests/src/test/resources/jaxrs_soap_rest/WEB-INF/beans.xml
Propchange: cxf/branches/2.1.x-fixes/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Mar 19 13:20:27 2009
@@ -1 +1 @@
-/cxf/trunk:686333-686363,686764,686820,687096,687194,687363,687387,687463,687543,687722,687798,687814,687817,687891,687910,687914,688086,688102,688133,688596,688735,688870,689572,689596,689855,689924,690067,690289,691246,691271,691295,691338,691355,691488,691602,691646,691706,691728,692116,692157,692310,692466,692499,693653,693819,694179,694263,694417,694716,694744,694747,694795,694869,694981,694987,694993,695041,695096,695396,695484,695537,695552,695561,695619,695684,695835,695840,695868,695935,695977,696016,696094,696433,696720,697085,697868,698128,699289,700261,700507,700602,700981,701316,701783,701830,701862,702187,702205-702248,702267,702547,702561,702580,702602,702609,702616,702653,702656,702957,703191,703239,703309,703501,703513,703548,704584,704937,704997,705150,705235,705274,705340,705446,705548,705614,705692,705708,706482,706631,706675,706900,706909,707034,707089,707100,707902,708035,708044,708074,708410,708417,708550,708554,709353-709354,709425,710076,710150,71015
4,711193,711388,711410,711490,711635,711949,711975,712194,712198,712238,712272,712299,712312,712670,712893,713082,713095-713096,713099,713584,713597,713737,713804,713899,714167-714168,714245,714255,717937-717961,718281-718448,718565,718620,718640,718665,718970,719017,719210,719215-719218,719222-719273,719305,719327-719680,720053,720119-720218,720238,720293-720316,720497,721221,721241,721501,722117,722129,722412,722988,723024,723338,723378,723716-723791,724333-724372,724433-724438,724449,724481,724485,724668,724780,724782,724785,724793,724795,724940,725071,725316,725332,725335,725348,725364,725418,725425-725426,725455,725506,725554,725562,725651,725671,725688,725754,725773,725799,725839,726342,726524,726631,726634,726637,726639,726692,726724,726769,726992,727096,727445,727521,727568,727692,727754,727781,727792,728070,728087,728696,728897,729051,729430,729449,729460,729863,730082,730139,730889,730891,731598,731604,731615,731631,731635,732036,732050,732320,732363,732411,732450,
732710,732773,732827,732829,733512,733582,733901,734367,734462,734666,734762,734772,734812,734836,734965,735113,735252,735722-735723,735729,735734,735751,735782,735787,735987,736332,736343,736352,736358-736362,736408,736423,736448,736491,736621,736726,736736,736738-736739,736766,736825,736852,737032,737046,737061,737069,737124,737237,737246,737299,737356,737494,737498,737761,737817,737849,737855,737994,738166,738178,738201,738210,738242,738244,738265,738516,738583,738863,738937,738983,739366-739367,739451-739452,739799-739800,739867,739876-739877,739922,739937,739990,740045,740108,740154,740186,740197,740255,740706,740730,740810,740844,740886,740902,740923,740994,741058,741124,741152,741188,741521,741529,741879,742914,743087,743439,743441,743459,743469,743825,743965,743967,744104-744138,744175,744195,744237,744756,745214,745243,745472,745474,745560,745578,745586,745592,745638,745950,746012,746019-746020,746256,746266,746306,746357,746373-746374,746947,747026,747070,747217,74
7386,747406,747454,747649,747766,747986,748159,748192,748223,748305,748313,748603-748604,748768,749420,749449,749454-749456,749505,749511,749513,749584,749767,749771,749799,749890,750059-750060,750302,750591,750689,750935,751067-751110,751233,751527,751567,751576,751607,751732,751740,751787,751828,751840,751972-751974,752122,752132,752136,752558,752613,752680,752728,752753,752849,752880-752881,752883,752961,752992,753205,753293,753335,753338,753388,755153,755514,755806
+/cxf/trunk:686333-686363,686764,686820,687096,687194,687363,687387,687463,687543,687722,687798,687814,687817,687891,687910,687914,688086,688102,688133,688596,688735,688870,689572,689596,689855,689924,690067,690289,691246,691271,691295,691338,691355,691488,691602,691646,691706,691728,692116,692157,692310,692466,692499,693653,693819,694179,694263,694417,694716,694744,694747,694795,694869,694981,694987,694993,695041,695096,695396,695484,695537,695552,695561,695619,695684,695835,695840,695868,695935,695977,696016,696094,696433,696720,697085,697868,698128,699289,700261,700507,700602,700981,701316,701783,701830,701862,702187,702205-702248,702267,702547,702561,702580,702602,702609,702616,702653,702656,702957,703191,703239,703309,703501,703513,703548,704584,704937,704997,705150,705235,705274,705340,705446,705548,705614,705692,705708,706482,706631,706675,706900,706909,707034,707089,707100,707902,708035,708044,708074,708410,708417,708550,708554,709353-709354,709425,710076,710150,71015
4,711193,711388,711410,711490,711635,711949,711975,712194,712198,712238,712272,712299,712312,712670,712893,713082,713095-713096,713099,713584,713597,713737,713804,713899,714167-714168,714245,714255,717937-717961,718281-718448,718565,718620,718640,718665,718970,719017,719210,719215-719218,719222-719273,719305,719327-719680,720053,720119-720218,720238,720293-720316,720497,721221,721241,721501,722117,722129,722412,722988,723024,723338,723378,723716-723791,724333-724372,724433-724438,724449,724481,724485,724668,724780,724782,724785,724793,724795,724940,725071,725316,725332,725335,725348,725364,725418,725425-725426,725455,725506,725554,725562,725651,725671,725688,725754,725773,725799,725839,726342,726524,726631,726634,726637,726639,726692,726724,726769,726992,727096,727445,727521,727568,727692,727754,727781,727792,728070,728087,728696,728897,729051,729430,729449,729460,729863,730082,730139,730889,730891,731598,731604,731615,731631,731635,732036,732050,732320,732363,732411,732450,
732710,732773,732827,732829,733512,733582,733901,734367,734462,734666,734762,734772,734812,734836,734965,735113,735252,735722-735723,735729,735734,735751,735782,735787,735987,736332,736343,736352,736358-736362,736408,736423,736448,736491,736621,736726,736736,736738-736739,736766,736825,736852,737032,737046,737061,737069,737124,737237,737246,737299,737356,737494,737498,737761,737817,737849,737855,737994,738166,738178,738201,738210,738242,738244,738265,738516,738583,738863,738937,738983,739366-739367,739451-739452,739799-739800,739867,739876-739877,739922,739937,739990,740045,740108,740154,740186,740197,740255,740706,740730,740810,740844,740886,740902,740923,740994,741058,741124,741152,741188,741521,741529,741879,742914,743087,743439,743441,743459,743469,743825,743965,743967,744104-744138,744175,744195,744237,744756,745214,745243,745472,745474,745560,745578,745586,745592,745638,745950,746012,746019-746020,746256,746266,746306,746357,746373-746374,746947,747026,747070,747217,74
7386,747390,747406-747407,747454,747649,747766,747986,748159,748192,748223,748305,748313,748603-748604,748768,749420,749449,749454-749456,749505,749511,749513,749584,749767,749771,749799,749890,750059-750060,750302,750591,750689,750935,751067-751110,751233,751527,751567,751576,751607,751732,751740,751787,751828,751840,751972-751974,752122,752132,752136,752558,752613,752680,752728,752753,752849,752880-752881,752883,752961,752992,753205,753293,753335,753338,753388,755153,755514,755806
Propchange: cxf/branches/2.1.x-fixes/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.
Propchange: cxf/branches/2.1.x-fixes/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/WrapperHelperCompiler.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Mar 19 13:20:27 2009
@@ -1 +1 @@
-/cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/WrapperHelperCompiler.java:743825,744104-744138,745472,745474,746947,747026,747070,755514,755806
+/cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/WrapperHelperCompiler.java:743825,744104-744138,745472,745474,746947,747026,747070,747390,747407,755514,755806
Propchange: cxf/branches/2.1.x-fixes/rt/databinding/jaxb/src/test/java/org/apache/cxf/jaxb/JAXBWrapperHelperTest.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Mar 19 13:20:27 2009
@@ -1 +1 @@
-/cxf/trunk/rt/databinding/jaxb/src/test/java/org/apache/cxf/jaxb/JAXBWrapperHelperTest.java:743825,744104-744138,745472,745474,746947,747026,747070,755514,755806
+/cxf/trunk/rt/databinding/jaxb/src/test/java/org/apache/cxf/jaxb/JAXBWrapperHelperTest.java:743825,744104-744138,745472,745474,746947,747026,747070,747390,747407,755514,755806
Modified: cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/AbstractJAXRSFactoryBean.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/AbstractJAXRSFactoryBean.java?rev=755987&r1=755986&r2=755987&view=diff
==============================================================================
--- cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/AbstractJAXRSFactoryBean.java (original)
+++ cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/AbstractJAXRSFactoryBean.java Thu Mar 19 13:20:27 2009
@@ -18,6 +18,9 @@
*/
package org.apache.cxf.jaxrs;
+import java.util.Collections;
+import java.util.List;
+
import org.apache.cxf.BusException;
import org.apache.cxf.binding.BindingConfiguration;
import org.apache.cxf.binding.BindingFactory;
@@ -46,7 +49,9 @@
*/
public class AbstractJAXRSFactoryBean extends AbstractEndpointFactory {
+ protected List<String> schemaLocations;
protected JAXRSServiceFactoryBean serviceFactory;
+ protected List<?> entityProviders;
protected AbstractJAXRSFactoryBean() {
this(new JAXRSServiceFactoryBean());
@@ -159,5 +164,30 @@
return ep;
}
+ public void setSchemaLocation(String schema) {
+ setSchemaLocations(Collections.singletonList(schema));
+ }
+
+ public void setSchemaLocations(List<String> schemas) {
+ this.schemaLocations = schemas;
+ }
+
+ /**
+ * @return the entityProviders
+ */
+ public List<?> getProviders() {
+ return entityProviders;
+ }
+
+ /**
+ * @param entityProviders the entityProviders to set
+ */
+ public void setProviders(List<? extends Object> providers) {
+ this.entityProviders = providers;
+ }
+
+ public void setProvider(Object provider) {
+ setProviders(Collections.singletonList(provider));
+ }
}
Modified: cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/JAXRSServerFactoryBean.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/JAXRSServerFactoryBean.java?rev=755987&r1=755986&r2=755987&view=diff
==============================================================================
--- cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/JAXRSServerFactoryBean.java (original)
+++ cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/JAXRSServerFactoryBean.java Thu Mar 19 13:20:27 2009
@@ -66,10 +66,8 @@
private Invoker invoker;
private boolean start = true;
private List<Object> serviceBeans;
- private List<?> entityProviders;
private Map<Object, Object> languageMappings;
private Map<Object, Object> extensionMappings;
- private List<String> schemaLocations;
public JAXRSServerFactoryBean() {
this(new JAXRSServiceFactoryBean());
@@ -79,10 +77,6 @@
super(sf);
}
- public void setSchemaLocations(List<String> schemas) {
- this.schemaLocations = schemas;
- }
-
public void setStaticSubresourceResolution(boolean enableStatic) {
serviceFactory.setEnableStaticResolution(enableStatic);
}
@@ -112,15 +106,18 @@
} else {
ep.getService().setInvoker(invoker);
}
+
if (entityProviders != null) {
ProviderFactory.getInstance(getAddress()).setUserProviders(entityProviders);
}
- ProviderFactory.getInstance(getAddress()).setRequestPreprocessor(
- new RequestPreprocessor(languageMappings, extensionMappings));
if (schemaLocations != null) {
ProviderFactory.getInstance(getAddress()).setSchemaLocations(schemaLocations);
}
+ ProviderFactory.getInstance(getAddress()).setRequestPreprocessor(
+ new RequestPreprocessor(languageMappings, extensionMappings));
+
+
if (start) {
server.start();
}
@@ -160,14 +157,6 @@
extensionMappings = extMaps;
}
- public JAXRSServiceFactoryBean getServiceFactory() {
- return serviceFactory;
- }
-
- public void setServiceFactory(JAXRSServiceFactoryBean serviceFactory) {
- this.serviceFactory = serviceFactory;
- }
-
public List<Class> getResourceClasses() {
return serviceFactory.getResourceClasses();
}
@@ -199,20 +188,6 @@
resourceProviders.put(c, rp);
}
- /**
- * @return the entityProviders
- */
- public List<?> getProviders() {
- return entityProviders;
- }
-
- /**
- * @param entityProviders the entityProviders to set
- */
- public void setProviders(List<? extends Object> providers) {
- this.entityProviders = providers;
- }
-
public void setInvoker(Invoker invoker) {
this.invoker = invoker;
}
Modified: cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/AbstractClient.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/AbstractClient.java?rev=755987&r1=755986&r2=755987&view=diff
==============================================================================
--- cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/AbstractClient.java (original)
+++ cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/AbstractClient.java Thu Mar 19 13:20:27 2009
@@ -266,7 +266,7 @@
}
@SuppressWarnings("unchecked")
- protected static void writeBody(Object o, Class<?> cls, Type type, Annotation[] anns,
+ protected void writeBody(Object o, Message m, Class<?> cls, Type type, Annotation[] anns,
MultivaluedMap<String, String> headers, OutputStream os) {
if (o == null) {
@@ -275,11 +275,15 @@
MediaType contentType = MediaType.valueOf(headers.getFirst("Content-Type"));
- MessageBodyWriter mbr = ProviderFactory.getInstance().createMessageBodyWriter(
- cls, type, anns, contentType, new MessageImpl());
- if (mbr != null) {
+ MessageBodyWriter mbw = ProviderFactory.getInstance(baseURI.getPath()).createMessageBodyWriter(
+ cls, type, anns, contentType, m);
+ if (mbw == null) {
+ mbw = ProviderFactory.getInstance().createMessageBodyWriter(
+ cls, type, anns, contentType, m);
+ }
+ if (mbw != null) {
try {
- mbr.writeTo(o, cls, type, anns, contentType, headers, os);
+ mbw.writeTo(o, cls, type, anns, contentType, headers, os);
os.flush();
} catch (Exception ex) {
throw new WebApplicationException();
@@ -292,8 +296,8 @@
}
@SuppressWarnings("unchecked")
- protected static Object readBody(Response r, HttpURLConnection conn, Class<?> cls, Type type,
- Annotation[] anns) {
+ protected Object readBody(Response r, HttpURLConnection conn, Message inMessage,
+ Class<?> cls, Type type, Annotation[] anns) {
try {
int status = conn.getResponseCode();
@@ -306,8 +310,12 @@
MediaType contentType = getResponseContentType(r);
- MessageBodyReader mbr = ProviderFactory.getInstance().createMessageBodyReader(
- cls, type, anns, contentType, new MessageImpl());
+ MessageBodyReader mbr = ProviderFactory.getInstance(baseURI.getPath()).createMessageBodyReader(
+ cls, type, anns, contentType, inMessage);
+ if (mbr == null) {
+ ProviderFactory.getInstance().createMessageBodyReader(
+ cls, type, anns, contentType, inMessage);
+ }
if (mbr != null) {
try {
return mbr.readFrom(cls, type, anns, contentType, r.getMetadata(), conn.getInputStream());
@@ -384,6 +392,12 @@
return new PhaseChainCache().get(pm.getInPhases(), i1, i2, i3);
}
+ protected Message createSimpleMessage() {
+ Message m = new MessageImpl();
+ m.put(Message.PROTOCOL_HEADERS, getHeaders());
+ return m;
+ }
+
protected Message createMessage(String httpMethod,
MultivaluedMap<String, String> headers,
String address) {
Modified: cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/ClientProxyImpl.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/ClientProxyImpl.java?rev=755987&r1=755986&r2=755987&view=diff
==============================================================================
--- cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/ClientProxyImpl.java (original)
+++ cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/ClientProxyImpl.java Thu Mar 19 13:20:27 2009
@@ -164,20 +164,20 @@
return index;
}
- private static void checkResponse(Method m, Response r) throws Throwable {
+ private static void checkResponse(String basePath, Method m, Response r) throws Throwable {
int status = r.getStatus();
if (status >= 400) {
- ProviderFactory pf = ProviderFactory.getInstance();
- for (Class<?> exType : m.getExceptionTypes()) {
- ResponseExceptionMapper<?> mapper = pf.createResponseExceptionMapper(exType);
- if (mapper != null) {
- Throwable t = mapper.fromResponse(r);
- if (t != null) {
- throw t;
- }
+ ResponseExceptionMapper<?> mapper = findExceptionMapper(m, basePath);
+ if (mapper == null) {
+ mapper = findExceptionMapper(m, "/");
+ }
+ if (mapper != null) {
+ Throwable t = mapper.fromResponse(r);
+ if (t != null) {
+ throw t;
}
}
@@ -185,6 +185,16 @@
}
}
+ private static ResponseExceptionMapper<?> findExceptionMapper(Method m, String base) {
+ ProviderFactory pf = ProviderFactory.getInstance(base);
+ for (Class<?> exType : m.getExceptionTypes()) {
+ ResponseExceptionMapper<?> mapper = pf.createResponseExceptionMapper(exType);
+ if (mapper != null) {
+ return mapper;
+ }
+ }
+ return null;
+ }
private MultivaluedMap<String, String> setRequestHeaders(MultivaluedMap<String, String> headers,
OperationResourceInfo ori,
@@ -340,22 +350,24 @@
// TODO : we need to refactor bits of HTTPConduit such that it can be reused
+ Message message = createSimpleMessage();
+
HttpURLConnection connect = createHttpConnection(uri, ori.getHttpMethod());
setAllHeaders(headers, connect);
Method m = ori.getMethodToInvoke();
if (bodyIndex != -1 || types.containsKey(ParameterType.FORM)) {
if (bodyIndex != -1) {
- writeBody(params[bodyIndex], params[bodyIndex].getClass(),
+ writeBody(params[bodyIndex], message, params[bodyIndex].getClass(),
m.getGenericParameterTypes()[bodyIndex],
m.getParameterAnnotations()[bodyIndex], headers, connect.getOutputStream());
} else {
MultivaluedMap<String, String> form = handleForm(types, params);
- writeBody(form, form.getClass(), form.getClass(), m.getDeclaredAnnotations(),
+ writeBody(form, message, form.getClass(), form.getClass(), m.getDeclaredAnnotations(),
headers, connect.getOutputStream());
}
}
- return handleResponse(connect, ori);
+ return handleResponse(connect, message, ori);
}
@@ -363,7 +375,7 @@
OperationResourceInfo ori, Object[] params, int bodyIndex,
MultivaluedMap<ParameterType, Parameter> types) throws Throwable {
Message m = createMessage(ori.getHttpMethod(), headers, uri.toString());
-
+
if (bodyIndex != -1 || types.containsKey(ParameterType.FORM)) {
m.setContent(OperationResourceInfo.class, ori);
m.put("BODY_INDEX", bodyIndex);
@@ -382,21 +394,20 @@
// TODO : this needs to be done in an inbound chain instead
HttpURLConnection connect = (HttpURLConnection)m.get(HTTPConduit.KEY_HTTP_CONNECTION);
-
- return handleResponse(connect, ori);
+ return handleResponse(connect, m, ori);
}
- protected Object handleResponse(HttpURLConnection connect, OperationResourceInfo ori)
+ protected Object handleResponse(HttpURLConnection connect, Message inMessage, OperationResourceInfo ori)
throws Throwable {
Response r = setResponseBuilder(connect).clone().build();
Method method = ori.getMethodToInvoke();
- checkResponse(method, r);
+ checkResponse(getBaseURI().getPath(), method, r);
if (method.getReturnType() == Void.class) {
return null;
}
- return readBody(r, connect, method.getReturnType(),
+ return readBody(r, connect, inMessage, method.getReturnType(),
method.getGenericReturnType(), method.getDeclaredAnnotations());
}
@@ -459,12 +470,12 @@
Object body = objs.get(0);
try {
if (bodyIndex != -1) {
- writeBody(body, body.getClass(),
+ writeBody(body, m, body.getClass(),
method.getGenericParameterTypes()[bodyIndex],
method.getParameterAnnotations()[bodyIndex], headers, os);
} else {
- writeBody(body, body.getClass(), body.getClass(), method.getDeclaredAnnotations(),
- headers, os);
+ writeBody(body, m, body.getClass(), body.getClass(),
+ method.getDeclaredAnnotations(), headers, os);
}
os.flush();
} catch (Exception ex) {
Modified: cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/JAXRSClientFactoryBean.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/JAXRSClientFactoryBean.java?rev=755987&r1=755986&r2=755987&view=diff
==============================================================================
--- cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/JAXRSClientFactoryBean.java (original)
+++ cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/JAXRSClientFactoryBean.java Thu Mar 19 13:20:27 2009
@@ -20,8 +20,10 @@
import java.net.URI;
import java.util.List;
+import java.util.Map;
import javax.ws.rs.WebApplicationException;
+import javax.ws.rs.core.MultivaluedMap;
import org.apache.cxf.common.util.ProxyHelper;
import org.apache.cxf.endpoint.ConduitSelector;
@@ -30,12 +32,15 @@
import org.apache.cxf.jaxrs.AbstractJAXRSFactoryBean;
import org.apache.cxf.jaxrs.JAXRSServiceFactoryBean;
import org.apache.cxf.jaxrs.JAXRSServiceImpl;
+import org.apache.cxf.jaxrs.impl.MetadataMap;
import org.apache.cxf.jaxrs.model.ClassResourceInfo;
+import org.apache.cxf.jaxrs.provider.ProviderFactory;
import org.apache.cxf.service.Service;
public class JAXRSClientFactoryBean extends AbstractJAXRSFactoryBean {
private boolean inheritHeaders;
+ private MultivaluedMap<String, String> headers;
public JAXRSClientFactoryBean() {
this(new JAXRSServiceFactoryBean());
@@ -59,6 +64,18 @@
serviceFactory.setResourceClass(cls);
}
+ public void setHeaders(Map<String, String> map) {
+ headers = new MetadataMap<String, String>();
+ for (Map.Entry<String, String> entry : map.entrySet()) {
+ String[] values = entry.getValue().split(",");
+ for (String v : values) {
+ if (v.length() != 0) {
+ headers.add(entry.getKey(), v);
+ }
+ }
+ }
+ }
+
public WebClient createWebClient() {
Service service = new JAXRSServiceImpl(getAddress());
@@ -67,10 +84,7 @@
try {
Endpoint ep = createEndpoint();
WebClient client = new WebClient(getAddress());
- client.setConduitSelector(getConduitSelector(ep));
- client.setBus(getBus());
- client.setOutInterceptors(getOutInterceptors());
- client.setInInterceptors(getInInterceptors());
+ initClient(client, ep);
return client;
} catch (Exception ex) {
@@ -82,8 +96,6 @@
return cls.cast(create());
}
-
-
public Client create() {
List<ClassResourceInfo> list = serviceFactory.getClassResourceInfo();
if (list.isEmpty()) {
@@ -96,10 +108,7 @@
ClassResourceInfo cri = list.get(0);
ClientProxyImpl proxyImpl = new ClientProxyImpl(baseURI, baseURI, cri, inheritHeaders);
- proxyImpl.setConduitSelector(getConduitSelector(ep));
- proxyImpl.setBus(getBus());
- proxyImpl.setOutInterceptors(getOutInterceptors());
- proxyImpl.setInInterceptors(getInInterceptors());
+ initClient(proxyImpl, ep);
return (Client)ProxyHelper.getProxy(cri.getServiceClass().getClassLoader(),
new Class[]{cri.getServiceClass(), Client.class},
@@ -118,4 +127,19 @@
return cs;
}
+ protected void initClient(AbstractClient client, Endpoint ep) {
+ client.setConduitSelector(getConduitSelector(ep));
+ client.setBus(getBus());
+ client.setOutInterceptors(getOutInterceptors());
+ client.setInInterceptors(getInInterceptors());
+ if (headers != null) {
+ client.headers(headers);
+ }
+ if (entityProviders != null) {
+ ProviderFactory.getInstance().setUserProviders(entityProviders);
+ }
+ if (schemaLocations != null) {
+ ProviderFactory.getInstance().setSchemaLocations(schemaLocations);
+ }
+ }
}
Modified: cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/WebClient.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/WebClient.java?rev=755987&r1=755986&r2=755987&view=diff
==============================================================================
--- cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/WebClient.java (original)
+++ cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/WebClient.java Thu Mar 19 13:20:27 2009
@@ -272,15 +272,16 @@
HttpURLConnection conn = getConnection(httpMethod);
setAllHeaders(headers, conn);
+ Message message = createSimpleMessage();
if (body != null) {
try {
- writeBody(body, body.getClass(), body.getClass(),
+ writeBody(body, message, body.getClass(), body.getClass(),
new Annotation[]{}, headers, conn.getOutputStream());
} catch (IOException ex) {
throw new WebApplicationException(ex);
}
}
- return handleResponse(conn, responseClass);
+ return handleResponse(conn, message, responseClass);
}
protected Response doChainedInvocation(String httpMethod,
@@ -302,14 +303,14 @@
// TODO : this needs to be done in an inbound chain instead
HttpURLConnection connect = (HttpURLConnection)m.get(HTTPConduit.KEY_HTTP_CONNECTION);
- return handleResponse(connect, responseClass);
+ return handleResponse(connect, m, responseClass);
}
- protected Response handleResponse(HttpURLConnection conn, Class<?> responseClass) {
+ protected Response handleResponse(HttpURLConnection conn, Message m, Class<?> responseClass) {
try {
ResponseBuilder rb = setResponseBuilder(conn).clone();
Response currentResponse = rb.clone().build();
- Object entity = readBody(currentResponse, conn, responseClass, responseClass,
+ Object entity = readBody(currentResponse, conn, m, responseClass, responseClass,
new Annotation[]{});
rb.entity(entity);
@@ -347,7 +348,7 @@
MultivaluedMap<String, String> headers = (MultivaluedMap)m.get(Message.PROTOCOL_HEADERS);
Object body = objs.get(0);
try {
- writeBody(body, body.getClass(), body.getClass(), new Annotation[]{}, headers, os);
+ writeBody(body, m, body.getClass(), body.getClass(), new Annotation[]{}, headers, os);
os.flush();
} catch (Exception ex) {
throw new Fault(ex);
Modified: cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ProviderFactory.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ProviderFactory.java?rev=755987&r1=755986&r2=755987&view=diff
==============================================================================
--- cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ProviderFactory.java (original)
+++ cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ProviderFactory.java Thu Mar 19 13:20:27 2009
@@ -53,57 +53,41 @@
private static final Map<String, ProviderFactory> FACTORIES =
new HashMap<String, ProviderFactory>();
+ private static final ProviderFactory SHARED_FACTORY = new ProviderFactory();
private static final ProviderFactory DEFAULT_FACTORY = new ProviderFactory();
private static final String SLASH = "/";
- private List<ProviderInfo<MessageBodyReader>> defaultMessageReaders =
+ static {
+ SHARED_FACTORY.setProviders(new JAXBElementProvider(),
+ new JSONProvider(),
+ new BinaryDataProvider(),
+ new SourceProvider(),
+ new FormEncodingProvider(),
+ new PrimitiveTextProvider(),
+ new ActivationProvider(),
+ new WebApplicationExceptionMapper(),
+ new MappingsHandler());
+ }
+
+ private List<ProviderInfo<MessageBodyReader>> messageReaders =
new ArrayList<ProviderInfo<MessageBodyReader>>();
- private List<ProviderInfo<MessageBodyWriter>> defaultMessageWriters =
+ private List<ProviderInfo<MessageBodyWriter>> messageWriters =
new ArrayList<ProviderInfo<MessageBodyWriter>>();
- private List<ProviderInfo<MessageBodyReader>> userMessageReaders =
- new ArrayList<ProviderInfo<MessageBodyReader>>(1);
- private List<ProviderInfo<MessageBodyWriter>> userMessageWriters =
- new ArrayList<ProviderInfo<MessageBodyWriter>>(1);
- private List<ProviderInfo<ContextResolver>> userContextResolvers =
+ private List<ProviderInfo<ContextResolver>> contextResolvers =
new ArrayList<ProviderInfo<ContextResolver>>(1);
- private List<ProviderInfo<ExceptionMapper>> defaultExceptionMappers =
- new ArrayList<ProviderInfo<ExceptionMapper>>(1);
- private List<ProviderInfo<ExceptionMapper>> userExceptionMappers =
+ private List<ProviderInfo<ExceptionMapper>> exceptionMappers =
new ArrayList<ProviderInfo<ExceptionMapper>>(1);
private List<ProviderInfo<RequestHandler>> requestHandlers =
new ArrayList<ProviderInfo<RequestHandler>>(1);
private List<ProviderInfo<ResponseHandler>> responseHandlers =
new ArrayList<ProviderInfo<ResponseHandler>>(1);
- private List<ProviderInfo<ParameterHandler>> jaxrsParamHandlers =
+ private List<ProviderInfo<ParameterHandler>> paramHandlers =
new ArrayList<ProviderInfo<ParameterHandler>>(1);
- private List<ProviderInfo<ResponseExceptionMapper>> userResponseExceptionMappers =
+ private List<ProviderInfo<ResponseExceptionMapper>> responseExceptionMappers =
new ArrayList<ProviderInfo<ResponseExceptionMapper>>(1);
private RequestPreprocessor requestPreprocessor;
private ProviderFactory() {
- // TODO : this needs to be done differently,
- // we need to use cxf-jaxrs-extensions
-
- // TODO : make sure the default providers are shared between multiple
- // factories
-
- setProviders(defaultMessageReaders,
- defaultMessageWriters,
- userContextResolvers,
- requestHandlers,
- responseHandlers,
- defaultExceptionMappers,
- jaxrsParamHandlers,
- userResponseExceptionMappers,
- new JAXBElementProvider(),
- new JSONProvider(),
- new BinaryDataProvider(),
- new SourceProvider(),
- new FormEncodingProvider(),
- new PrimitiveTextProvider(),
- new ActivationProvider(),
- new WebApplicationExceptionMapper(),
- new MappingsHandler());
}
public static ProviderFactory getInstance() {
@@ -126,9 +110,22 @@
return pf;
}
+ public static ProviderFactory getSharedInstance() {
+ return SHARED_FACTORY;
+ }
+
+ public <T> ContextResolver<T> createContextResolver(Type contextType,
+ Message m) {
+ Object mt = m.get(Message.CONTENT_TYPE);
+ return createContextResolver(contextType, m,
+ mt == null ? MediaType.valueOf("*/*") : MediaType.valueOf(mt.toString()));
+
+ }
+
@SuppressWarnings("unchecked")
- public <T> ContextResolver<T> createContextResolver(Type contextType, Message m) {
- for (ProviderInfo<ContextResolver> cr : userContextResolvers) {
+ public <T> ContextResolver<T> createContextResolver(Type contextType, Message m,
+ MediaType mt) {
+ for (ProviderInfo<ContextResolver> cr : contextResolvers) {
Type[] types = cr.getProvider().getClass().getGenericInterfaces();
for (Type t : types) {
if (t instanceof ParameterizedType) {
@@ -148,27 +145,24 @@
return null;
}
- public <T> ExceptionMapper<T> createExceptionMapper(Class<?> exceptionType, Message m) {
+ public <T> ExceptionMapper<T> createExceptionMapper(Class<?> exceptionType,
+ Message m) {
- ExceptionMapper<T> mapper = doCreateExceptionMapper(userExceptionMappers,
- exceptionType,
- m);
- if (mapper != null) {
+ ExceptionMapper<T> mapper = doCreateExceptionMapper(exceptionType, m);
+ if (mapper != null || this == SHARED_FACTORY) {
return mapper;
}
- return doCreateExceptionMapper(defaultExceptionMappers,
- exceptionType,
- m);
+ return SHARED_FACTORY.createExceptionMapper(exceptionType, m);
}
@SuppressWarnings("unchecked")
- private static <T> ExceptionMapper<T> doCreateExceptionMapper(
- List<ProviderInfo<ExceptionMapper>> mappers, Class<?> exceptionType, Message m) {
+ private <T> ExceptionMapper<T> doCreateExceptionMapper(
+ Class<?> exceptionType, Message m) {
List<ExceptionMapper<T>> candidates = new LinkedList<ExceptionMapper<T>>();
- for (ProviderInfo<ExceptionMapper> em : mappers) {
+ for (ProviderInfo<ExceptionMapper> em : exceptionMappers) {
handleMapper((List)candidates, em, exceptionType, m);
}
if (candidates.size() == 0) {
@@ -183,7 +177,7 @@
List<ParameterHandler<T>> candidates = new LinkedList<ParameterHandler<T>>();
- for (ProviderInfo<ParameterHandler> em : jaxrsParamHandlers) {
+ for (ProviderInfo<ParameterHandler> em : paramHandlers) {
handleMapper((List)candidates, em, paramType, null);
}
if (candidates.size() == 0) {
@@ -199,7 +193,7 @@
List<ResponseExceptionMapper<T>> candidates = new LinkedList<ResponseExceptionMapper<T>>();
- for (ProviderInfo<ResponseExceptionMapper> em : userResponseExceptionMappers) {
+ for (ProviderInfo<ResponseExceptionMapper> em : responseExceptionMappers) {
handleMapper((List)candidates, em, paramType, null);
}
if (candidates.size() == 0) {
@@ -237,31 +231,31 @@
MediaType mediaType,
Message m) {
// Try user provided providers
- MessageBodyReader<T> mr = chooseMessageReader(userMessageReaders,
- bodyType,
+ MessageBodyReader<T> mr = chooseMessageReader(bodyType,
parameterType,
parameterAnnotations,
mediaType,
m);
//If none found try the default ones
- if (mr == null) {
- mr = chooseMessageReader(defaultMessageReaders,
- bodyType,
- parameterType,
- parameterAnnotations,
- mediaType,
- m);
- }
-
- return mr;
+ if (mr != null || this == SHARED_FACTORY) {
+ return mr;
+ }
+ return SHARED_FACTORY.createMessageBodyReader(bodyType, parameterType,
+ parameterAnnotations, mediaType, m);
}
public List<ProviderInfo<RequestHandler>> getRequestHandlers() {
-
- return Collections.unmodifiableList(requestHandlers);
+ if (requestHandlers.size() == 0) {
+ return Collections.unmodifiableList(SHARED_FACTORY.requestHandlers);
+ } else {
+ List<ProviderInfo<RequestHandler>> handlers =
+ new ArrayList<ProviderInfo<RequestHandler>>(SHARED_FACTORY.requestHandlers);
+ handlers.addAll(requestHandlers);
+ return handlers;
+ }
}
public List<ProviderInfo<ResponseHandler>> getResponseHandlers() {
@@ -275,64 +269,50 @@
MediaType mediaType,
Message m) {
// Try user provided providers
- MessageBodyWriter<T> mw = chooseMessageWriter(userMessageWriters,
- bodyType,
+ MessageBodyWriter<T> mw = chooseMessageWriter(bodyType,
parameterType,
parameterAnnotations,
mediaType,
m);
//If none found try the default ones
- if (mw == null) {
- mw = chooseMessageWriter(defaultMessageWriters,
- bodyType,
- parameterType,
- parameterAnnotations,
- mediaType,
- m);
- }
-
- return mw;
+ if (mw != null || this == SHARED_FACTORY) {
+ return mw;
+ }
+ return SHARED_FACTORY.createMessageBodyWriter(bodyType, parameterType,
+ parameterAnnotations, mediaType, m);
}
//CHECKSTYLE:OFF
- private void setProviders(List<ProviderInfo<MessageBodyReader>> readers,
- List<ProviderInfo<MessageBodyWriter>> writers,
- List<ProviderInfo<ContextResolver>> resolvers,
- List<ProviderInfo<RequestHandler>> requestFilters,
- List<ProviderInfo<ResponseHandler>> responseFilters,
- List<ProviderInfo<ExceptionMapper>> excMappers,
- List<ProviderInfo<ParameterHandler>> paramHandlers,
- List<ProviderInfo<ResponseExceptionMapper>> responseExcMappers,
- Object... providers) {
+ private void setProviders(Object... providers) {
for (Object o : providers) {
if (MessageBodyReader.class.isAssignableFrom(o.getClass())) {
- readers.add(new ProviderInfo<MessageBodyReader>((MessageBodyReader)o));
+ messageReaders.add(new ProviderInfo<MessageBodyReader>((MessageBodyReader)o));
}
if (MessageBodyWriter.class.isAssignableFrom(o.getClass())) {
- writers.add(new ProviderInfo<MessageBodyWriter>((MessageBodyWriter)o));
+ messageWriters.add(new ProviderInfo<MessageBodyWriter>((MessageBodyWriter)o));
}
if (ContextResolver.class.isAssignableFrom(o.getClass())) {
- resolvers.add(new ProviderInfo<ContextResolver>((ContextResolver)o));
+ contextResolvers.add(new ProviderInfo<ContextResolver>((ContextResolver)o));
}
if (RequestHandler.class.isAssignableFrom(o.getClass())) {
- requestFilters.add(new ProviderInfo<RequestHandler>((RequestHandler)o));
+ requestHandlers.add(new ProviderInfo<RequestHandler>((RequestHandler)o));
}
if (ResponseHandler.class.isAssignableFrom(o.getClass())) {
- responseFilters.add(new ProviderInfo<ResponseHandler>((ResponseHandler)o));
+ responseHandlers.add(new ProviderInfo<ResponseHandler>((ResponseHandler)o));
}
if (ExceptionMapper.class.isAssignableFrom(o.getClass())) {
- excMappers.add(new ProviderInfo<ExceptionMapper>((ExceptionMapper)o));
+ exceptionMappers.add(new ProviderInfo<ExceptionMapper>((ExceptionMapper)o));
}
if (ResponseExceptionMapper.class.isAssignableFrom(o.getClass())) {
- responseExcMappers.add(new ProviderInfo<ResponseExceptionMapper>((ResponseExceptionMapper)o));
+ responseExceptionMappers.add(new ProviderInfo<ResponseExceptionMapper>((ResponseExceptionMapper)o));
}
if (ParameterHandler.class.isAssignableFrom(o.getClass())) {
@@ -340,10 +320,11 @@
}
}
- sortReaders(readers);
- sortWriters(writers);
+ sortReaders();
+ sortWriters();
- injectContexts(readers, writers, resolvers, requestFilters, responseFilters, excMappers);
+ injectContexts(messageReaders, messageWriters, contextResolvers, requestHandlers, responseHandlers,
+ exceptionMappers);
}
//CHECKSTYLE:ON
@@ -363,12 +344,12 @@
* provider that lists *. Quality parameter values are also used such that
* x/y;q=1.0 < x/y;q=0.7.
*/
- private void sortReaders(List<ProviderInfo<MessageBodyReader>> entityProviders) {
- Collections.sort(entityProviders, new MessageBodyReaderComparator());
+ private void sortReaders() {
+ Collections.sort(messageReaders, new MessageBodyReaderComparator());
}
- private void sortWriters(List<ProviderInfo<MessageBodyWriter>> entityProviders) {
- Collections.sort(entityProviders, new MessageBodyWriterComparator());
+ private void sortWriters() {
+ Collections.sort(messageWriters, new MessageBodyWriterComparator());
}
@@ -384,14 +365,12 @@
* @return
*/
@SuppressWarnings("unchecked")
- private <T> MessageBodyReader<T> chooseMessageReader(
- List<ProviderInfo<MessageBodyReader>> readers,
- Class<T> type,
+ private <T> MessageBodyReader<T> chooseMessageReader(Class<T> type,
Type genericType,
Annotation[] annotations,
MediaType mediaType,
Message m) {
- for (ProviderInfo<MessageBodyReader> ep : readers) {
+ for (ProviderInfo<MessageBodyReader> ep : messageReaders) {
InjectionUtils.injectContextFields(ep.getProvider(), ep, m);
InjectionUtils.injectContextMethods(ep.getProvider(), ep, m);
if (matchesReaderCriterias(ep.getProvider(), type, genericType, annotations, mediaType)) {
@@ -432,14 +411,12 @@
* @return
*/
@SuppressWarnings("unchecked")
- private <T> MessageBodyWriter<T> chooseMessageWriter(
- List<ProviderInfo<MessageBodyWriter>> writers,
- Class<T> type,
+ private <T> MessageBodyWriter<T> chooseMessageWriter(Class<T> type,
Type genericType,
Annotation[] annotations,
MediaType mediaType,
Message m) {
- for (ProviderInfo<MessageBodyWriter> ep : writers) {
+ for (ProviderInfo<MessageBodyWriter> ep : messageWriters) {
InjectionUtils.injectContextFields(ep.getProvider(), ep, m);
InjectionUtils.injectContextMethods(ep.getProvider(), ep, m);
if (matchesWriterCriterias(ep.getProvider(), type, genericType, annotations, mediaType)) {
@@ -470,24 +447,16 @@
}
- List<ProviderInfo<MessageBodyReader>> getDefaultMessageReaders() {
- return Collections.unmodifiableList(defaultMessageReaders);
+ List<ProviderInfo<MessageBodyReader>> getMessageReaders() {
+ return Collections.unmodifiableList(messageReaders);
}
- List<ProviderInfo<MessageBodyWriter>> getDefaultMessageWriters() {
- return Collections.unmodifiableList(defaultMessageWriters);
- }
-
- List<ProviderInfo<MessageBodyReader>> getUserMessageReaders() {
- return Collections.unmodifiableList(userMessageReaders);
- }
-
- List<ProviderInfo<MessageBodyWriter>> getUserMessageWriters() {
- return Collections.unmodifiableList(userMessageWriters);
+ List<ProviderInfo<MessageBodyWriter>> getMessageWriters() {
+ return Collections.unmodifiableList(messageWriters);
}
- List<ProviderInfo<ContextResolver>> getUserContextResolvers() {
- return Collections.unmodifiableList(userContextResolvers);
+ List<ProviderInfo<ContextResolver>> getContextResolvers() {
+ return Collections.unmodifiableList(contextResolvers);
}
@@ -499,15 +468,7 @@
* @param entityProviders the entityProviders to set
*/
public void setUserProviders(List<?> userProviders) {
- setProviders(userMessageReaders,
- userMessageWriters,
- userContextResolvers,
- requestHandlers,
- responseHandlers,
- userExceptionMappers,
- jaxrsParamHandlers,
- userResponseExceptionMappers,
- userProviders.toArray());
+ setProviders(userProviders.toArray());
}
private static class MessageBodyReaderComparator
@@ -554,14 +515,12 @@
}
public void clearThreadLocalProxies() {
- clearProxies(defaultMessageReaders,
- defaultMessageWriters,
- userMessageReaders,
- userMessageWriters,
- userContextResolvers,
+ clearProxies(messageReaders,
+ messageWriters,
+ contextResolvers,
requestHandlers,
responseHandlers,
- userExceptionMappers);
+ exceptionMappers);
}
void clearProxies(List<?> ...lists) {
@@ -574,23 +533,18 @@
}
void clearProviders() {
- userMessageReaders.clear();
- userMessageWriters.clear();
- userContextResolvers.clear();
- userExceptionMappers.clear();
+ messageReaders.clear();
+ messageWriters.clear();
+ contextResolvers.clear();
+ exceptionMappers.clear();
requestHandlers.clear();
responseHandlers.clear();
- jaxrsParamHandlers.clear();
+ paramHandlers.clear();
+ responseExceptionMappers.clear();
}
public void setSchemaLocations(List<String> schemas) {
- setSchemasOnProviders(userMessageReaders, schemas);
- setSchemasOnProviders(defaultMessageReaders, schemas);
- }
-
- private void setSchemasOnProviders(List<ProviderInfo<MessageBodyReader>> providers,
- List<String> schemas) {
- for (ProviderInfo<MessageBodyReader> r : providers) {
+ for (ProviderInfo<MessageBodyReader> r : messageReaders) {
try {
Method m = r.getProvider().getClass().getMethod("setSchemas",
new Class[]{List.class});
Modified: cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/spring/JAXRSClientFactoryBeanDefinitionParser.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/spring/JAXRSClientFactoryBeanDefinitionParser.java?rev=755987&r1=755986&r2=755987&view=diff
==============================================================================
--- cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/spring/JAXRSClientFactoryBeanDefinitionParser.java (original)
+++ cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/spring/JAXRSClientFactoryBeanDefinitionParser.java Thu Mar 19 13:20:27 2009
@@ -66,7 +66,7 @@
@Override
protected void mapElement(ParserContext ctx, BeanDefinitionBuilder bean, Element el, String name) {
- if ("properties".equals(name)) {
+ if ("properties".equals(name) || "headers".equals(name)) {
Map map = ctx.getDelegate().parseMapElement(el, bean.getBeanDefinition());
bean.addPropertyValue(name, map);
} else if ("executor".equals(name)) {
@@ -79,7 +79,8 @@
|| "outInterceptors".equals(name) || "outFaultInterceptors".equals(name)) {
List list = ctx.getDelegate().parseListElement(el, bean.getBeanDefinition());
bean.addPropertyValue(name, list);
- } else if ("features".equals(name) || "providers".equals(name)) {
+ } else if ("features".equals(name) || "providers".equals(name)
+ || "schemaLocations".equals(name)) {
List list = ctx.getDelegate().parseListElement(el, bean.getBeanDefinition());
bean.addPropertyValue(name, list);
} else {
Modified: cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/resources/schemas/jaxrs.xsd
URL: http://svn.apache.org/viewvc/cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/resources/schemas/jaxrs.xsd?rev=755987&r1=755986&r2=755987&view=diff
==============================================================================
--- cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/resources/schemas/jaxrs.xsd (original)
+++ cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/resources/schemas/jaxrs.xsd Thu Mar 19 13:20:27 2009
@@ -70,7 +70,6 @@
<xsd:complexContent>
<xsd:extension base="beans:identifiedType">
<xsd:all>
- <xsd:element name="binding" type="xsd:anyType" minOccurs="0"/>
<xsd:element name="executor" type="xsd:anyType" minOccurs="0"/>
<xsd:element name="features" type="xsd:anyType" minOccurs="0"/>
<xsd:element name="inInterceptors" type="xsd:anyType" minOccurs="0"/>
@@ -80,10 +79,13 @@
<xsd:element name="outFaultInterceptors" type="xsd:anyType" minOccurs="0"/>
<xsd:element name="properties" type="beans:mapType" minOccurs="0"/>
<xsd:element name="providers" type="xsd:anyType" minOccurs="0"/>
+ <xsd:element name="headers" type="xsd:anyType" minOccurs="0"/>
+ <xsd:element name="schemaLocations" type="schemasType" minOccurs="0"/>
</xsd:all>
<xsd:attributeGroup ref="cxf-beans:beanAttributes"/>
<xsd:attribute name="address" type="xsd:string" />
<xsd:attribute name="serviceClass" type="xsd:string"/>
+ <xsd:attribute name="inheritHeaders" type="xsd:boolean"/>
<xsd:attribute name="bus" type="xsd:string" />
</xsd:extension>
</xsd:complexContent>
Modified: cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/ProviderFactoryTest.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/ProviderFactoryTest.java?rev=755987&r1=755986&r2=755987&view=diff
==============================================================================
--- cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/ProviderFactoryTest.java (original)
+++ cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/ProviderFactoryTest.java Thu Mar 19 13:20:27 2009
@@ -123,12 +123,12 @@
pf.registerUserProvider(new TestStringProvider());
pf.registerUserProvider(new PrimitiveTextProvider());
- List<ProviderInfo<MessageBodyReader>> readers = pf.getUserMessageReaders();
+ List<ProviderInfo<MessageBodyReader>> readers = pf.getMessageReaders();
assertTrue(indexOf(readers, TestStringProvider.class)
< indexOf(readers, PrimitiveTextProvider.class));
- List<ProviderInfo<MessageBodyWriter>> writers = pf.getUserMessageWriters();
+ List<ProviderInfo<MessageBodyWriter>> writers = pf.getMessageWriters();
assertTrue(indexOf(writers, TestStringProvider.class)
< indexOf(writers, PrimitiveTextProvider.class));
@@ -156,12 +156,12 @@
json2.setProduceMediaTypes(Collections.singletonList("application/sbc"));
pf.registerUserProvider(json2);
- List<ProviderInfo<MessageBodyReader>> readers = pf.getUserMessageReaders();
+ List<ProviderInfo<MessageBodyReader>> readers = pf.getMessageReaders();
assertTrue(indexOf(readers, json2)
< indexOf(readers, json1));
- List<ProviderInfo<MessageBodyWriter>> writers = pf.getUserMessageWriters();
+ List<ProviderInfo<MessageBodyWriter>> writers = pf.getMessageWriters();
assertTrue(indexOf(writers, json1)
< indexOf(writers, json2));
@@ -244,7 +244,7 @@
public void testRegisterCustomResolver() throws Exception {
ProviderFactory pf = ProviderFactory.getInstance();
pf.registerUserProvider(new JAXBContextProvider());
- ContextResolver<JAXBContext> cr = pf.createContextResolver(JAXBContext.class, null);
+ ContextResolver<JAXBContext> cr = pf.createContextResolver(JAXBContext.class, new MessageImpl());
assertTrue("JAXBContext ContextProvider can not be found",
cr instanceof JAXBContextProvider);
Modified: cxf/branches/2.1.x-fixes/systests/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSMultipartTest.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.1.x-fixes/systests/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSMultipartTest.java?rev=755987&r1=755986&r2=755987&view=diff
==============================================================================
--- cxf/branches/2.1.x-fixes/systests/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSMultipartTest.java (original)
+++ cxf/branches/2.1.x-fixes/systests/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSMultipartTest.java Thu Mar 19 13:20:27 2009
@@ -37,7 +37,7 @@
@BeforeClass
public static void startServers() throws Exception {
assertTrue("server did not launch correctly",
- launchServer(MultipartServer.class));
+ launchServer(MultipartServer.class, true));
}
@Test
Modified: cxf/branches/2.1.x-fixes/systests/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSSoapBookTest.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.1.x-fixes/systests/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSSoapBookTest.java?rev=755987&r1=755986&r2=755987&view=diff
==============================================================================
--- cxf/branches/2.1.x-fixes/systests/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSSoapBookTest.java (original)
+++ cxf/branches/2.1.x-fixes/systests/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSSoapBookTest.java Thu Mar 19 13:20:27 2009
@@ -57,7 +57,7 @@
@BeforeClass
public static void startServers() throws Exception {
assertTrue("server did not launch correctly",
- launchServer(BookServerRestSoap.class));
+ launchServer(BookServerRestSoap.class, true));
}
@Test
Modified: cxf/branches/2.1.x-fixes/systests/src/test/resources/jaxrs_soap_rest/WEB-INF/beans.xml
URL: http://svn.apache.org/viewvc/cxf/branches/2.1.x-fixes/systests/src/test/resources/jaxrs_soap_rest/WEB-INF/beans.xml?rev=755987&r1=755986&r2=755987&view=diff
==============================================================================
--- cxf/branches/2.1.x-fixes/systests/src/test/resources/jaxrs_soap_rest/WEB-INF/beans.xml (original)
+++ cxf/branches/2.1.x-fixes/systests/src/test/resources/jaxrs_soap_rest/WEB-INF/beans.xml Thu Mar 19 13:20:27 2009
@@ -37,7 +37,12 @@
<jaxrs:client id="restClient"
address="http://localhost:9092/test/services/rest"
- serviceClass="org.apache.cxf.systest.jaxrs.BookStoreJaxrsJaxws"/>
+ serviceClass="org.apache.cxf.systest.jaxrs.BookStoreJaxrsJaxws"
+ inheritHeaders="true">
+ <jaxrs:headers>
+ <entry key="Accept" value="text/xml"/>
+ </jaxrs:headers>
+ </jaxrs:client>
<bean id="bookstore" class="org.apache.cxf.systest.jaxrs.BookStoreSoapRestImpl"/>