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/18 16:41:16 UTC
svn commit: r755619 - 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/client/
rt/frontend/jaxrs/src/main...
Author: sergeyb
Date: Wed Mar 18 15:41:14 2009
New Revision: 755619
URL: http://svn.apache.org/viewvc?rev=755619&view=rev
Log:
Merged revisions 743825 via svnmerge from
https://svn.apache.org/repos/asf/cxf/trunk
........
r743825 | sergeyb | 2009-02-12 18:26:07 +0000 (Thu, 12 Feb 2009) | 1 line
JAXRS : prototyping client api - many more things to come
........
Added:
cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/
- copied from r743825, cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/
cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/AbstractClient.java
- copied, changed from r743825, cxf/trunk/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/Client.java
- copied unchanged from r743825, cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/Client.java
cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/ClientProxyImpl.java
- copied, changed from r743825, cxf/trunk/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/JAXRSClientFactory.java
- copied unchanged from r743825, cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/JAXRSClientFactory.java
cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/ResponseExceptionMapper.java
- copied unchanged from r743825, cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/ResponseExceptionMapper.java
cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/WebClient.java
- copied, changed from r743825, cxf/trunk/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/ext/form/
- copied from r743825, cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/form/
cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/form/Form.java
- copied unchanged from r743825, cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/ext/form/Form.java
cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/FormEncodingProvider.java
- copied, changed from r743825, cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/FormEncodingProvider.java
cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/client/
- copied from r743825, cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/client/
cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/client/WebClientTest.java
- copied unchanged from r743825, cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/client/WebClientTest.java
cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/FormEncodingProviderTest.java
- copied, changed from r743825, cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/FormEncodingProviderTest.java
Removed:
cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/FormEncodingReaderProvider.java
cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/StringProvider.java
cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/FormEncodingReaderProviderTest.java
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/impl/MetadataMap.java
cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/RequestImpl.java
cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/ResponseBuilderImpl.java
cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/UriBuilderImpl.java
cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/interceptor/JAXRSInInterceptor.java
cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/PrimitiveTextProvider.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/utils/HttpUtils.java
cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/InjectionUtils.java
cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java
cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/ParameterType.java
cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/RequestImplTest.java
cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/UriBuilderImplTest.java
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/BookNotFoundFault.java
cxf/branches/2.1.x-fixes/systests/src/test/java/org/apache/cxf/systest/jaxrs/BookStoreJaxrsJaxws.java
cxf/branches/2.1.x-fixes/systests/src/test/java/org/apache/cxf/systest/jaxrs/BookStoreSoapRestImpl.java
cxf/branches/2.1.x-fixes/systests/src/test/java/org/apache/cxf/systest/jaxrs/BookSubresource.java
cxf/branches/2.1.x-fixes/systests/src/test/java/org/apache/cxf/systest/jaxrs/BookSubresourceImpl.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 Wed Mar 18 15:41:14 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,743965,743967,744175,744195,744237,744756,745214,745243,745560,745578,745586,745592,745638,745950,746012,746019-746020,746256,746266,746306,746357,746373-746374,747217,747386,747406,747454,747649,747766,747986,748159,748192,74
8223,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
+/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,744175,744195,744237,744756,745214,745243,745560,745578,745586,745592,745638,745950,746012,746019-746020,746256,746266,746306,746357,746373-746374,747217,747386,747406,747454,747649,747766,747986,748159,74
8192,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
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 Wed Mar 18 15:41:14 2009
@@ -1 +1 @@
-/cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/WrapperHelperCompiler.java:755514
+/cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/WrapperHelperCompiler.java:743825,755514
Propchange: cxf/branches/2.1.x-fixes/rt/databinding/jaxb/src/test/java/org/apache/cxf/jaxb/JAXBWrapperHelperTest.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Mar 18 15:41:14 2009
@@ -1 +1 @@
-/cxf/trunk/rt/databinding/jaxb/src/test/java/org/apache/cxf/jaxb/JAXBWrapperHelperTest.java:755514
+/cxf/trunk/rt/databinding/jaxb/src/test/java/org/apache/cxf/jaxb/JAXBWrapperHelperTest.java:743825,755514
Copied: cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/AbstractClient.java (from r743825, cxf/trunk/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?p2=cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/AbstractClient.java&p1=cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/AbstractClient.java&r1=743825&r2=755619&rev=755619&view=diff
==============================================================================
--- cxf/trunk/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 Wed Mar 18 15:41:14 2009
@@ -53,6 +53,8 @@
public class AbstractClient implements Client {
+ protected static final MediaType WILDCARD = MediaType.valueOf("*/*");
+
private MultivaluedMap<String, String> requestHeaders = new MetadataMap<String, String>();
private ResponseBuilder responseBuilder;
@@ -296,7 +298,7 @@
if (map.containsKey(HttpHeaders.CONTENT_TYPE)) {
return MediaType.valueOf(map.getFirst(HttpHeaders.CONTENT_TYPE).toString());
}
- return MediaType.WILDCARD_TYPE;
+ return WILDCARD;
}
protected static HttpURLConnection createHttpConnection(URI uri, String methodName) {
Copied: cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/ClientProxyImpl.java (from r743825, cxf/trunk/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?p2=cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/ClientProxyImpl.java&p1=cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/ClientProxyImpl.java&r1=743825&r2=755619&rev=755619&view=diff
==============================================================================
--- cxf/trunk/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 Wed Mar 18 15:41:14 2009
@@ -28,7 +28,6 @@
import java.util.List;
import javax.ws.rs.CookieParam;
-import javax.ws.rs.FormParam;
import javax.ws.rs.HeaderParam;
import javax.ws.rs.MatrixParam;
import javax.ws.rs.PathParam;
@@ -202,7 +201,7 @@
String cType =
bodyClass != null && InjectionUtils.isPrimitive(bodyClass)
? MediaType.TEXT_PLAIN : ori.getConsumeTypes().isEmpty()
- || ori.getConsumeTypes().get(0).equals(MediaType.WILDCARD)
+ || ori.getConsumeTypes().get(0).equals(WILDCARD)
? MediaType.APPLICATION_XML : ori.getConsumeTypes().get(0).toString();
headers.putSingle(HttpHeaders.CONTENT_TYPE, cType);
}
@@ -213,7 +212,7 @@
accepts = InjectionUtils.isPrimitive(responseClass)
? Collections.singletonList(MediaType.TEXT_PLAIN_TYPE)
: ori.getProduceTypes().size() == 0
- || ori.getConsumeTypes().get(0).equals(MediaType.WILDCARD_TYPE)
+ || ori.getConsumeTypes().get(0).equals(WILDCARD)
? Collections.singletonList(MediaType.APPLICATION_XML_TYPE) : ori.getProduceTypes();
for (MediaType mt : accepts) {
headers.add(HttpHeaders.ACCEPT, mt.toString());
@@ -324,11 +323,6 @@
return new Parameter(ParameterType.MATRIX, index, m.value(), isEncoded);
}
- FormParam f = AnnotationUtils.getAnnotation(anns, FormParam.class);
- if (f != null) {
- return new Parameter(ParameterType.FORM, index, f.value(), isEncoded);
- }
-
HeaderParam h = AnnotationUtils.getAnnotation(anns, HeaderParam.class);
if (h != null) {
return new Parameter(ParameterType.HEADER, index, h.value(), isEncoded);
Copied: cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/WebClient.java (from r743825, cxf/trunk/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?p2=cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/WebClient.java&p1=cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/WebClient.java&r1=743825&r2=755619&rev=755619&view=diff
==============================================================================
--- cxf/trunk/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 Wed Mar 18 15:41:14 2009
@@ -69,8 +69,12 @@
HttpURLConnection conn = getConnection(httpMethod);
MultivaluedMap<String, String> headers = getHeaders();
- if (body != null && headers.getFirst(HttpHeaders.CONTENT_TYPE) == null) {
- headers.putSingle(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_XML_TYPE.toString());
+ if (body != null) {
+ if (headers.getFirst(HttpHeaders.CONTENT_TYPE) == null) {
+ headers.putSingle(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_XML_TYPE.toString());
+ }
+ } else {
+ headers.putSingle(HttpHeaders.CONTENT_TYPE, MediaType.MEDIA_TYPE_WILDCARD);
}
if (responseClass != null && headers.getFirst(HttpHeaders.ACCEPT) == null) {
headers.putSingle(HttpHeaders.ACCEPT, MediaType.APPLICATION_XML_TYPE.toString());
@@ -155,12 +159,16 @@
}
public WebClient query(String name, Object ...values) {
- getCurrentBuilder().queryParam(name, values);
+ for (Object o : values) {
+ getCurrentBuilder().queryParam(name, o.toString());
+ }
return this;
}
public WebClient matrix(String name, Object ...values) {
- getCurrentBuilder().matrixParam(name, values);
+ for (Object o : values) {
+ getCurrentBuilder().matrixParam(name, o.toString());
+ }
return this;
}
@@ -178,7 +186,7 @@
return this;
}
List<PathSegment> segments = JAXRSUtils.getPathSegments(uri.getPath(), false);
- getCurrentBuilder().replacePath(null);
+ getCurrentBuilder().replacePath(getBaseURI().getPath());
for (int i = 0; i < segments.size() - 1; i++) {
getCurrentBuilder().path(HttpUtils.fromPathSegment(segments.get(i)));
}
Modified: cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/MetadataMap.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/MetadataMap.java?rev=755619&r1=755618&r2=755619&view=diff
==============================================================================
--- cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/MetadataMap.java (original)
+++ cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/MetadataMap.java Wed Mar 18 15:41:14 2009
@@ -121,4 +121,6 @@
public String toString() {
return m.toString();
}
+
+
}
Modified: cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/RequestImpl.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/RequestImpl.java?rev=755619&r1=755618&r2=755619&view=diff
==============================================================================
--- cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/RequestImpl.java (original)
+++ cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/RequestImpl.java Wed Mar 18 15:41:14 2009
@@ -19,16 +19,20 @@
package org.apache.cxf.jaxrs.impl;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Map;
import javax.ws.rs.core.EntityTag;
+import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.Request;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.ResponseBuilder;
import javax.ws.rs.core.Variant;
+import org.apache.cxf.jaxrs.utils.HttpUtils;
import org.apache.cxf.message.Message;
/**
@@ -75,8 +79,29 @@
public ResponseBuilder evaluatePreconditions(Date lastModified) {
- // TODO : these dates wreck my head
- return null;
+ String ifModifiedSince = getHeaderValue(HttpHeaders.IF_MODIFIED_SINCE);
+
+ if (ifModifiedSince == null) {
+ return null;
+ }
+
+ SimpleDateFormat dateFormat = HttpUtils.getHttpDateFormat();
+
+ dateFormat.setLenient(false);
+ Date dateSince = null;
+ try {
+ dateSince = dateFormat.parse(ifModifiedSince);
+ } catch (ParseException ex) {
+ // invalid header value, request should continue
+ return null;
+ }
+
+ if (dateSince.before(lastModified)) {
+ // request should continue
+ return null;
+ }
+
+ return Response.status(Response.Status.NOT_MODIFIED);
}
Modified: cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/ResponseBuilderImpl.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/ResponseBuilderImpl.java?rev=755619&r1=755618&r2=755619&view=diff
==============================================================================
--- cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/ResponseBuilderImpl.java (original)
+++ cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/ResponseBuilderImpl.java Wed Mar 18 15:41:14 2009
@@ -43,10 +43,8 @@
private ResponseBuilderImpl(ResponseBuilderImpl copy) {
status = copy.status;
- if (entity != null) {
- entity = copy.entity;
- metadata.putAll(copy.metadata);
- }
+ metadata.putAll(copy.metadata);
+ entity = copy.entity;
}
public Response build() {
Modified: cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/UriBuilderImpl.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/UriBuilderImpl.java?rev=755619&r1=755618&r2=755619&view=diff
==============================================================================
--- cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/UriBuilderImpl.java (original)
+++ cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/UriBuilderImpl.java Wed Mar 18 15:41:14 2009
@@ -335,6 +335,11 @@
for (String p : path) {
paths = JAXRSUtils.getPathSegments(p, false);
}
+ if (!paths.isEmpty()) {
+ matrix = paths.get(paths.size() - 1).getMatrixParameters();
+ } else {
+ matrix.clear();
+ }
return this;
}
@@ -345,15 +350,21 @@
scheme = uri.getScheme();
port = uri.getPort();
host = uri.getHost();
- paths = JAXRSUtils.getPathSegments(uri.getPath(), false);
- if (!paths.isEmpty()) {
- matrix = paths.get(paths.size() - 1).getMatrixParameters();
- }
+ setPathAndMatrix(uri.getPath());
fragment = uri.getFragment();
query = JAXRSUtils.getStructuredParams(uri.getQuery(), "&", true);
userInfo = uri.getUserInfo();
}
+ private void setPathAndMatrix(String path) {
+ paths = JAXRSUtils.getPathSegments(path, false);
+ if (!paths.isEmpty()) {
+ matrix = paths.get(paths.size() - 1).getMatrixParameters();
+ } else {
+ matrix.clear();
+ }
+ }
+
private String buildPath() {
StringBuilder sb = new StringBuilder();
Iterator<PathSegment> iter = paths.iterator();
@@ -377,7 +388,6 @@
return buildParams(query, '&');
}
-
/**
* Builds param string for query part or matrix part of URI.
*
Modified: cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/interceptor/JAXRSInInterceptor.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/interceptor/JAXRSInInterceptor.java?rev=755619&r1=755618&r2=755619&view=diff
==============================================================================
--- cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/interceptor/JAXRSInInterceptor.java (original)
+++ cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/interceptor/JAXRSInInterceptor.java Wed Mar 18 15:41:14 2009
@@ -91,8 +91,6 @@
rp.preprocess(message, new UriInfoImpl(message, null));
}
-
- String httpMethod = (String)message.get(Message.HTTP_REQUEST_METHOD);
String requestContentType = (String)message.get(Message.CONTENT_TYPE);
if (requestContentType == null) {
requestContentType = "*/*";
@@ -128,6 +126,7 @@
message.getExchange().put(ROOT_RESOURCE_CLASS, resource);
+ String httpMethod = (String)message.get(Message.HTTP_REQUEST_METHOD);
OperationResourceInfo ori = null;
List<ProviderInfo<RequestHandler>> shs =
Copied: cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/FormEncodingProvider.java (from r743825, cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/FormEncodingProvider.java)
URL: http://svn.apache.org/viewvc/cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/FormEncodingProvider.java?p2=cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/FormEncodingProvider.java&p1=cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/FormEncodingProvider.java&r1=743825&r2=755619&rev=755619&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/FormEncodingProvider.java (original)
+++ cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/FormEncodingProvider.java Wed Mar 18 15:41:14 2009
@@ -28,9 +28,9 @@
import java.util.List;
import java.util.Map;
-import javax.ws.rs.Consumes;
+import javax.ws.rs.ConsumeMime;
import javax.ws.rs.Encoded;
-import javax.ws.rs.Produces;
+import javax.ws.rs.ProduceMime;
import javax.ws.rs.WebApplicationException;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
@@ -47,12 +47,14 @@
import org.apache.cxf.jaxrs.utils.JAXRSUtils;
import org.apache.cxf.jaxrs.utils.multipart.AttachmentUtils;
-@Produces("application/x-www-form-urlencoded")
-@Consumes({"application/x-www-form-urlencoded", "multipart/form-data" })
+@ProduceMime("application/x-www-form-urlencoded")
+@ConsumeMime({"application/x-www-form-urlencoded", "multipart/form-data" })
@Provider
public class FormEncodingProvider implements
MessageBodyReader<Object>, MessageBodyWriter<MultivaluedMap<String, String>> {
-
+
+ private static final MediaType MULTIPART_FORM_DATA_TYPE = MediaType.valueOf("multipart/form-data");
+
private FormValidator validator;
@Context private MessageContext mc;
private String attachmentDir;
@@ -71,10 +73,9 @@
}
public boolean isReadable(Class<?> type, Type genericType,
- Annotation[] annotations, MediaType mt) {
+ Annotation[] annotations) {
return MultivaluedMap.class.isAssignableFrom(type)
- || mt.isCompatible(MediaType.MULTIPART_FORM_DATA_TYPE)
- && MultipartBody.class.isAssignableFrom(type);
+ || multipartSupported() && MultipartBody.class.isAssignableFrom(type);
}
public Object readFrom(
@@ -115,7 +116,7 @@
*/
protected void populateMap(MultivaluedMap<String, String> params,
InputStream is, MediaType mt, boolean decode) {
- if (mt.isCompatible(MediaType.MULTIPART_FORM_DATA_TYPE)) {
+ if (mt.isCompatible(MULTIPART_FORM_DATA_TYPE)) {
MultipartBody body =
AttachmentUtils.getMultipartBody(mc, attachmentDir, attachmentThreshold);
FormUtils.populateMapFromMultipart(params, body, decode);
@@ -130,13 +131,11 @@
}
}
- public long getSize(MultivaluedMap t, Class<?> type, Type genericType, Annotation[] annotations,
- MediaType mediaType) {
+ public long getSize(MultivaluedMap<String, String> t) {
return -1;
}
- public boolean isWriteable(Class<?> type, Type genericType, Annotation[] annotations,
- MediaType mediaType) {
+ public boolean isWriteable(Class<?> type, Type genericType, Annotation[] annotations) {
return MultivaluedMap.class.isAssignableFrom(type);
}
@@ -156,4 +155,14 @@
}
}
}
+
+ private boolean multipartSupported() {
+
+ if (mc == null) {
+ return false;
+ }
+ MediaType mt = mc.getHttpHeaders().getMediaType();
+
+ return mt.isCompatible(MULTIPART_FORM_DATA_TYPE);
+ }
}
Modified: cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/PrimitiveTextProvider.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/PrimitiveTextProvider.java?rev=755619&r1=755618&r2=755619&view=diff
==============================================================================
--- cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/PrimitiveTextProvider.java (original)
+++ cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/PrimitiveTextProvider.java Wed Mar 18 15:41:14 2009
@@ -24,8 +24,6 @@
import java.lang.annotation.Annotation;
import java.lang.reflect.Type;
-import javax.ws.rs.ConsumeMime;
-import javax.ws.rs.ProduceMime;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.MultivaluedMap;
import javax.ws.rs.ext.MessageBodyReader;
@@ -35,15 +33,11 @@
import org.apache.cxf.jaxrs.utils.InjectionUtils;
import org.apache.cxf.jaxrs.utils.ParameterType;
-@ProduceMime("text/plain")
-@ConsumeMime("text/plain")
public class PrimitiveTextProvider
implements MessageBodyReader<Object>, MessageBodyWriter<Object> {
private static boolean isSupported(Class<?> type) {
- return type.isPrimitive()
- || Number.class.isAssignableFrom(type)
- || Boolean.class.isAssignableFrom(type);
+ return InjectionUtils.isPrimitive(type);
}
public boolean isReadable(Class<?> type, Type genericType, Annotation[] annotations) {
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=755619&r1=755618&r2=755619&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 Wed Mar 18 15:41:14 2009
@@ -37,6 +37,7 @@
import javax.ws.rs.ext.MessageBodyReader;
import javax.ws.rs.ext.MessageBodyWriter;
+import org.apache.cxf.jaxrs.client.ResponseExceptionMapper;
import org.apache.cxf.jaxrs.ext.MappingsHandler;
import org.apache.cxf.jaxrs.ext.ParameterHandler;
import org.apache.cxf.jaxrs.ext.RequestHandler;
@@ -75,6 +76,8 @@
new ArrayList<ProviderInfo<ResponseHandler>>(1);
private List<ProviderInfo<ParameterHandler>> jaxrsParamHandlers =
new ArrayList<ProviderInfo<ParameterHandler>>(1);
+ private List<ProviderInfo<ResponseExceptionMapper>> userResponseExceptionMappers =
+ new ArrayList<ProviderInfo<ResponseExceptionMapper>>(1);
private RequestPreprocessor requestPreprocessor;
private ProviderFactory() {
@@ -91,12 +94,12 @@
responseHandlers,
defaultExceptionMappers,
jaxrsParamHandlers,
+ userResponseExceptionMappers,
new JAXBElementProvider(),
new JSONProvider(),
new BinaryDataProvider(),
- new StringProvider(),
new SourceProvider(),
- new FormEncodingReaderProvider(),
+ new FormEncodingProvider(),
new PrimitiveTextProvider(),
new ActivationProvider(),
new WebApplicationExceptionMapper(),
@@ -166,20 +169,7 @@
List<ExceptionMapper<T>> candidates = new LinkedList<ExceptionMapper<T>>();
for (ProviderInfo<ExceptionMapper> em : mappers) {
- Type[] types = em.getProvider().getClass().getGenericInterfaces();
- for (Type t : types) {
- if (t instanceof ParameterizedType) {
- ParameterizedType pt = (ParameterizedType)t;
- Type[] args = pt.getActualTypeArguments();
- for (int i = 0; i < args.length; i++) {
- if (((Class<?>)args[i]).isAssignableFrom(exceptionType)) {
- InjectionUtils.injectContextFields(em.getProvider(), em, m);
- InjectionUtils.injectContextMethods(em.getProvider(), em, m);
- candidates.add(em.getProvider());
- }
- }
- }
- }
+ handleMapper((List)candidates, em, exceptionType, m);
}
if (candidates.size() == 0) {
return null;
@@ -194,18 +184,7 @@
List<ParameterHandler<T>> candidates = new LinkedList<ParameterHandler<T>>();
for (ProviderInfo<ParameterHandler> em : jaxrsParamHandlers) {
- Type[] types = em.getProvider().getClass().getGenericInterfaces();
- for (Type t : types) {
- if (t instanceof ParameterizedType) {
- ParameterizedType pt = (ParameterizedType)t;
- Type[] args = pt.getActualTypeArguments();
- for (int i = 0; i < args.length; i++) {
- if (((Class<?>)args[i]).isAssignableFrom(paramType)) {
- candidates.add(em.getProvider());
- }
- }
- }
- }
+ handleMapper((List)candidates, em, paramType, null);
}
if (candidates.size() == 0) {
return null;
@@ -214,6 +193,44 @@
return candidates.get(0);
}
+ @SuppressWarnings("unchecked")
+ public <T extends Throwable> ResponseExceptionMapper<T> createResponseExceptionMapper(
+ Class<?> paramType) {
+
+ List<ResponseExceptionMapper<T>> candidates = new LinkedList<ResponseExceptionMapper<T>>();
+
+ for (ProviderInfo<ResponseExceptionMapper> em : userResponseExceptionMappers) {
+ handleMapper((List)candidates, em, paramType, null);
+ }
+ if (candidates.size() == 0) {
+ return null;
+ }
+ Collections.sort(candidates, new ResponseExceptionMapperComparator());
+ return candidates.get(0);
+ }
+
+ private static void handleMapper(List<Object> candidates, ProviderInfo em,
+ Class<?> expectedType, Message m) {
+ Type[] types = em.getProvider().getClass().getGenericInterfaces();
+ for (Type t : types) {
+ if (t instanceof ParameterizedType) {
+ ParameterizedType pt = (ParameterizedType)t;
+ Type[] args = pt.getActualTypeArguments();
+ for (int i = 0; i < args.length; i++) {
+ if (((Class<?>)args[i]).isAssignableFrom(expectedType)) {
+ if (m != null) {
+ InjectionUtils.injectContextFields(em.getProvider(), em, m);
+ InjectionUtils.injectContextMethods(em.getProvider(), em, m);
+ }
+ candidates.add(em.getProvider());
+ }
+ }
+ }
+ }
+ }
+
+
+
public <T> MessageBodyReader<T> createMessageBodyReader(Class<T> bodyType,
Type parameterType,
Annotation[] parameterAnnotations,
@@ -286,6 +303,7 @@
List<ProviderInfo<ResponseHandler>> responseFilters,
List<ProviderInfo<ExceptionMapper>> excMappers,
List<ProviderInfo<ParameterHandler>> paramHandlers,
+ List<ProviderInfo<ResponseExceptionMapper>> responseExcMappers,
Object... providers) {
for (Object o : providers) {
@@ -313,6 +331,10 @@
excMappers.add(new ProviderInfo<ExceptionMapper>((ExceptionMapper)o));
}
+ if (ResponseExceptionMapper.class.isAssignableFrom(o.getClass())) {
+ responseExcMappers.add(new ProviderInfo<ResponseExceptionMapper>((ResponseExceptionMapper)o));
+ }
+
if (ParameterHandler.class.isAssignableFrom(o.getClass())) {
paramHandlers.add(new ProviderInfo<ParameterHandler>((ParameterHandler)o));
}
@@ -484,6 +506,7 @@
responseHandlers,
userExceptionMappers,
jaxrsParamHandlers,
+ userResponseExceptionMappers,
userProviders.toArray());
}
@@ -588,6 +611,16 @@
}
+ private static class ResponseExceptionMapperComparator implements
+ Comparator<ResponseExceptionMapper<? extends Throwable>> {
+
+ public int compare(ResponseExceptionMapper<? extends Throwable> em1,
+ ResponseExceptionMapper<? extends Throwable> em2) {
+ return compareClasses(em1.getClass(), em2.getClass());
+ }
+
+ }
+
private static class ParameterHandlerComparator implements
Comparator<ParameterHandler<? extends Object>> {
Modified: cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/HttpUtils.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/HttpUtils.java?rev=755619&r1=755618&r2=755619&view=diff
==============================================================================
--- cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/HttpUtils.java (original)
+++ cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/HttpUtils.java Wed Mar 18 15:41:14 2009
@@ -22,8 +22,11 @@
import java.net.MalformedURLException;
import java.net.URI;
import java.net.URL;
+import java.text.SimpleDateFormat;
import java.util.List;
+import java.util.Locale;
import java.util.Map;
+import java.util.TimeZone;
import javax.servlet.http.HttpServletRequest;
import javax.ws.rs.core.PathSegment;
@@ -43,6 +46,14 @@
private HttpUtils() {
}
+ public static SimpleDateFormat getHttpDateFormat() {
+ SimpleDateFormat dateFormat =
+ new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss zzz", Locale.US);
+ TimeZone tZone = TimeZone.getTimeZone("GMT");
+ dateFormat.setTimeZone(tZone);
+ return dateFormat;
+ }
+
public static URI toAbsoluteUri(URI u, Message message) {
if (!u.isAbsolute()) {
HttpServletRequest httpRequest =
Modified: cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/InjectionUtils.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/InjectionUtils.java?rev=755619&r1=755618&r2=755619&view=diff
==============================================================================
--- cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/InjectionUtils.java (original)
+++ cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/InjectionUtils.java Wed Mar 18 15:41:14 2009
@@ -132,18 +132,6 @@
return (Class<?>)paramType.getActualTypeArguments()[0];
}
- public static Class<?> getActualType(Type genericType, int i) {
- if (genericType == null
- || !ParameterizedType.class.isAssignableFrom(genericType.getClass())) {
- return null;
- }
- ParameterizedType paramType = (ParameterizedType)genericType;
- if (i < paramType.getActualTypeArguments().length) {
- return (Class<?>)paramType.getActualTypeArguments()[i];
- }
- return null;
- }
-
public static void injectThroughMethod(Object requestObject,
Method method,
Object parameterValue) {
@@ -514,4 +502,11 @@
InjectionUtils.injectContextField(cri, f, o, value, true);
}
}
+
+ public static boolean isPrimitive(Class<?> type) {
+ return type.isPrimitive()
+ || Number.class.isAssignableFrom(type)
+ || Boolean.class.isAssignableFrom(type)
+ || String.class == type;
+ }
}
Modified: cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java?rev=755619&r1=755618&r2=755619&view=diff
==============================================================================
--- cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java (original)
+++ cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java Wed Mar 18 15:41:14 2009
@@ -28,6 +28,7 @@
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.net.URLDecoder;
+import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
@@ -236,7 +237,7 @@
SortedMap<OperationResourceInfo, MultivaluedMap<String, String>> candidateList =
new TreeMap<OperationResourceInfo, MultivaluedMap<String, String>>(
new OperationResourceInfoComparator());
- MediaType requestType = requestContentType == null
+ MediaType requestType = requestContentType == null
? ALL_TYPES : MediaType.valueOf(requestContentType);
int pathMatched = 0;
@@ -547,24 +548,21 @@
@SuppressWarnings("unchecked")
private static Object processCookieParam(Message m, String cookieName,
Class<?> pClass, Type genericType, String defaultValue) {
- Map<String, List<String>> headers =
- (Map<String, List<String>>)m.get(Message.PROTOCOL_HEADERS);
- // get the cookie with this name...
- List<String> values = headers.get("Cookie");
- String value = "";
- if (values != null && values.get(0).contains(cookieName + '=')) {
- value = values.get(0);
+ List<String> values = new HttpHeadersImpl(m).getRequestHeader(HttpHeaders.COOKIE);
+ String value = values != null && values.get(0).contains(cookieName + '=') ? values.get(0)
+ : defaultValue != null ? cookieName + '=' + defaultValue : null;
+
+ if (value == null) {
+ return null;
}
+
+ Cookie c = Cookie.valueOf(value);
if (pClass.isAssignableFrom(Cookie.class)) {
- return Cookie.valueOf(value.length() == 0 ? defaultValue : value);
+ return c;
}
String basePath = HttpUtils.getOriginalAddress(m);
- return value.length() > 0 ? InjectionUtils.handleParameter(value,
- pClass,
- ParameterType.COOKIE,
- basePath)
- : defaultValue;
+ return InjectionUtils.handleParameter(c.getValue(), pClass, ParameterType.COOKIE, basePath);
}
public static <T> T createContextValue(Message m, Type genericType, Class<T> clazz) {
@@ -908,5 +906,16 @@
return null;
}
+
+ public static String encode(boolean encoded, String value) {
+ if (!encoded) {
+ try {
+ value = URLEncoder.encode(value, "UTF-8");
+ } catch (UnsupportedEncodingException ex) {
+ // unlikely to happen
+ }
+ }
+ return value;
+ }
}
Modified: cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/ParameterType.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/ParameterType.java?rev=755619&r1=755618&r2=755619&view=diff
==============================================================================
--- cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/ParameterType.java (original)
+++ cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/ParameterType.java Wed Mar 18 15:41:14 2009
@@ -28,5 +28,6 @@
FORM,
REQUEST_BODY,
+ CONTEXT,
UNKNOWN
}
Modified: cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/RequestImplTest.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/RequestImplTest.java?rev=755619&r1=755618&r2=755619&view=diff
==============================================================================
--- cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/RequestImplTest.java (original)
+++ cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/RequestImplTest.java Wed Mar 18 15:41:14 2009
@@ -30,10 +30,10 @@
import org.apache.cxf.message.Message;
import org.apache.cxf.message.MessageImpl;
+
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
-import org.junit.Ignore;
import org.junit.Test;
public class RequestImplTest extends Assert {
@@ -87,9 +87,9 @@
@Test
public void testBeforeDate() throws Exception {
- metadata.putSingle("If-Modified-Since", "Sat, 29 Oct 1994 19:43:31 GMT");
+ metadata.putSingle("If-Modified-Since", "Tue, 21 Oct 2008 14:00:00 GMT");
Date serverDate = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss zzz", Locale.ENGLISH)
- .parse("Sun, 29 Oct 1994 19:43:31 GMT");
+ .parse("Tue, 21 Oct 2008 17:00:00 GMT");
ResponseBuilder rb =
new RequestImpl(m).evaluatePreconditions(serverDate);
@@ -97,11 +97,10 @@
}
@Test
- @Ignore
public void testAfterDate() throws Exception {
- metadata.putSingle("If-Modified-Since", "Sat, 29 Oct 1994 19:43:31 GMT");
+ metadata.putSingle("If-Modified-Since", "Tue, 21 Oct 2008 14:00:00 GMT");
Date serverDate = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss zzz", Locale.ENGLISH)
- .parse("Fri, 28 Oct 1994 19:43:31 GMT");
+ .parse("Mon, 20 Oct 2008 14:00:00 GMT");
ResponseBuilder rb =
Modified: cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/UriBuilderImplTest.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/UriBuilderImplTest.java?rev=755619&r1=755618&r2=755619&view=diff
==============================================================================
--- cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/UriBuilderImplTest.java (original)
+++ cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/UriBuilderImplTest.java Wed Mar 18 15:41:14 2009
@@ -46,6 +46,13 @@
assertEquals("URI is not built correctly", uri, newUri);
}
+ @Test
+ public void testReplacePath() throws Exception {
+ URI uri = new URI("http://foo/bar/baz;m1=m1value");
+ URI newUri = new UriBuilderImpl(uri).replacePath("/newpath").build();
+ assertEquals("URI is not built correctly", "http://foo/newpath", newUri.toString());
+ }
+
@Test(expected = IllegalArgumentException.class)
public void testUriNull() throws Exception {
new UriBuilderImpl().uri(null);
Copied: cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/FormEncodingProviderTest.java (from r743825, cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/FormEncodingProviderTest.java)
URL: http://svn.apache.org/viewvc/cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/FormEncodingProviderTest.java?p2=cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/FormEncodingProviderTest.java&p1=cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/FormEncodingProviderTest.java&r1=743825&r2=755619&rev=755619&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/FormEncodingProviderTest.java (original)
+++ cxf/branches/2.1.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/provider/FormEncodingProviderTest.java Wed Mar 18 15:41:14 2009
@@ -24,7 +24,7 @@
import java.lang.annotation.Annotation;
import java.util.List;
-import javax.ws.rs.Consumes;
+import javax.ws.rs.ConsumeMime;
import javax.ws.rs.Encoded;
import javax.ws.rs.WebApplicationException;
import javax.ws.rs.core.MediaType;
@@ -164,12 +164,12 @@
@Test
public void testReadable() {
- assertTrue(ferp.isReadable(MultivaluedMap.class, null, null, null));
+ assertTrue(ferp.isReadable(MultivaluedMap.class, null, null));
}
@Test
public void testAnnotations() {
- assertEquals("application/x-www-form-urlencoded", ferp.getClass().getAnnotation(Consumes.class)
+ assertEquals("application/x-www-form-urlencoded", ferp.getClass().getAnnotation(ConsumeMime.class)
.value()[0]);
}
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=755619&r1=755618&r2=755619&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 Wed Mar 18 15:41:14 2009
@@ -121,17 +121,17 @@
public void testSortEntityProviders() throws Exception {
ProviderFactory pf = ProviderFactory.getInstance();
pf.registerUserProvider(new TestStringProvider());
- pf.registerUserProvider(new StringProvider());
+ pf.registerUserProvider(new PrimitiveTextProvider());
List<ProviderInfo<MessageBodyReader>> readers = pf.getUserMessageReaders();
assertTrue(indexOf(readers, TestStringProvider.class)
- < indexOf(readers, StringProvider.class));
+ < indexOf(readers, PrimitiveTextProvider.class));
List<ProviderInfo<MessageBodyWriter>> writers = pf.getUserMessageWriters();
assertTrue(indexOf(writers, TestStringProvider.class)
- < indexOf(writers, StringProvider.class));
+ < indexOf(writers, PrimitiveTextProvider.class));
//REVISIT the compare algorithm
//assertTrue(indexOf(providers, JSONProvider.class) < indexOf(providers, TestStringProvider.class));
@@ -170,7 +170,7 @@
@Test
public void testGetStringProvider() throws Exception {
- verifyProvider(String.class, StringProvider.class, "text/html");
+ verifyProvider(String.class, PrimitiveTextProvider.class, "text/plain");
}
@Test
@@ -206,7 +206,7 @@
@Test
public void testGetStringProviderWildCard() throws Exception {
- verifyProvider(String.class, StringProvider.class, "text/*");
+ verifyProvider(String.class, PrimitiveTextProvider.class, "text/*");
}
@Test
Modified: cxf/branches/2.1.x-fixes/systests/src/test/java/org/apache/cxf/systest/jaxrs/BookNotFoundFault.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.1.x-fixes/systests/src/test/java/org/apache/cxf/systest/jaxrs/BookNotFoundFault.java?rev=755619&r1=755618&r2=755619&view=diff
==============================================================================
--- cxf/branches/2.1.x-fixes/systests/src/test/java/org/apache/cxf/systest/jaxrs/BookNotFoundFault.java (original)
+++ cxf/branches/2.1.x-fixes/systests/src/test/java/org/apache/cxf/systest/jaxrs/BookNotFoundFault.java Wed Mar 18 15:41:14 2009
@@ -25,6 +25,10 @@
public class BookNotFoundFault extends Exception {
private BookNotFoundDetails details;
+ public BookNotFoundFault(String errorMessage) {
+ super(errorMessage);
+ }
+
public BookNotFoundFault(BookNotFoundDetails details) {
super();
this.details = details;
Modified: cxf/branches/2.1.x-fixes/systests/src/test/java/org/apache/cxf/systest/jaxrs/BookStoreJaxrsJaxws.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.1.x-fixes/systests/src/test/java/org/apache/cxf/systest/jaxrs/BookStoreJaxrsJaxws.java?rev=755619&r1=755618&r2=755619&view=diff
==============================================================================
--- cxf/branches/2.1.x-fixes/systests/src/test/java/org/apache/cxf/systest/jaxrs/BookStoreJaxrsJaxws.java (original)
+++ cxf/branches/2.1.x-fixes/systests/src/test/java/org/apache/cxf/systest/jaxrs/BookStoreJaxrsJaxws.java Wed Mar 18 15:41:14 2009
@@ -22,6 +22,7 @@
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
+import javax.ws.rs.ConsumeMime;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
@@ -30,16 +31,21 @@
@WebService
@Path("/bookstore")
+@ConsumeMime("application/xml")
+@ProduceMime("application/xml")
public interface BookStoreJaxrsJaxws {
@WebMethod
@GET
@Path("/{id}")
- Book getBook(@PathParam("id") @WebParam(name = "id") Long id);
+ Book getBook(@PathParam("id") @WebParam(name = "id") Long id) throws BookNotFoundFault;
@WebMethod
@POST
@Path("/books")
- @ProduceMime("application/xml")
Book addBook(@WebParam(name = "book") Book book);
+
+ @Path("/books/{id}")
+ @WebMethod(exclude = true)
+ BookSubresource getBookSubresource(@PathParam("id") String id);
}
Modified: cxf/branches/2.1.x-fixes/systests/src/test/java/org/apache/cxf/systest/jaxrs/BookStoreSoapRestImpl.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.1.x-fixes/systests/src/test/java/org/apache/cxf/systest/jaxrs/BookStoreSoapRestImpl.java?rev=755619&r1=755618&r2=755619&view=diff
==============================================================================
--- cxf/branches/2.1.x-fixes/systests/src/test/java/org/apache/cxf/systest/jaxrs/BookStoreSoapRestImpl.java (original)
+++ cxf/branches/2.1.x-fixes/systests/src/test/java/org/apache/cxf/systest/jaxrs/BookStoreSoapRestImpl.java Wed Mar 18 15:41:14 2009
@@ -23,7 +23,10 @@
import java.util.Map;
import javax.annotation.Resource;
+import javax.jws.WebMethod;
import javax.servlet.http.HttpServletRequest;
+import javax.ws.rs.WebApplicationException;
+import javax.ws.rs.core.Response;
import javax.xml.ws.WebServiceContext;
import org.apache.cxf.jaxrs.ext.MessageContext;
@@ -42,6 +45,11 @@
}
public Book getBook(Long id) {
+ if (books.get(id) == null) {
+ Response r = Response.status(404).header("BOOK-HEADER",
+ "No Book with id " + id + " is available").build();
+ throw new WebApplicationException(r);
+ }
System.out.println(getContentType());
return books.get(id);
}
@@ -70,5 +78,10 @@
}
return request.getContentType();
}
+
+ @WebMethod(exclude = true)
+ public BookSubresource getBookSubresource(String id) {
+ return new BookSubresourceImpl(Long.valueOf(id));
+ }
}
Modified: cxf/branches/2.1.x-fixes/systests/src/test/java/org/apache/cxf/systest/jaxrs/BookSubresource.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.1.x-fixes/systests/src/test/java/org/apache/cxf/systest/jaxrs/BookSubresource.java?rev=755619&r1=755618&r2=755619&view=diff
==============================================================================
--- cxf/branches/2.1.x-fixes/systests/src/test/java/org/apache/cxf/systest/jaxrs/BookSubresource.java (original)
+++ cxf/branches/2.1.x-fixes/systests/src/test/java/org/apache/cxf/systest/jaxrs/BookSubresource.java Wed Mar 18 15:41:14 2009
@@ -19,9 +19,16 @@
package org.apache.cxf.systest.jaxrs;
+import javax.ws.rs.ConsumeMime;
+import javax.ws.rs.CookieParam;
import javax.ws.rs.GET;
+import javax.ws.rs.HeaderParam;
+import javax.ws.rs.POST;
import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
import javax.ws.rs.ProduceMime;
+import javax.ws.rs.QueryParam;
+import javax.ws.rs.core.MultivaluedMap;
import org.apache.cxf.customer.book.BookNotFoundFault;
@@ -31,4 +38,21 @@
@Path("/subresource")
@ProduceMime("application/xml")
Book getTheBook() throws BookNotFoundFault;
+
+ @POST
+ @Path("/subresource2/{n1}")
+ @ConsumeMime("text/plain")
+ @ProduceMime("application/xml")
+ Book getTheBook2(@PathParam("n1") String name1,
+ @QueryParam("n2") String name2,
+ @QueryParam("n3") String name3,
+ @HeaderParam("N4") String name4,
+ @CookieParam("n5") String name5,
+ String name6) throws BookNotFoundFault;
+
+ @POST
+ @Path("/subresource3")
+ Book getTheBook3(MultivaluedMap<String, String> form) throws BookNotFoundFault;
+
}
+
Modified: cxf/branches/2.1.x-fixes/systests/src/test/java/org/apache/cxf/systest/jaxrs/BookSubresourceImpl.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.1.x-fixes/systests/src/test/java/org/apache/cxf/systest/jaxrs/BookSubresourceImpl.java?rev=755619&r1=755618&r2=755619&view=diff
==============================================================================
--- cxf/branches/2.1.x-fixes/systests/src/test/java/org/apache/cxf/systest/jaxrs/BookSubresourceImpl.java (original)
+++ cxf/branches/2.1.x-fixes/systests/src/test/java/org/apache/cxf/systest/jaxrs/BookSubresourceImpl.java Wed Mar 18 15:41:14 2009
@@ -19,15 +19,49 @@
package org.apache.cxf.systest.jaxrs;
+import javax.ws.rs.core.MultivaluedMap;
+
import org.apache.cxf.customer.book.BookNotFoundFault;
public class BookSubresourceImpl implements BookSubresource {
+ private Long id;
+
+ public BookSubresourceImpl() {
+ id = 123L;
+ }
+
+ public BookSubresourceImpl(Long id) {
+ this.id = id;
+ }
+
public Book getTheBook() throws BookNotFoundFault {
+
+ if (id == 0) {
+ return null;
+ }
+
Book b = new Book();
- b.setId(123);
+ b.setId(id);
b.setName("CXF in Action");
return b;
}
+ public Book getTheBook2(String n1, String n2, String n3, String n4, String n5, String n6)
+ throws BookNotFoundFault {
+
+ Book b = new Book();
+ b.setId(id);
+ b.setName(n1 + n2 + n3 + n4 + n5 + n6);
+ return b;
+ }
+
+ public Book getTheBook3(MultivaluedMap<String, String> form) throws BookNotFoundFault {
+ Book b = new Book();
+
+ b.setId(Long.valueOf(form.getFirst("id")));
+ b.setName(form.getFirst("name"));
+ return b;
+ }
+
}
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=755619&r1=755618&r2=755619&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 Wed Mar 18 15:41:14 2009
@@ -23,7 +23,15 @@
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;
+import java.util.List;
+import java.util.Map;
+import javax.ws.rs.WebApplicationException;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.MultivaluedMap;
+import javax.ws.rs.core.Response;
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.Unmarshaller;
import javax.xml.namespace.QName;
import org.apache.commons.httpclient.HttpClient;
@@ -32,8 +40,16 @@
import org.apache.commons.httpclient.methods.RequestEntity;
import org.apache.cxf.helpers.IOUtils;
import org.apache.cxf.io.CachedOutputStream;
+import org.apache.cxf.jaxrs.client.JAXRSClientFactory;
+import org.apache.cxf.jaxrs.client.ResponseExceptionMapper;
+import org.apache.cxf.jaxrs.client.WebClient;
+import org.apache.cxf.jaxrs.ext.form.Form;
+import org.apache.cxf.jaxrs.impl.MetadataMap;
+import org.apache.cxf.jaxrs.provider.ProviderFactory;
import org.apache.cxf.testutil.common.AbstractBusClientServerTestBase;
+
import org.junit.BeforeClass;
+import org.junit.Ignore;
import org.junit.Test;
public class JAXRSSoapBookTest extends AbstractBusClientServerTestBase {
@@ -63,6 +79,199 @@
}
@Test
+ public void testGetBook123Client() throws Exception {
+
+ String baseAddress = "http://localhost:9092/test/services/rest";
+ BookStoreJaxrsJaxws proxy = JAXRSClientFactory.create(baseAddress,
+ BookStoreJaxrsJaxws.class);
+ Book b = proxy.getBook(new Long("123"));
+ assertEquals(123L, b.getId());
+ assertEquals("CXF in Action", b.getName());
+ }
+
+ @Test
+ public void testGetBook123WebClient() throws Exception {
+ String baseAddress = "http://localhost:9092/test/services/rest";
+ WebClient client = new WebClient(baseAddress);
+ client.path("/bookstore/123").accept(MediaType.APPLICATION_XML_TYPE);
+ Book b = client.get(Book.class);
+ assertEquals(123L, b.getId());
+ assertEquals("CXF in Action", b.getName());
+ }
+
+ @Test
+ public void testNoBookWebClient() throws Exception {
+ String baseAddress = "http://localhost:9092/test/services/rest";
+ WebClient client = new WebClient(baseAddress);
+ client.path("/bookstore/books/0/subresource").accept(MediaType.APPLICATION_XML_TYPE);
+ Book b = client.get(Book.class);
+ assertNull(b);
+ assertEquals(204, client.getResponse().getStatus());
+ }
+
+ @Test
+ public void testGetBook123WebClientResponse() throws Exception {
+ String baseAddress = "http://localhost:9092/test/services/rest";
+ WebClient client = new WebClient(baseAddress);
+ client.path("/bookstore/123").accept(MediaType.APPLICATION_XML_TYPE);
+ Book b = readBook((InputStream)client.get().getEntity());
+ assertEquals(123L, b.getId());
+ assertEquals("CXF in Action", b.getName());
+ }
+
+ @Test
+ public void testGetBook356ClientException() throws Exception {
+
+ String baseAddress = "http://localhost:9092/test/services/rest";
+ BookStoreJaxrsJaxws proxy = JAXRSClientFactory.create(baseAddress,
+ BookStoreJaxrsJaxws.class);
+
+ ProviderFactory.getInstance().registerUserProvider(new TestResponseExceptionMapper());
+ try {
+ proxy.getBook(356L);
+ fail();
+ } catch (BookNotFoundFault ex) {
+ assertEquals("No Book with id 356 is available", ex.getMessage());
+ }
+ }
+
+
+ @Test
+ public void testGetBookSubresourceClient() throws Exception {
+
+ String baseAddress = "http://localhost:9092/test/services/rest";
+ BookStoreJaxrsJaxws proxy = JAXRSClientFactory.create(baseAddress,
+ BookStoreJaxrsJaxws.class);
+ BookSubresource bs = proxy.getBookSubresource("125");
+ Book b = bs.getTheBook();
+ assertEquals(125L, b.getId());
+ assertEquals("CXF in Action", b.getName());
+ }
+
+ @Test
+ public void testGetBookSubresourceClient2() throws Exception {
+
+ String baseAddress = "http://localhost:9092/test/services/rest";
+ BookStoreJaxrsJaxws proxy = JAXRSClientFactory.create(baseAddress,
+ BookStoreJaxrsJaxws.class);
+ doTestSubresource(proxy);
+ }
+
+ @Test
+ public void testGetBookSubresourceWebClientProxy() throws Exception {
+
+ WebClient client = new WebClient("http://localhost:9092/test/services/rest");
+ client.type(MediaType.TEXT_PLAIN_TYPE).accept(MediaType.APPLICATION_XML_TYPE);
+ BookStoreJaxrsJaxws proxy = JAXRSClientFactory.fromClient(client, BookStoreJaxrsJaxws.class, true);
+
+ doTestSubresource(proxy);
+
+ BookStoreJaxrsJaxws proxy2 = JAXRSClientFactory.fromClient(
+ WebClient.client(proxy), BookStoreJaxrsJaxws.class);
+ doTestSubresource(proxy2);
+
+ }
+
+
+ @Test
+ public void testGetBookSubresourceWebClientProxy2() throws Exception {
+
+ WebClient client = new WebClient("http://localhost:9092/test/services/rest/bookstore")
+ .path("/books/378");
+ client.type(MediaType.TEXT_PLAIN_TYPE).accept(MediaType.APPLICATION_XML_TYPE);
+ BookSubresource proxy = JAXRSClientFactory.fromClient(client, BookSubresource.class);
+
+ Book b = proxy.getTheBook2("CXF ", "in ", "Action ", "- 3", "7", "8");
+ assertEquals(378L, b.getId());
+ assertEquals("CXF in Action - 378", b.getName());
+
+ }
+
+ private void doTestSubresource(BookStoreJaxrsJaxws proxy) throws Exception {
+ BookSubresource bs = proxy.getBookSubresource("378");
+
+ Book b = bs.getTheBook2("CXF ", "in ", "Action ", "- 3", "7", "8");
+ assertEquals(378L, b.getId());
+ assertEquals("CXF in Action - 378", b.getName());
+
+ WebClient.client(bs).reset().header("N4", "- 4");
+ b = bs.getTheBook2("CXF ", "in ", "Action ", null, "7", "8");
+ assertEquals(378L, b.getId());
+ assertEquals("CXF in Action - 478", b.getName());
+ }
+
+ @Test
+ public void testGetBookWebClientForm() throws Exception {
+
+ String baseAddress = "http://localhost:9092/test/services/rest/bookstore/books/679/subresource3";
+ WebClient wc = new WebClient(baseAddress);
+ MultivaluedMap<String, Object> map = new MetadataMap<String, Object>();
+ map.putSingle("id", "679");
+ map.putSingle("name", "CXF in Action - 679");
+ Book b = readBook((InputStream)wc.accept("application/xml")
+ .form((Map<String, List<Object>>)map).getEntity());
+ assertEquals(679L, b.getId());
+ assertEquals("CXF in Action - 679", b.getName());
+ }
+
+ @Test
+ public void testGetBookWebClientForm2() throws Exception {
+
+ String baseAddress = "http://localhost:9092/test/services/rest/bookstore/books/679/subresource3";
+ WebClient wc = new WebClient(baseAddress);
+ Form f = new Form();
+ f.set("id", "679").set("name", "CXF in Action - 679");
+ Book b = readBook((InputStream)wc.accept("application/xml")
+ .form(f).getEntity());
+ assertEquals(679L, b.getId());
+ assertEquals("CXF in Action - 679", b.getName());
+ }
+
+ @Test
+ public void testGetBookSubresourceClientFormParam() throws Exception {
+
+ String baseAddress = "http://localhost:9092/test/services/rest";
+ BookStoreJaxrsJaxws proxy = JAXRSClientFactory.create(baseAddress,
+ BookStoreJaxrsJaxws.class);
+ BookSubresource bs = proxy.getBookSubresource("679");
+ MultivaluedMap<String, String> map = new MetadataMap<String, String>();
+ map.putSingle("id", "679");
+ map.putSingle("name", "CXF in Action - 679");
+ Book b = bs.getTheBook3(map);
+ assertEquals(679L, b.getId());
+ assertEquals("CXF in Action - 679", b.getName());
+ }
+
+ @Test
+ public void testAddGetBook123WebClient() throws Exception {
+ String baseAddress = "http://localhost:9092/test/services/rest";
+ WebClient client = new WebClient(baseAddress);
+ client.path("/bookstore/books").accept(MediaType.APPLICATION_XML_TYPE)
+ .type(MediaType.APPLICATION_XML_TYPE);
+ Book b = new Book();
+ b.setId(124);
+ b.setName("CXF in Action - 2");
+ Book b2 = client.post(b, Book.class);
+ assertNotSame(b, b2);
+ assertEquals(124L, b2.getId());
+ assertEquals("CXF in Action - 2", b2.getName());
+ }
+
+ @Test
+ public void testAddGetBook123Client() throws Exception {
+ String baseAddress = "http://localhost:9092/test/services/rest";
+ BookStoreJaxrsJaxws proxy = JAXRSClientFactory.create(baseAddress,
+ BookStoreJaxrsJaxws.class);
+ Book b = new Book();
+ b.setId(124);
+ b.setName("CXF in Action - 2");
+ Book b2 = proxy.addBook(b);
+ assertNotSame(b, b2);
+ assertEquals(124L, b2.getId());
+ assertEquals("CXF in Action - 2", b2.getName());
+ }
+
+ @Test
public void testAddGetBookRest() throws Exception {
String endpointAddress =
@@ -98,8 +307,8 @@
new BookSoapService(wsdlUrl,
new QName("http://books.com", "BookService"));
BookStoreJaxrsJaxws store = service.getBookPort();
- Book book = store.getBook(new Long(123));
- assertEquals("id is wrong", book.getId(), 123);
+ Book book = store.getBook(new Long(123L));
+ assertEquals("id is wrong", book.getId(), 123L);
}
private String getStringFromInputStream(InputStream in) throws Exception {
@@ -115,6 +324,29 @@
URLConnection connect = url.openConnection();
connect.addRequestProperty("Accept", "application/xml,text/plain");
+ connect.addRequestProperty("Content-Type", "*/*");
return connect.getInputStream();
}
+
+ private Book readBook(InputStream is) throws Exception {
+ JAXBContext c = JAXBContext.newInstance(new Class[]{Book.class});
+ Unmarshaller u = c.createUnmarshaller();
+ return (Book)u.unmarshal(is);
+ }
+
+ @Ignore
+ public static class TestResponseExceptionMapper implements ResponseExceptionMapper<BookNotFoundFault> {
+
+ public TestResponseExceptionMapper() {
+ }
+
+ public BookNotFoundFault fromResponse(Response r) {
+ Object value = r.getMetadata().getFirst("BOOK-HEADER");
+ if (value != null) {
+ return new BookNotFoundFault(value.toString());
+ }
+ throw new WebApplicationException();
+ }
+
+ }
}
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=755619&r1=755618&r2=755619&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 Wed Mar 18 15:41:14 2009
@@ -35,7 +35,6 @@
<import resource="classpath:META-INF/cxf/cxf-extension-jaxrs-binding.xml" />
<import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
-
<jaxws:endpoint xmlns:s="http://books.com"
serviceName="s:BookService"
endpointName="s:BookPort"
@@ -49,9 +48,8 @@
<ref bean="bookstore"/>
</jaxrs:serviceBeans>
</jaxrs:server>
- <bean id="bookstore" class="org.apache.cxf.systest.jaxrs.BookStoreSoapRestImpl">
- </bean>
-
+ <bean id="bookstore" class="org.apache.cxf.systest.jaxrs.BookStoreSoapRestImpl"/>
+
<jaxws:endpoint xmlns:s="http://books.com"
serviceName="s:BookService"
endpointName="s:BookPort"
@@ -65,8 +63,7 @@
<ref bean="bookstore2"/>
</jaxrs:serviceBeans>
</jaxrs:server>
- <bean id="bookstore2" class="org.apache.cxf.systest.jaxrs.BookStoreSoapRestImpl2">
- </bean>
+ <bean id="bookstore2" class="org.apache.cxf.systest.jaxrs.BookStoreSoapRestImpl2"/>
</beans>
<!-- END SNIPPET: beans -->