Return-Path: X-Original-To: apmail-cxf-commits-archive@www.apache.org Delivered-To: apmail-cxf-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 3367510D3D for ; Fri, 18 Oct 2013 14:07:56 +0000 (UTC) Received: (qmail 39755 invoked by uid 500); 18 Oct 2013 14:07:51 -0000 Delivered-To: apmail-cxf-commits-archive@cxf.apache.org Received: (qmail 39616 invoked by uid 500); 18 Oct 2013 14:07:46 -0000 Mailing-List: contact commits-help@cxf.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@cxf.apache.org Delivered-To: mailing list commits@cxf.apache.org Received: (qmail 39609 invoked by uid 99); 18 Oct 2013 14:07:46 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 18 Oct 2013 14:07:46 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 18 Oct 2013 14:07:42 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id 53F2C2388A32; Fri, 18 Oct 2013 14:07:21 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: 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/ Date: Fri, 18 Oct 2013 14:07:21 -0000 To: commits@cxf.apache.org From: sergeyb@apache.org X-Mailer: svnmailer-1.0.9 Message-Id: <20131018140721.53F2C2388A32@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org 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 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"; }