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/06/17 19:17:44 UTC
svn commit: r785734 - in /cxf/trunk/rt/frontend/jaxrs/src:
main/java/org/apache/cxf/jaxrs/interceptor/
main/java/org/apache/cxf/jaxrs/model/wadl/
main/java/org/apache/cxf/jaxrs/provider/
test/java/org/apache/cxf/jaxrs/model/wadl/
Author: sergeyb
Date: Wed Jun 17 17:17:44 2009
New Revision: 785734
URL: http://svn.apache.org/viewvc?rev=785734&view=rev
Log:
JAXRS: retrieval of wadl, just to facilitate DOSGI testing, wadl support is still primitive
Modified:
cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/interceptor/JAXRSInInterceptor.java
cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/interceptor/JAXRSOutInterceptor.java
cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/model/wadl/WadlGenerator.java
cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ProviderFactory.java
cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/model/wadl/WadlGeneratorTest.java
Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/interceptor/JAXRSInInterceptor.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/interceptor/JAXRSInInterceptor.java?rev=785734&r1=785733&r2=785734&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/interceptor/JAXRSInInterceptor.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/interceptor/JAXRSInInterceptor.java Wed Jun 17 17:17:44 2009
@@ -126,10 +126,11 @@
String httpMethod = (String)message.get(Message.HTTP_REQUEST_METHOD);
OperationResourceInfo ori = null;
+ boolean operChecked = false;
List<ProviderInfo<RequestHandler>> shs = ProviderFactory.getInstance(message).getRequestHandlers();
for (ProviderInfo<RequestHandler> sh : shs) {
String newAcceptTypes = (String)message.get(Message.ACCEPT_CONTENT_TYPE);
- if (!acceptTypes.equals(newAcceptTypes) || ori == null) {
+ if (!acceptTypes.equals(newAcceptTypes) || (ori == null && !operChecked)) {
acceptTypes = newAcceptTypes;
acceptContentTypes = JAXRSUtils.sortMediaTypes(newAcceptTypes);
message.getExchange().put(Message.ACCEPT_CONTENT_TYPE, acceptContentTypes);
@@ -143,17 +144,11 @@
ori = JAXRSUtils.findTargetMethod(resource,
values.getFirst(URITemplate.FINAL_MATCH_GROUP), httpMethod, values,
requestContentType, acceptContentTypes);
+ message.getExchange().put(OperationResourceInfo.class, ori);
} catch (WebApplicationException ex) {
- if (ex.getResponse() != null && ex.getResponse().getStatus() == 405
- && "OPTIONS".equalsIgnoreCase(httpMethod)) {
- Response response = JAXRSUtils.createResponseBuilder(resource, 200, true).build();
- message.getExchange().put(Response.class, response);
- return;
- } else {
- throw ex;
- }
+ operChecked = true;
}
- message.getExchange().put(OperationResourceInfo.class, ori);
+
}
Response response = sh.getProvider().handleRequest(message, resource);
if (response != null) {
@@ -173,9 +168,20 @@
rawPath,
values);
}
- ori = JAXRSUtils.findTargetMethod(resource, values.getFirst(URITemplate.FINAL_MATCH_GROUP),
- httpMethod, values, requestContentType, acceptContentTypes);
- message.getExchange().put(OperationResourceInfo.class, ori);
+ try {
+ ori = JAXRSUtils.findTargetMethod(resource, values.getFirst(URITemplate.FINAL_MATCH_GROUP),
+ httpMethod, values, requestContentType, acceptContentTypes);
+ message.getExchange().put(OperationResourceInfo.class, ori);
+ } catch (WebApplicationException ex) {
+ if (ex.getResponse() != null && ex.getResponse().getStatus() == 405
+ && "OPTIONS".equalsIgnoreCase(httpMethod)) {
+ Response response = JAXRSUtils.createResponseBuilder(resource, 200, true).build();
+ message.getExchange().put(Response.class, response);
+ return;
+ } else {
+ throw ex;
+ }
+ }
}
Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/interceptor/JAXRSOutInterceptor.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/interceptor/JAXRSOutInterceptor.java?rev=785734&r1=785733&r2=785734&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/interceptor/JAXRSOutInterceptor.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/interceptor/JAXRSOutInterceptor.java Wed Jun 17 17:17:44 2009
@@ -134,7 +134,7 @@
int status = response.getStatus();
Object responseObj = response.getEntity();
if (status == 200 && !isResponseNull(responseObj) && firstTry
- && JAXRSUtils.headMethodPossible(ori.getHttpMethod(),
+ && ori != null && JAXRSUtils.headMethodPossible(ori.getHttpMethod(),
(String)message.getExchange().getInMessage().get(Message.HTTP_REQUEST_METHOD))) {
LOG.info(new org.apache.cxf.common.i18n.Message("HEAD_WITHOUT_ENTITY", BUNDLE).toString());
responseObj = null;
Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/model/wadl/WadlGenerator.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/model/wadl/WadlGenerator.java?rev=785734&r1=785733&r2=785734&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/model/wadl/WadlGenerator.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/model/wadl/WadlGenerator.java Wed Jun 17 17:17:44 2009
@@ -49,6 +49,10 @@
public Response handleRequest(Message m, ClassResourceInfo resource) {
+ if (!"GET".equals(m.get(Message.HTTP_REQUEST_METHOD))) {
+ return null;
+ }
+
UriInfo ui = new UriInfoImpl(m);
if (!ui.getQueryParameters().containsKey(WADL_QUERY)) {
return null;
Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ProviderFactory.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ProviderFactory.java?rev=785734&r1=785733&r2=785734&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ProviderFactory.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/ProviderFactory.java Wed Jun 17 17:17:44 2009
@@ -46,6 +46,7 @@
import org.apache.cxf.jaxrs.impl.RequestPreprocessor;
import org.apache.cxf.jaxrs.impl.WebApplicationExceptionMapper;
import org.apache.cxf.jaxrs.model.ProviderInfo;
+import org.apache.cxf.jaxrs.model.wadl.WadlGenerator;
import org.apache.cxf.jaxrs.utils.InjectionUtils;
import org.apache.cxf.jaxrs.utils.JAXRSUtils;
import org.apache.cxf.message.Message;
@@ -77,7 +78,8 @@
new PrimitiveTextProvider(),
new MultipartProvider(),
new WebApplicationExceptionMapper(),
- new SystemQueryHandler());
+ new SystemQueryHandler(),
+ new WadlGenerator());
}
private List<ProviderInfo<MessageBodyReader>> messageReaders =
Modified: cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/model/wadl/WadlGeneratorTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/model/wadl/WadlGeneratorTest.java?rev=785734&r1=785733&r2=785734&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/model/wadl/WadlGeneratorTest.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/model/wadl/WadlGeneratorTest.java Wed Jun 17 17:17:44 2009
@@ -87,6 +87,7 @@
EasyMock.expectLastCall().andReturn(epr).anyTimes();
m.put(Message.REQUEST_URI, pathInfo);
m.put(Message.QUERY_STRING, query);
+ m.put(Message.HTTP_REQUEST_METHOD, "GET");
control.replay();
return m;
}