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 2013/10/18 16:07:21 UTC
svn commit: r1533457 - in /cxf/trunk:
rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/spec/
systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/
Author: sergeyb
Date: Fri Oct 18 14:07:20 2013
New Revision: 1533457
URL: http://svn.apache.org/r1533457
Log:
[CXF-5343,CXF-5316] Updating the phase of ClientRequestFilterInterceptor, adding a test to confirm that changing Content-Type in server filter affects the method selection
Modified:
cxf/trunk/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/spec/ClientRequestFilterInterceptor.java
cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookServer20.java
cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookStore.java
cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRS20ClientServerBookTest.java
Modified: cxf/trunk/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/spec/ClientRequestFilterInterceptor.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/spec/ClientRequestFilterInterceptor.java?rev=1533457&r1=1533456&r2=1533457&view=diff
==============================================================================
--- cxf/trunk/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/spec/ClientRequestFilterInterceptor.java (original)
+++ cxf/trunk/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/spec/ClientRequestFilterInterceptor.java Fri Oct 18 14:07:20 2013
@@ -40,7 +40,7 @@ import org.apache.cxf.transport.MessageO
public class ClientRequestFilterInterceptor extends AbstractOutDatabindingInterceptor {
public ClientRequestFilterInterceptor() {
- super(Phase.WRITE);
+ super(Phase.PRE_LOGICAL);
}
public void handleMessage(Message outMessage) throws Fault {
Modified: cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookServer20.java
URL: http://svn.apache.org/viewvc/cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookServer20.java?rev=1533457&r1=1533456&r2=1533457&view=diff
==============================================================================
--- cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookServer20.java (original)
+++ cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookServer20.java Fri Oct 18 14:07:20 2013
@@ -148,6 +148,11 @@ public class BookServer20 extends Abstra
context.setMethod("POST");
}
context.getHeaders().putSingle("Content-Type", "application/xml");
+ } else {
+ String newMt = context.getHeaderString("newmediatype");
+ if (newMt != null) {
+ context.getHeaders().putSingle("Content-Type", newMt);
+ }
}
List<MediaType> acceptTypes = context.getAcceptableMediaTypes();
if (acceptTypes.size() == 1 && acceptTypes.get(0).toString().equals("text/mistypedxml")) {
Modified: cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookStore.java
URL: http://svn.apache.org/viewvc/cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookStore.java?rev=1533457&r1=1533456&r2=1533457&view=diff
==============================================================================
--- cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookStore.java (original)
+++ cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookStore.java Fri Oct 18 14:07:20 2013
@@ -636,12 +636,40 @@ public class BookStore {
@Path("/bookheaders/simple/")
@CustomHeaderAdded
@PostMatchMode
+ @Consumes("application/xml")
public Response echoBookByHeaderSimple(Book book,
+ @HeaderParam("Content-type") String ct,
@HeaderParam("BOOK") String headerBook,
@HeaderParam("Simple") String headerSimple,
@HeaderParam("ServerReaderInterceptor") String serverInterceptorHeader,
@HeaderParam("ClientWriterInterceptor") String clientInterceptorHeader) throws Exception {
-
+ if (!"application/xml".equals(ct)) {
+ throw new RuntimeException();
+ }
+ ResponseBuilder builder = getBookByHeaderSimpleBuilder(headerBook, headerSimple);
+ if (serverInterceptorHeader != null) {
+ builder.header("ServerReaderInterceptor", serverInterceptorHeader);
+ }
+ if (clientInterceptorHeader != null) {
+ builder.header("ClientWriterInterceptor", clientInterceptorHeader);
+ }
+ return builder.build();
+ }
+
+ @POST
+ @Path("/bookheaders/simple/")
+ @CustomHeaderAdded
+ @PostMatchMode
+ @Consumes("application/v1+xml")
+ public Response echoBookByHeaderSimple2(Book book,
+ @HeaderParam("Content-type") String ct,
+ @HeaderParam("BOOK") String headerBook,
+ @HeaderParam("Simple") String headerSimple,
+ @HeaderParam("ServerReaderInterceptor") String serverInterceptorHeader,
+ @HeaderParam("ClientWriterInterceptor") String clientInterceptorHeader) throws Exception {
+ if (!"application/v1+xml".equals(ct)) {
+ throw new RuntimeException();
+ }
ResponseBuilder builder = getBookByHeaderSimpleBuilder(headerBook, headerSimple);
if (serverInterceptorHeader != null) {
builder.header("ServerReaderInterceptor", serverInterceptorHeader);
@@ -649,6 +677,7 @@ public class BookStore {
if (clientInterceptorHeader != null) {
builder.header("ClientWriterInterceptor", clientInterceptorHeader);
}
+ builder.header("newmediatypeused", ct);
return builder.build();
}
@@ -658,13 +687,15 @@ public class BookStore {
@CustomHeaderAdded
@CustomHeaderAddedAsync
public Response echoBookByHeaderSimpleAsync(Book book,
+ @HeaderParam("Content-type") String ct,
@HeaderParam("BOOK") String headerBook,
@HeaderParam("Simple") String headerSimple,
@HeaderParam("ServerReaderInterceptor") String serverInterceptorHeader,
@HeaderParam("ClientWriterInterceptor") String clientInterceptorHeader)
throws Exception {
- return echoBookByHeaderSimple(book, headerBook, headerSimple, serverInterceptorHeader, clientInterceptorHeader);
+ return echoBookByHeaderSimple(book, ct, headerBook, headerSimple, serverInterceptorHeader,
+ clientInterceptorHeader);
}
private ResponseBuilder getBookByHeaderSimpleBuilder(@HeaderParam("BOOK") String headerBook,
Modified: cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRS20ClientServerBookTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRS20ClientServerBookTest.java?rev=1533457&r1=1533456&r2=1533457&view=diff
==============================================================================
--- cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRS20ClientServerBookTest.java (original)
+++ cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRS20ClientServerBookTest.java Fri Oct 18 14:07:20 2013
@@ -23,6 +23,7 @@ import java.io.IOException;
import java.io.InputStream;
import java.lang.annotation.Annotation;
import java.lang.reflect.Type;
+import java.net.URI;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
@@ -291,12 +292,12 @@ public class JAXRS20ClientServerBookTest
@Test
public void testReplaceBookMistypedCTAndHttpVerb() throws Exception {
- String endpointAddress = "http://localhost:" + PORT + "/bookstore/books2";
+ String endpointAddress = "http://localhost:" + PORT + "/bookstore/books2/mistyped";
WebClient wc = WebClient.create(endpointAddress,
Collections.singletonList(new ReplaceBodyFilter()));
WebClient.getConfig(wc).getHttpConduit().getClient().setReceiveTimeout(1000000L);
wc.accept("text/mistypedxml").type("text/xml").header("THEMETHOD", "PUT");
- Book book = wc.put(new Book("book", 555L), Book.class);
+ Book book = wc.invoke("DELETE", new Book("book", 555L), Book.class);
assertEquals(561L, book.getId());
}
@@ -533,6 +534,17 @@ public class JAXRS20ClientServerBookTest
}
@Test
+ public void testPostBookNewMediaType() {
+ String address = "http://localhost:" + PORT + "/bookstore/bookheaders/simple";
+ WebClient wc = createWebClientPost(address);
+ wc.header("newmediatype", "application/v1+xml");
+ Book book = wc.post(new Book("Book", 126L), Book.class);
+ assertEquals(124L, book.getId());
+ validatePostResponse(wc, false);
+ assertEquals("application/v1+xml", wc.getResponse().getHeaderString("newmediatypeused"));
+ }
+
+ @Test
public void testBookExistsServerStreamReplace() throws Exception {
String address = "http://localhost:" + PORT + "/bookstore/books/check2";
WebClient wc = WebClient.create(address);
@@ -571,7 +583,9 @@ public class JAXRS20ClientServerBookTest
String expectedMethod = null;
if (rc.getAcceptableMediaTypes().contains(MediaType.valueOf("text/mistypedxml"))
&& rc.getHeaders().getFirst("THEMETHOD") != null) {
- expectedMethod = "PUT";
+ expectedMethod = "DELETE";
+ rc.setUri(URI.create("http://localhost:" + PORT + "/bookstore/books2"));
+ rc.setMethod(rc.getHeaders().getFirst("THEMETHOD").toString());
} else {
expectedMethod = "POST";
}