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 2015/02/09 12:27:05 UTC
cxf git commit: [CXF-6200] Adding another test,
making it easier to deal with the main case where a default model
class is used to match only
Repository: cxf
Updated Branches:
refs/heads/master 5f125f514 -> 5b67b2f08
[CXF-6200] Adding another test, making it easier to deal with the main case where a default model class is used to match only
Project: http://git-wip-us.apache.org/repos/asf/cxf/repo
Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/5b67b2f0
Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/5b67b2f0
Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/5b67b2f0
Branch: refs/heads/master
Commit: 5b67b2f086c5691e41dcfe710f39f569acda28c2
Parents: 5f125f5
Author: Sergey Beryozkin <sb...@talend.com>
Authored: Mon Feb 9 11:26:42 2015 +0000
Committer: Sergey Beryozkin <sb...@talend.com>
Committed: Mon Feb 9 11:26:42 2015 +0000
----------------------------------------------------------------------
.../org/apache/cxf/jaxrs/utils/JAXRSUtils.java | 2 +-
...AXRSClientServerUserResourceDefaultTest.java | 40 ++++++++++++++++++--
2 files changed, 37 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cxf/blob/5b67b2f0/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java
----------------------------------------------------------------------
diff --git a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java
index 8341e7c..c3dec62 100644
--- a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java
+++ b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java
@@ -764,7 +764,7 @@ public final class JAXRSUtils {
Class<?>[] parameterTypes = ori.getInParameterTypes();
List<Parameter> paramsInfo = ori.getParameters();
boolean preferModelParams = paramsInfo.size() > parameterTypes.length
- && PropertyUtils.isTrue(message.getContextualProperty("org.apache.cxf.preferModelParameters"));
+ && !PropertyUtils.isTrue(message.getContextualProperty("org.apache.cxf.preferMethodParameters"));
int parameterTypesLengh = preferModelParams ? paramsInfo.size() : parameterTypes.length;
http://git-wip-us.apache.org/repos/asf/cxf/blob/5b67b2f0/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerUserResourceDefaultTest.java
----------------------------------------------------------------------
diff --git a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerUserResourceDefaultTest.java b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerUserResourceDefaultTest.java
index 259a114..8801b93 100644
--- a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerUserResourceDefaultTest.java
+++ b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerUserResourceDefaultTest.java
@@ -34,11 +34,14 @@ import javax.ws.rs.container.ContainerRequestFilter;
import javax.ws.rs.container.PreMatching;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Request;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriInfo;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.Unmarshaller;
+import javax.xml.transform.Source;
+import javax.xml.transform.sax.SAXSource;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.methods.GetMethod;
@@ -91,9 +94,18 @@ public class JAXRSClientServerUserResourceDefaultTest extends AbstractBusClientS
op2.setVerb("POST");
op2.setParameters(Collections.singletonList(new Parameter(ParameterType.REQUEST_BODY, null)));
+ UserOperation op3 = new UserOperation();
+ op3.setPath("echobookdefault");
+ op3.setName("echoDefault");
+ op3.setVerb("POST");
+ Parameter echoDefaultParam = new Parameter(ParameterType.REQUEST_BODY, null);
+ echoDefaultParam.setJavaType(SAXSource.class);
+ op3.setParameters(Collections.singletonList(echoDefaultParam));
+
List<UserOperation> ops = new ArrayList<UserOperation>();
ops.add(op);
ops.add(op2);
+ ops.add(op3);
ur.setOperations(ops);
@@ -149,6 +161,14 @@ public class JAXRSClientServerUserResourceDefaultTest extends AbstractBusClientS
assertEquals(333L, b.getId());
}
+ @Test
+ public void testEchoBookDefault() throws Exception {
+ WebClient wc = WebClient.create("http://localhost:" + PORT + "/default/echobookdefault");
+ Book b = wc.type("application/xml").accept("application/xml").post(new Book("echo", 444L), Book.class);
+ assertEquals("echo", b.getName());
+ assertEquals(444L, b.getId());
+ }
+
private void getAndCompare(String address,
String acceptType,
int expectedStatus,
@@ -204,13 +224,18 @@ public class JAXRSClientServerUserResourceDefaultTest extends AbstractBusClientS
public Object invoke(Exchange exchange, Object request, Object resourceObject) {
MessageContext mc = new MessageContextImpl(exchange.getInMessage());
List<Object> params = CastUtils.cast((List<?>)request);
- if (params.size() == 1 && "999".equals(params.get(0))) {
+ String path = mc.getUriInfo().getPath();
+ if ("default/books/999".equals(path)) {
Long bookId = Long.valueOf(params.get(0).toString());
Book book = new Book("CXF in Action", bookId);
Response r = Response.ok(book,
mc.getHttpHeaders().getAcceptableMediaTypes().get(0)).build();
return new MessageContentsList(r);
- } else {
+ } else if ("default/echobookdefault".equals(path)) {
+ Source source = (Source)params.get(0);
+ Response r = Response.ok(source, MediaType.APPLICATION_ATOM_XML_TYPE).build();
+ return new MessageContentsList(r);
+ } else {
return super.invoke(exchange, request, resourceObject);
}
@@ -219,8 +244,15 @@ public class JAXRSClientServerUserResourceDefaultTest extends AbstractBusClientS
@PreMatching
private static class PreMatchContainerRequestFilter implements ContainerRequestFilter {
public void filter(ContainerRequestContext context) throws IOException {
- if (context.getUriInfo().getRequestUri().toString().endsWith("999")) {
- JAXRSUtils.getCurrentMessage().put("org.apache.cxf.preferModelParameters", true);
+ String path = context.getUriInfo().getPath();
+ if (path.endsWith("123")) {
+ // Setting this property makes sense only if we have a user model,
+ // default service class, a number of method parameters described
+ // in the model not matching a number of the matched method's parameters,
+ // and this method is actually expected to be invoked (testGetBookInvokeService)
+ // which is rare for a model-only case, typically a custom invoker would manage
+ // the actual processing of the request
+ JAXRSUtils.getCurrentMessage().put("org.apache.cxf.preferMethodParameters", true);
}
}