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";
             }