Please unsubscribe me On Tue, 11 Sept 2018, 1:13 am , <[email protected]> wrote:
> This is an automated email from the ASF dual-hosted git repository. > > coheigea pushed a commit to branch master > in repository https://gitbox.apache.org/repos/asf/cxf.git > > > The following commit(s) were added to refs/heads/master by this push: > new 84a6fb5 CXF-7332 - JAXRS Client API doesnt support lambda > 84a6fb5 is described below > > commit 84a6fb5de9a324b5f79b2358cf6f4ed7d562333a > Author: Colm O hEigeartaigh <[email protected]> > AuthorDate: Mon Sep 10 16:13:08 2018 +0100 > > CXF-7332 - JAXRS Client API doesnt support lambda > --- > .../cxf/jaxrs/client/ClientProviderFactory.java | 4 ++ > .../systest/jaxrs/JAXRS20ClientServerBookTest.java | 45 > ++++++++++++++++++++-- > 2 files changed, 46 insertions(+), 3 deletions(-) > > diff --git > a/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/ClientProviderFactory.java > b/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/ClientProviderFactory.java > index 8807f99..8100309 100644 > --- > a/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/ClientProviderFactory.java > +++ > b/rt/rs/client/src/main/java/org/apache/cxf/jaxrs/client/ClientProviderFactory.java > @@ -74,6 +74,10 @@ public final class ClientProviderFactory extends > ProviderFactory { > super.setCommonProviders(theProviders); > for (ProviderInfo<? extends Object> provider : theProviders) { > Class<?> providerCls = ClassHelper.getRealClass(getBus(), > provider.getProvider()); > + if (providerCls == Object.class) { > + // If the provider is a lambda, ClassHelper.getRealClass > returns Object.class > + providerCls = provider.getProvider().getClass(); > + } > if (filterContractSupported(provider, providerCls, > ClientRequestFilter.class)) { > addProviderToList(clientRequestFilters, provider); > } > diff --git > a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRS20ClientServerBookTest.java > b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRS20ClientServerBookTest.java > index f3b37a8..d2bc099 100644 > --- > a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRS20ClientServerBookTest.java > +++ > b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRS20ClientServerBookTest.java > @@ -119,7 +119,7 @@ public class JAXRS20ClientServerBookTest extends > AbstractBusClientServerTestBase > Book book = > echoEndpointTarget.request().accept("text/xml").get(Book.class); > assertEquals(1023L, book.getId()); > } > - > + > @Test > public void testGetGenericBook() throws Exception { > String address = "http://localhost:" + PORT + > "/bookstore/genericbooks/123"; > @@ -281,7 +281,7 @@ public class JAXRS20ClientServerBookTest extends > AbstractBusClientServerTestBase > > response.getHeaderString("ServerWriterInterceptorHttpResponse")); > assertEquals("text/plain;charset=us-ascii", > response.getMediaType().toString()); > } > - > + > @Test > public void testPreMatchContainerFilterThrowsIOException() { > String address = "http://localhost:" + PORT + > "/throwExceptionIO"; > @@ -720,6 +720,28 @@ public class JAXRS20ClientServerBookTest extends > AbstractBusClientServerTestBase > } > > @Test > + public void testClientFiltersLocalResponseLambdas() { > + String address = "http://localhost:" + PORT + "/bookstores"; > + List<Object> providers = new ArrayList<>(); > + > + providers.add((ClientRequestFilter) ctx -> { > + > ctx.abortWith(Response.status(201).entity(ctx.getEntity()).type(MediaType.TEXT_XML_TYPE).build()); > + }); > + > + providers.add((ClientResponseFilter) (reqContext, respContext) -> > { > + MultivaluedMap<String, String> headers = > respContext.getHeaders(); > + headers.putSingle(HttpHeaders.LOCATION, " > http://localhost/redirect"); > + }); > + WebClient wc = WebClient.create(address, providers); > + Book theBook = new Book("Echo", 123L); > + Response r = wc.post(theBook); > + assertEquals(201, r.getStatus()); > + assertEquals("http://localhost/redirect", > r.getHeaderString(HttpHeaders.LOCATION)); > + Book responseBook = r.readEntity(Book.class); > + assertSame(theBook, responseBook); > + } > + > + @Test > public void testPostBook() { > String address = "http://localhost:" + PORT + > "/bookstore/bookheaders/simple"; > WebClient wc = createWebClientPost(address); > @@ -834,7 +856,7 @@ public class JAXRS20ClientServerBookTest extends > AbstractBusClientServerTestBase > ExceptionUtils.getRootCause(e) instanceof > UnknownHostException); > } > } > - > + > @Test > public void testGetSetEntityStream() { > String address = "http://localhost:" + PORT + > "/bookstore/entityecho"; > @@ -856,6 +878,23 @@ public class JAXRS20ClientServerBookTest extends > AbstractBusClientServerTestBase > assertEquals(entity, response.readEntity(String.class)); > } > > + @Test > + public void testGetSetEntityStreamLambda() { > + String address = "http://localhost:" + PORT + > "/bookstore/entityecho"; > + String entity = "BOOKSTORE"; > + > + Client client = ClientBuilder.newClient(); > + client.register((ClientRequestFilter) context -> { > + context.setEntityStream(new > ReplacingOutputStream(context.getEntityStream(), 'X', 'O')); > + }); > + > + WebTarget target = client.target(address); > + > + Response response = target.request().post( > + Entity.entity(entity.replace('O', 'X'), "text/plain")); > + assertEquals(entity, response.readEntity(String.class)); > + } > + > private static class ReplaceBodyFilter implements ClientRequestFilter > { > > @Override > >
