@Nullable private MultiValueMap<String, String> parseIfNecessary(HttpServletRequest request) throws IOException { if (!shouldParse(request)) { return null; } HttpInputMessage inputMessage = new ServletServerHttpRequest(request) { @Override public InputStream getBody() throws IOException { return request.getInputStream(); } }; return this.formConverter.read(null, inputMessage); }
private MultiValueMap<String, String> parseFormData(final MediaType mediaType) { HttpInputMessage message = new HttpInputMessage() { @Override public InputStream getBody() { return (content != null ? new ByteArrayInputStream(content) : StreamUtils.emptyInput()); } @Override public HttpHeaders getHeaders() { HttpHeaders headers = new HttpHeaders(); headers.setContentType(mediaType); return headers; } }; try { return new FormHttpMessageConverter().read(null, message); } catch (IOException ex) { throw new IllegalStateException("Failed to parse form data in request body", ex); } }
@Override protected void doFilterInternal(final HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { if (("PUT".equals(request.getMethod()) || "PATCH".equals(request.getMethod())) && isFormContentType(request)) { HttpInputMessage inputMessage = new ServletServerHttpRequest(request) { @Override public InputStream getBody() throws IOException { return request.getInputStream(); } }; MultiValueMap<String, String> formParameters = this.formConverter.read(null, inputMessage); if (!formParameters.isEmpty()) { HttpServletRequest wrapper = new HttpPutFormContentRequestWrapper(request, formParameters); filterChain.doFilter(wrapper, response); return; } } filterChain.doFilter(request, response); }
@Nullable private MultiValueMap<String, String> parseIfNecessary(HttpServletRequest request) throws IOException { if (!shouldParse(request)) { return null; } HttpInputMessage inputMessage = new ServletServerHttpRequest(request) { @Override public InputStream getBody() throws IOException { return request.getInputStream(); } }; return this.formConverter.read(null, inputMessage); }
/** * Parse the body as form data and compare to the given {@code MultiValueMap}. * @since 4.3 */ public RequestMatcher formData(final MultiValueMap<String, String> expectedContent) { return request -> { HttpInputMessage inputMessage = new HttpInputMessage() { @Override public InputStream getBody() throws IOException { MockClientHttpRequest mockRequest = (MockClientHttpRequest) request; return new ByteArrayInputStream(mockRequest.getBodyAsBytes()); } @Override public HttpHeaders getHeaders() { return request.getHeaders(); } }; FormHttpMessageConverter converter = new FormHttpMessageConverter(); assertEquals("Request content", expectedContent, converter.read(null, inputMessage)); }; }
public OAuth2Exception read(Class<? extends OAuth2Exception> clazz, HttpInputMessage inputMessage) throws IOException, HttpMessageNotReadableException { MultiValueMap<String, String> data = delegateMessageConverter.read(null, inputMessage); Map<String,String> flattenedData = data.toSingleValueMap(); return OAuth2Exception.valueOf(flattenedData); }
@Override protected OAuth2AccessToken readInternal(Class<? extends OAuth2AccessToken> clazz, HttpInputMessage inputMessage) throws IOException, HttpMessageNotReadableException { MultiValueMap<String, String> data = delegateMessageConverter.read(null, inputMessage); return DefaultOAuth2AccessToken.valueOf(data.toSingleValueMap()); }
@Override protected void doFilterInternal(final HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { if (("PUT".equals(request.getMethod()) || "PATCH".equals(request.getMethod())) && isFormContentType(request)) { HttpInputMessage inputMessage = new ServletServerHttpRequest(request) { @Override public InputStream getBody() throws IOException { return request.getInputStream(); } }; MultiValueMap<String, String> formParameters = this.formConverter.read(null, inputMessage); if (!formParameters.isEmpty()) { HttpServletRequest wrapper = new HttpPutFormContentRequestWrapper(request, formParameters); filterChain.doFilter(wrapper, response); return; } } filterChain.doFilter(request, response); }
@Test public void readForm() throws Exception { String body = "name+1=value+1&name+2=value+2%2B1&name+2=value+2%2B2&name+3"; MockHttpInputMessage inputMessage = new MockHttpInputMessage(body.getBytes(StandardCharsets.ISO_8859_1)); inputMessage.getHeaders().setContentType( new MediaType("application", "x-www-form-urlencoded", StandardCharsets.ISO_8859_1)); MultiValueMap<String, String> result = this.converter.read(null, inputMessage); assertEquals("Invalid result", 3, result.size()); assertEquals("Invalid result", "value 1", result.getFirst("name 1")); List<String> values = result.get("name 2"); assertEquals("Invalid result", 2, values.size()); assertEquals("Invalid result", "value 2+1", values.get(0)); assertEquals("Invalid result", "value 2+2", values.get(1)); assertNull("Invalid result", result.getFirst("name 3")); }
@Override protected AutologinRequest readInternal(Class<? extends AutologinRequest> clazz, HttpInputMessage inputMessage) throws IOException, HttpMessageNotReadableException { String username, password; if (isJsonContent(inputMessage.getHeaders().get(HttpHeaders.CONTENT_TYPE))) { Map<String, String> map = JsonUtils.readValue(stringConverter.read(String.class, inputMessage), new TypeReference<Map<String, String>>() {}); username = map.get("username"); password = map.get("password"); } else { MultiValueMap<String, String> map = formConverter.read(null, inputMessage); username = map.getFirst("username"); password = map.getFirst("password"); } AutologinRequest result = new AutologinRequest(); result.setUsername(username); result.setPassword(password); return result; }
public Map<String, String> read(Class<? extends Map<String, String>> clazz, HttpInputMessage inputMessage) throws IOException, HttpMessageNotReadableException { LinkedMultiValueMap<String, String> lmvm = new LinkedMultiValueMap<String, String>(); @SuppressWarnings("unchecked") Class<LinkedMultiValueMap<String, String>> mvmClazz = (Class<LinkedMultiValueMap<String, String>>) lmvm.getClass(); MultiValueMap<String, String> mvm = delegate.read(mvmClazz, inputMessage); return mvm.toSingleValueMap(); }
public Map<String, String> read(Class<? extends Map<String, String>> clazz, HttpInputMessage inputMessage) throws IOException, HttpMessageNotReadableException { LinkedMultiValueMap<String, String> lmvm = new LinkedMultiValueMap<String, String>(); @SuppressWarnings("unchecked") Class<LinkedMultiValueMap<String, String>> mvmClazz = (Class<LinkedMultiValueMap<String, String>>) lmvm.getClass(); MultiValueMap<String, String> mvm = delegate.read(mvmClazz, inputMessage); return mvm.toSingleValueMap(); }
@Nullable private MultiValueMap<String, String> parseIfNecessary(HttpServletRequest request) throws IOException { if (!shouldParse(request)) { return null; } HttpInputMessage inputMessage = new ServletServerHttpRequest(request) { @Override public InputStream getBody() throws IOException { return request.getInputStream(); } }; return this.formConverter.read(null, inputMessage); }
@Nullable private MultiValueMap<String, String> parseIfNecessary(HttpServletRequest request) throws IOException { if (!shouldParse(request)) { return null; } HttpInputMessage inputMessage = new ServletServerHttpRequest(request) { @Override public InputStream getBody() throws IOException { return request.getInputStream(); } }; return this.formConverter.read(null, inputMessage); }
@Override protected void doFilterInternal(final HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { if (("PUT".equals(request.getMethod()) || "DELETE".equals(request.getMethod()) || "PATCH" .equals(request.getMethod())) && isFormContentType(request)) { HttpInputMessage inputMessage = new ServletServerHttpRequest(request) { @Override public InputStream getBody() throws IOException { return request.getInputStream(); } }; MultiValueMap<String, String> formParameters = formConverter.read(null, inputMessage); HttpServletRequest wrapper = new HttpPutFormContentRequestWrapper(request, formParameters); filterChain.doFilter(wrapper, response); } else { filterChain.doFilter(request, response); } }
@Override protected void doFilterInternal(final HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { if (("PUT".equals(request.getMethod()) || "DELETE".equals(request.getMethod()) || "PATCH" .equals(request.getMethod())) && isFormContentType(request)) { HttpInputMessage inputMessage = new ServletServerHttpRequest(request) { @Override public InputStream getBody() throws IOException { return request.getInputStream(); } }; MultiValueMap<String, String> formParameters = formConverter.read(null, inputMessage); HttpServletRequest wrapper = new HttpPutFormContentRequestWrapper(request, formParameters); filterChain.doFilter(wrapper, response); } else { filterChain.doFilter(request, response); } }
public OAuth2Exception read(Class<? extends OAuth2Exception> clazz, HttpInputMessage inputMessage) throws IOException, HttpMessageNotReadableException { MultiValueMap<String, String> data = delegateMessageConverter.read(null, inputMessage); Map<String,String> flattenedData = data.toSingleValueMap(); return OAuth2Exception.valueOf(flattenedData); }
@Override protected OAuth2AccessToken readInternal(Class<? extends OAuth2AccessToken> clazz, HttpInputMessage inputMessage) throws IOException, HttpMessageNotReadableException { MultiValueMap<String, String> data = delegateMessageConverter.read(null, inputMessage); return DefaultOAuth2AccessToken.valueOf(data.toSingleValueMap()); }
@Override public void match(final ClientHttpRequest request) throws IOException, AssertionError { HttpInputMessage inputMessage = new HttpInputMessage() { @Override public InputStream getBody() throws IOException { MockClientHttpRequest mockRequest = (MockClientHttpRequest) request; return new ByteArrayInputStream(mockRequest.getBodyAsBytes()); } @Override public HttpHeaders getHeaders() { return request.getHeaders(); } }; FormHttpMessageConverter converter = new FormHttpMessageConverter(); assertEquals("Request content", expectedContent, converter.read(null, inputMessage)); } };
@Override @Nullable protected String[] readMessages(ServerHttpRequest request) throws IOException { SockJsMessageCodec messageCodec = getServiceConfig().getMessageCodec(); MediaType contentType = request.getHeaders().getContentType(); if (contentType != null && MediaType.APPLICATION_FORM_URLENCODED.isCompatibleWith(contentType)) { MultiValueMap<String, String> map = this.formConverter.read(null, request); String d = map.getFirst("d"); return (StringUtils.hasText(d) ? messageCodec.decode(d) : null); } else { return messageCodec.decodeInputStream(request.getBody()); } }