Author: sergeyb Date: Thu Dec 13 12:49:02 2012 New Revision: 1421264 URL: http://svn.apache.org/viewvc?rev=1421264&view=rev Log: Merged revisions 1421253 via svnmerge from https://svn.apache.org/repos/asf/cxf/branches/2.6.x-fixes
................ r1421253 | sergeyb | 2012-12-13 12:35:02 +0000 (Thu, 13 Dec 2012) | 13 lines Merged revisions 1421245,1421247 via svnmerge from https://svn.apache.org/repos/asf/cxf/trunk ........ r1421245 | sergeyb | 2012-12-13 12:27:08 +0000 (Thu, 13 Dec 2012) | 1 line [CXF-4697] Fixing MultipartProvider to correctly read Maps by applying a quality patch from William Tam ........ r1421247 | sergeyb | 2012-12-13 12:30:57 +0000 (Thu, 13 Dec 2012) | 1 line [CXF-4697] Adding a test resource ........ ................ Added: cxf/branches/2.5.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/resources/attachmentFormMixed - copied unchanged from r1421253, cxf/branches/2.6.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/resources/attachmentFormMixed Modified: cxf/branches/2.5.x-fixes/ (props changed) cxf/branches/2.5.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/MultipartProvider.java cxf/branches/2.5.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSMultipartTest.java cxf/branches/2.5.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/MultipartStore.java Propchange: cxf/branches/2.5.x-fixes/ ------------------------------------------------------------------------------ Merged /cxf/trunk:r1421245-1421247 Merged /cxf/branches/2.6.x-fixes:r1421253 Propchange: cxf/branches/2.5.x-fixes/ ------------------------------------------------------------------------------ Binary property 'svnmerge-integrated' - no diff available. Modified: cxf/branches/2.5.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/MultipartProvider.java URL: http://svn.apache.org/viewvc/cxf/branches/2.5.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/MultipartProvider.java?rev=1421264&r1=1421263&r2=1421264&view=diff ============================================================================== --- cxf/branches/2.5.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/MultipartProvider.java (original) +++ cxf/branches/2.5.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/provider/MultipartProvider.java Thu Dec 13 12:49:02 2012 @@ -141,7 +141,7 @@ public class MultipartProvider extends A && AnnotationUtils.getAnnotation(anns, Multipart.class) == null) { return getAttachmentCollection(t, infos, anns); } - if (Map.class.isAssignableFrom(c)) { + if (c.isAssignableFrom(Map.class)) { Map<String, Object> map = new LinkedHashMap<String, Object>(infos.size()); Class<?> actual = getActualType(t, 1); for (Attachment a : infos) { Modified: cxf/branches/2.5.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSMultipartTest.java URL: http://svn.apache.org/viewvc/cxf/branches/2.5.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSMultipartTest.java?rev=1421264&r1=1421263&r2=1421264&view=diff ============================================================================== --- cxf/branches/2.5.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSMultipartTest.java (original) +++ cxf/branches/2.5.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSMultipartTest.java Thu Dec 13 12:49:02 2012 @@ -244,6 +244,12 @@ public class JAXRSMultipartTest extends } @Test + public void testAddBookMixedMultiValueMapParameter() throws Exception { + String address = "http://localhost:" + PORT + "/bookstore/books/mixedmultivaluedmap"; + doAddBook("multipart/mixed", address, "attachmentFormMixed", 200); + } + + @Test public void testAddBookAsJAXBJSON() throws Exception { String address = "http://localhost:" + PORT + "/bookstore/books/jaxbjson"; doAddBook(address, "attachmentData2", 200); Modified: cxf/branches/2.5.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/MultipartStore.java URL: http://svn.apache.org/viewvc/cxf/branches/2.5.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/MultipartStore.java?rev=1421264&r1=1421263&r2=1421264&view=diff ============================================================================== --- cxf/branches/2.5.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/MultipartStore.java (original) +++ cxf/branches/2.5.x-fixes/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/MultipartStore.java Thu Dec 13 12:49:02 2012 @@ -652,6 +652,36 @@ public class MultipartStore { throw new WebApplicationException(); } + @POST + @Path("/books/mixedmultivaluedmap") + @Consumes("multipart/mixed") + @Produces("text/xml") + public Response addBookFromFormConsumesMixed( + @Multipart(value = "mapdata", type = MediaType.APPLICATION_FORM_URLENCODED) + MultivaluedMap<String, String> data, + @Multipart(value = "test-cid", type = MediaType.APPLICATION_XML) + String testXml) throws Exception { + if (!"Dreams".equals(data.get("id-name").get(0))) { + throw new Exception("Map entry 0 does not match"); + } + if (!"True".equals(data.get("entity-name").get(0))) { + throw new Exception("Map entry 1 does not match"); + } + if (!"NAT5\n".equals(data.get("native-id").get(0))) { + throw new Exception("Map entry 2 does not match"); + } + if (data.size() != 3) { + throw new Exception("Map size does not match"); + } + if ("<hello>World2</hello>".equals(testXml)) { + throw new Exception("testXml does not match"); + } + + Book b = new Book(); + b.setId(124); + b.setName("CXF in Action - 2"); + return Response.ok(b).build(); + } private Response readBookFromInputStream(InputStream is) throws Exception { JAXBContext c = JAXBContext.newInstance(new Class[]{Book.class}); Unmarshaller u = c.createUnmarshaller();
