Browse Source

Correct documentation of default HttpMessageConverters in RestTemplate

Issue: SPR-7885
pull/1745/head
Juergen Hoeller 8 years ago
parent
commit
442ddb0845
  1. 11
      spring-web/src/main/java/org/springframework/http/converter/FormHttpMessageConverter.java
  2. 57
      src/docs/asciidoc/integration.adoc

11
spring-web/src/main/java/org/springframework/http/converter/FormHttpMessageConverter.java

@ -64,8 +64,10 @@ import org.springframework.util.StringUtils; @@ -64,8 +64,10 @@ import org.springframework.util.StringUtils;
*
* <p>For example, the following snippet shows how to submit an HTML form:
* <pre class="code">
* RestTemplate template = new RestTemplate(); // FormHttpMessageConverter is configured by default
* MultiValueMap&lt;String, String&gt; form = new LinkedMultiValueMap&lt;String, String&gt;();
* RestTemplate template = new RestTemplate();
* // AllEncompassingFormHttpMessageConverter is configured by default
*
* MultiValueMap&lt;String, String&gt; form = new LinkedMultiValueMap&lt;&gt;();
* form.add("field 1", "value 1");
* form.add("field 2", "value 2");
* form.add("field 2", "value 3");
@ -74,7 +76,7 @@ import org.springframework.util.StringUtils; @@ -74,7 +76,7 @@ import org.springframework.util.StringUtils;
*
* <p>The following snippet shows how to do a file upload:
* <pre class="code">
* MultiValueMap&lt;String, Object&gt; parts = new LinkedMultiValueMap&lt;String, Object&gt;();
* MultiValueMap&lt;String, Object&gt; parts = new LinkedMultiValueMap&lt;&gt;();
* parts.add("field 1", "value 1");
* parts.add("file", new ClassPathResource("myFile.jpg"));
* template.postForLocation("http://example.com/myFileUpload", parts);
@ -87,7 +89,8 @@ import org.springframework.util.StringUtils; @@ -87,7 +89,8 @@ import org.springframework.util.StringUtils;
* @author Rossen Stoyanchev
* @author Juergen Hoeller
* @since 3.0
* @see MultiValueMap
* @see org.springframework.http.converter.support.AllEncompassingFormHttpMessageConverter
* @see org.springframework.util.MultiValueMap
*/
public class FormHttpMessageConverter implements HttpMessageConverter<MultiValueMap<String, ?>> {

57
src/docs/asciidoc/integration.adoc

@ -1014,23 +1014,23 @@ exception processing the HTTP request, an exception of the type `RestClientExcep @@ -1014,23 +1014,23 @@ exception processing the HTTP request, an exception of the type `RestClientExcep
will be thrown; this behavior can be changed by plugging in another
`ResponseErrorHandler` implementation into the `RestTemplate`.
The `exchange` and `execute` methods are generalized versions of the more
specific methods listed above them and can support additional combinations and methods,
like HTTP PATCH. However, note that the underlying HTTP library must also support the
desired combination. The JDK `HttpURLConnection` does not support the `PATCH` method, but
Apache HttpComponents HttpClient version 4.2 or later does. They also enable
`RestTemplate` to read an HTTP response to a generic type (e.g. `List<Account>`), using a
`ParameterizedTypeReference`, a new class that enables capturing and passing generic
type info.
The `exchange` and `execute` methods are generalized versions of the more specific
methods listed above them and can support additional combinations and methods,
e.g. HTTP PATCH. However, note that the underlying HTTP library must also support the
desired combination. The JDK `HttpURLConnection` does not support the `PATCH` method
but Apache HttpComponents HttpClient version 4.2 or later does. They also enable
`RestTemplate` to read an HTTP response to a generic type (e.g. `List<Account>`),
using a `ParameterizedTypeReference`, a new class that enables capturing and passing
generic type info.
Objects passed to and returned from these methods are converted to and from HTTP
messages by `HttpMessageConverter` instances. Converters for the main mime types are
registered by default, but you can also write your own converter and register it via the
`messageConverters()` bean property. The default converter instances registered with the
template are `ByteArrayHttpMessageConverter`, `StringHttpMessageConverter`,
`FormHttpMessageConverter` and `SourceHttpMessageConverter`. You can override these
defaults using the `messageConverters()` bean property as would be required if using the
`MarshallingHttpMessageConverter` or `MappingJackson2HttpMessageConverter`.
messages by `HttpMessageConverter` implementations. Converters for the main MIME types
are registered by default, but you can also override the defaults and register custom
converters via the `messageConverters()` bean property. The default converters are
`ByteArrayHttpMessageConverter`, `StringHttpMessageConverter`,
`ResourceHttpMessageConverter`, `SourceHttpMessageConverter` as well as
`AllEncompassingFormHttpMessageConverter` and a few provider-specific converters:
e.g. `MappingJackson2HttpMessageConverter` when Jackson is present on the classpath.
Each method takes URI template arguments in two forms, either as a `String`
variable-length argument or a `Map<String,String>`. For example,
@ -1213,7 +1213,7 @@ writing the body of HTTP requests and responses via `InputStream` and `OutputStr @@ -1213,7 +1213,7 @@ writing the body of HTTP requests and responses via `InputStream` and `OutputStr
``HttpMessageConverter``'s are used on the client side, e.g. in the `RestTemplate`, and
also on the server side, e.g. in Spring MVC REST controllers.
Concrete implementations for the main media (mime) types are provided in the framework
Concrete implementations for the main media (MIME) types are provided in the framework
and are registered by default with the `RestTemplate` on the client-side and with
`RequestMethodHandlerAdapter` on the server-side (see
<<web.adoc#mvc-config-message-converters,Configuring Message Converters>>).
@ -5601,9 +5601,8 @@ exception hierarchy. @@ -5601,9 +5601,8 @@ exception hierarchy.
The `org.springframework.mail.javamail.JavaMailSender` interface adds specialized
__JavaMail__ features such as MIME message support to the `MailSender` interface (from
which it inherits). `JavaMailSender` also provides a callback interface for preparation
of JavaMail MIME messages, called
`org.springframework.mail.javamail.MimeMessagePreparator`
which it inherits). `JavaMailSender` also provides a callback interface for preparing
a 'MimeMessage', called `org.springframework.mail.javamail.MimeMessagePreparator`.
@ -5726,23 +5725,17 @@ callback interface. Please note in this case that the `mailSender` property is o @@ -5726,23 +5725,17 @@ callback interface. Please note in this case that the `mailSender` property is o
}
public void placeOrder(final Order order) {
// Do the business calculations...
// Call the collaborators to persist the order...
MimeMessagePreparator preparator = new MimeMessagePreparator() {
public void prepare(MimeMessage mimeMessage) throws Exception {
mimeMessage.setRecipient(Message.RecipientType.TO,
new InternetAddress(order.getCustomer().getEmailAddress()));
mimeMessage.setFrom(new InternetAddress("mail@mycompany.com"));
mimeMessage.setText(
"Dear " + order.getCustomer().getFirstName() + " "
+ order.getCustomer().getLastName()
+ ", thank you for placing order. Your order number is "
+ order.getOrderNumber());
mimeMessage.setText("Dear " + order.getCustomer().getFirstName() + " " +
order.getCustomer().getLastName() + ", thanks for your order. " +
"Your order number is " + order.getOrderNumber() + ".");
}
};
@ -5858,10 +5851,10 @@ along with an inline image. @@ -5858,10 +5851,10 @@ along with an inline image.
[WARNING]
====
Inline resources are added to the mime message using the specified `Content-ID` (
`identifier1234` in the above example). The order in which you are adding the text and
the resource are __very__ important. Be sure to __first add the text__ and after that
the resources. If you are doing it the other way around, it won't work!
Inline resources are added to the `MimeMessage` using the specified `Content-ID`
(`identifier1234` in the above example). The order in which you are adding the text
and the resource are __very__ important. Be sure to __first add the text__ and after
that the resources. If you are doing it the other way around, it won't work!
====

Loading…
Cancel
Save