Commit 294af45b authored by Stephane Nicoll's avatar Stephane Nicoll

Replace reflection call in HttpMessageConverters

Closes gh-23485
parent c4e224ff
/* /*
* Copyright 2012-2019 the original author or authors. * Copyright 2012-2020 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
...@@ -16,7 +16,6 @@ ...@@ -16,7 +16,6 @@
package org.springframework.boot.autoconfigure.http; package org.springframework.boot.autoconfigure.http;
import java.lang.reflect.Field;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collection; import java.util.Collection;
...@@ -24,13 +23,11 @@ import java.util.Collections; ...@@ -24,13 +23,11 @@ import java.util.Collections;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
import org.springframework.http.converter.FormHttpMessageConverter;
import org.springframework.http.converter.HttpMessageConverter; import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.support.AllEncompassingFormHttpMessageConverter; import org.springframework.http.converter.support.AllEncompassingFormHttpMessageConverter;
import org.springframework.http.converter.xml.AbstractXmlHttpMessageConverter; import org.springframework.http.converter.xml.AbstractXmlHttpMessageConverter;
import org.springframework.http.converter.xml.MappingJackson2XmlHttpMessageConverter; import org.springframework.http.converter.xml.MappingJackson2XmlHttpMessageConverter;
import org.springframework.util.ClassUtils; import org.springframework.util.ClassUtils;
import org.springframework.util.ReflectionUtils;
import org.springframework.web.client.RestTemplate; import org.springframework.web.client.RestTemplate;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport; import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
...@@ -140,19 +137,12 @@ public class HttpMessageConverters implements Iterable<HttpMessageConverter<?>> ...@@ -140,19 +137,12 @@ public class HttpMessageConverters implements Iterable<HttpMessageConverter<?>>
private void configurePartConverters(AllEncompassingFormHttpMessageConverter formConverter, private void configurePartConverters(AllEncompassingFormHttpMessageConverter formConverter,
Collection<HttpMessageConverter<?>> converters) { Collection<HttpMessageConverter<?>> converters) {
List<HttpMessageConverter<?>> partConverters = extractPartConverters(formConverter); List<HttpMessageConverter<?>> partConverters = formConverter.getPartConverters();
List<HttpMessageConverter<?>> combinedConverters = getCombinedConverters(converters, partConverters); List<HttpMessageConverter<?>> combinedConverters = getCombinedConverters(converters, partConverters);
combinedConverters = postProcessPartConverters(combinedConverters); combinedConverters = postProcessPartConverters(combinedConverters);
formConverter.setPartConverters(combinedConverters); formConverter.setPartConverters(combinedConverters);
} }
@SuppressWarnings("unchecked")
private List<HttpMessageConverter<?>> extractPartConverters(FormHttpMessageConverter formConverter) {
Field field = ReflectionUtils.findField(FormHttpMessageConverter.class, "partConverters");
ReflectionUtils.makeAccessible(field);
return (List<HttpMessageConverter<?>>) ReflectionUtils.getField(field, formConverter);
}
/** /**
* Method that can be used to post-process the {@link HttpMessageConverter} list * Method that can be used to post-process the {@link HttpMessageConverter} list
* before it is used. * before it is used.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment