You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by re...@apache.org on 2020/08/13 00:47:01 UTC
[cxf] branch master updated: Added a test case for @Multipart and
form-data
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 <dr...@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();