This is an automated email from the ASF dual-hosted git repository. reta 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 f0541e8 Added a test case for @Multipart and form-data f0541e8 is described below commit f0541e8cda2a323377b0decf0fd53a6a2cc3e766 Author: reta <drr...@gmail.com> AuthorDate: Wed Aug 12 20:46:15 2020 -0400 Added a test case for @Multipart and form-data --- .../cxf/systest/jaxrs/JAXRSMultipartTest.java | 33 ++++++++++++++++++++++ .../apache/cxf/systest/jaxrs/MultipartStore.java | 12 ++++++++ 2 files changed, 45 insertions(+) diff --git a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSMultipartTest.java b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSMultipartTest.java index ce485b4..ba9292e 100644 --- a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSMultipartTest.java +++ b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSMultipartTest.java @@ -27,6 +27,7 @@ import java.io.InputStream; import java.io.PushbackInputStream; import java.lang.annotation.Annotation; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.LinkedHashMap; @@ -37,6 +38,9 @@ import java.util.Map; import javax.activation.DataHandler; import javax.imageio.ImageIO; import javax.mail.util.ByteArrayDataSource; +import javax.ws.rs.client.ClientBuilder; +import javax.ws.rs.client.Entity; +import javax.ws.rs.client.WebTarget; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.MultivaluedHashMap; import javax.ws.rs.core.MultivaluedMap; @@ -44,6 +48,8 @@ import javax.ws.rs.core.Response; import javax.xml.bind.JAXBContext; import javax.xml.bind.Unmarshaller; +import com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider; + import org.apache.cxf.ext.logging.LoggingInInterceptor; import org.apache.cxf.ext.logging.LoggingOutInterceptor; import org.apache.cxf.helpers.FileUtils; @@ -52,6 +58,7 @@ import org.apache.cxf.jaxrs.client.JAXRSClientFactory; import org.apache.cxf.jaxrs.client.JAXRSClientFactoryBean; import org.apache.cxf.jaxrs.client.WebClient; import org.apache.cxf.jaxrs.ext.multipart.Attachment; +import org.apache.cxf.jaxrs.ext.multipart.AttachmentBuilder; import org.apache.cxf.jaxrs.ext.multipart.ContentDisposition; import org.apache.cxf.jaxrs.ext.multipart.InputStreamDataSource; import org.apache.cxf.jaxrs.ext.multipart.MultipartBody; @@ -72,10 +79,12 @@ import org.apache.http.util.EntityUtils; import org.junit.BeforeClass; import org.junit.Test; +import static org.hamcrest.CoreMatchers.equalTo; import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNotSame; +import static org.junit.Assert.assertThat; import static org.junit.Assert.assertTrue; public class JAXRSMultipartTest extends AbstractBusClientServerTestBase { @@ -1009,6 +1018,30 @@ public class JAXRSMultipartTest extends AbstractBusClientServerTestBase { client.close(); } + @Test + public void testUpdateBookMultipart() { + final WebTarget target = ClientBuilder + .newClient() + .register(JacksonJsonProvider.class) + .target("http://localhost:" + PORT + "/bookstore"); + + final MultipartBody builder = new MultipartBody(Arrays.asList( + new AttachmentBuilder() + .id("name") + .contentDisposition(new ContentDisposition("form-data; name=\"name\"")) + .object("The Book") + .build() + )); + + try (Response response = target + .path("1") + .request() + .put(Entity.entity(builder, MediaType.MULTIPART_FORM_DATA))) { + assertThat(response.getStatus(), equalTo(200)); + assertThat(response.readEntity(Book.class).getName(), equalTo("The Book")); + } + } + private void doAddBook(String address, String resourceName, int status) throws Exception { doAddBook("multipart/related", address, resourceName, status); } diff --git a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/MultipartStore.java b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/MultipartStore.java index b109af9..a1a7c60 100644 --- a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/MultipartStore.java +++ b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/MultipartStore.java @@ -36,7 +36,9 @@ import javax.ws.rs.Consumes; import javax.ws.rs.FormParam; import javax.ws.rs.GET; import javax.ws.rs.POST; +import javax.ws.rs.PUT; import javax.ws.rs.Path; +import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import javax.ws.rs.WebApplicationException; import javax.ws.rs.core.Context; @@ -763,6 +765,16 @@ public class MultipartStore { b.setName("CXF in Action - 2"); return Response.ok(b).build(); } + + @PUT + @Path("{id}") + @Produces({ MediaType.APPLICATION_JSON }) + @Consumes({ MediaType.MULTIPART_FORM_DATA }) + public Response updateBook(@PathParam("id") long id, @Multipart("name") String name) { + Book book = new Book(name, id); + return Response.ok().entity(book).build(); + } + private Response readBookFromInputStream(InputStream is) throws Exception { JAXBContext c = JAXBContext.newInstance(new Class[]{Book.class}); Unmarshaller u = c.createUnmarshaller();