private static void addBindValue(Map<String, Object> params, String key, List<?> values) { if (!CollectionUtils.isEmpty(values)) { values = values.stream() .map(value -> value instanceof FormFieldPart ? ((FormFieldPart) value).value() : value) .collect(Collectors.toList()); params.put(key, values.size() == 1 ? values.get(0) : values); } }
private static void addBindValue(Map<String, Object> params, String key, List<?> values) { if (!CollectionUtils.isEmpty(values)) { values = values.stream() .map(value -> value instanceof FormFieldPart ? ((FormFieldPart) value).value() : value) .collect(Collectors.toList()); params.put(key, values.size() == 1 ? values.get(0) : values); } }
private void assertBarPart(Part part) { assertEquals("barPart", part.name()); assertTrue(part instanceof FormFieldPart); assertEquals("bar", ((FormFieldPart) part).value()); } }
public Mono<ServerResponse> parts(ServerRequest request) { return request.body(BodyExtractors.toParts()).collectList() .flatMap(parts -> { try { assertEquals(2, parts.size()); assertEquals("foo.txt", ((FilePart) parts.get(0)).filename()); assertEquals("bar", ((FormFieldPart) parts.get(1)).value()); } catch(Exception e) { return Mono.error(e); } return ServerResponse.ok().build(); }); } }
public Mono<ServerResponse> multipartData(ServerRequest request) { return request .body(BodyExtractors.toMultipartData()) .flatMap(map -> { Map<String, Part> parts = map.toSingleValueMap(); try { assertEquals(2, parts.size()); assertEquals("foo.txt", ((FilePart) parts.get("fooPart")).filename()); assertEquals("bar", ((FormFieldPart) parts.get("barPart")).value()); } catch(Exception e) { return Mono.error(e); } return ServerResponse.ok().build(); }); }
assertTrue(part instanceof FormFieldPart); assertEquals("name 1", part.name()); assertEquals("value 1", ((FormFieldPart) part).value()); assertTrue(part instanceof FormFieldPart); assertEquals("name 2", part.name()); assertEquals("value 2+1", ((FormFieldPart) part).value()); part = parts2.get(1); assertTrue(part instanceof FormFieldPart); assertEquals("name 2", part.name()); assertEquals("value 2+2", ((FormFieldPart) part).value());
@Test public void resolveParts() { ServerHttpRequest request = generateMultipartRequest(); ResolvableType elementType = forClassWithGenerics(MultiValueMap.class, String.class, Part.class); MultiValueMap<String, Part> parts = this.reader.readMono(elementType, request, emptyMap()).block(); assertEquals(2, parts.size()); assertTrue(parts.containsKey("fooPart")); Part part = parts.getFirst("fooPart"); assertTrue(part instanceof FilePart); assertEquals("fooPart", part.name()); assertEquals("foo.txt", ((FilePart) part).filename()); DataBuffer buffer = DataBufferUtils.join(part.content()).block(); assertEquals(12, buffer.readableByteCount()); byte[] byteContent = new byte[12]; buffer.read(byteContent); assertEquals("Lorem Ipsum.", new String(byteContent)); assertTrue(parts.containsKey("barPart")); part = parts.getFirst("barPart"); assertTrue(part instanceof FormFieldPart); assertEquals("barPart", part.name()); assertEquals("bar", ((FormFieldPart) part).value()); }
@PostMapping("/requestPart") void requestPart( @RequestPart FormFieldPart fieldPart, @RequestPart("fileParts") FilePart fileParts, @RequestPart("fileParts") Mono<FilePart> filePartsMono, @RequestPart("fileParts") Flux<FilePart> filePartsFlux, @RequestPart("jsonPart") Person person, @RequestPart("jsonPart") Mono<Person> personMono) { assertEquals("fieldValue", fieldPart.value()); assertEquals("fileParts:foo.txt", partDescription(fileParts)); assertEquals("Jason", person.getName()); StepVerifier.create(partFluxDescription(filePartsFlux)) .consumeNextWith(content -> assertEquals("[fileParts:foo.txt,fileParts:logo.png]", content)) .verifyComplete(); StepVerifier.create(filePartsMono) .consumeNextWith(filePart -> assertEquals("fileParts:foo.txt", partDescription(filePart))) .verifyComplete(); StepVerifier.create(personMono) .consumeNextWith(p -> assertEquals("Jason", p.getName())) .verifyComplete(); }
assertTrue(part instanceof FormFieldPart); FormFieldPart formFieldPart = (FormFieldPart) part; assertEquals("text default", formFieldPart.value()); }) .consumeNextWith(part -> {
private static void addBindValue(Map<String, Object> params, String key, List<?> values) { if (!CollectionUtils.isEmpty(values)) { values = values.stream() .map(value -> value instanceof FormFieldPart ? ((FormFieldPart) value).value() : value) .collect(Collectors.toList()); params.put(key, values.size() == 1 ? values.get(0) : values); } }
private static void addBindValue(Map<String, Object> params, String key, List<?> values) { if (!CollectionUtils.isEmpty(values)) { values = values.stream() .map(value -> value instanceof FormFieldPart ? ((FormFieldPart) value).value() : value) .collect(Collectors.toList()); params.put(key, values.size() == 1 ? values.get(0) : values); } }
private MultiValueMap<String, String> multi(MultiValueMap<String, Part> body) { MultiValueMap<String, String> map = new LinkedMultiValueMap<>(); for (String key : body.keySet()) { for (Part part : body.get(key)) { if (part instanceof FormFieldPart) { FormFieldPart form = (FormFieldPart) part; map.add(key, form.value()); } } } return map; }
private MultiValueMap<String, String> multi(MultiValueMap<String, Part> body) { MultiValueMap<String, String> map = new LinkedMultiValueMap<>(); for (String key : body.keySet()) { for (Part part : body.get(key)) { if (part instanceof FormFieldPart) { FormFieldPart form = (FormFieldPart) part; map.add(key, form.value()); } } } return map; }