diff --git a/spring-web/src/main/java/org/springframework/http/client/BufferingClientHttpRequestFactory.java b/spring-web/src/main/java/org/springframework/http/client/BufferingClientHttpRequestFactory.java index 47517bf1dce..3f3b418514f 100644 --- a/spring-web/src/main/java/org/springframework/http/client/BufferingClientHttpRequestFactory.java +++ b/spring-web/src/main/java/org/springframework/http/client/BufferingClientHttpRequestFactory.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2011 the original author or authors. + * Copyright 2002-2015 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -22,22 +22,30 @@ import java.net.URI; import org.springframework.http.HttpMethod; /** - * Wrapper for a {@link ClientHttpRequestFactory} that buffers all outgoing and incoming streams in memory. + * Wrapper for a {@link ClientHttpRequestFactory} that buffers + * all outgoing and incoming streams in memory. * - *
Using this wrapper allows for multiple reads of the {@linkplain ClientHttpResponse#getBody() response body}. + *
Using this wrapper allows for multiple reads of the + * @linkplain ClientHttpResponse#getBody() response body}. * * @author Arjen Poutsma * @since 3.1 */ public class BufferingClientHttpRequestFactory extends AbstractClientHttpRequestFactoryWrapper { + /** + * Create a buffering wrapper for the given {@link ClientHttpRequestFactory}. + * @param requestFactory the target request factory to wrap + */ public BufferingClientHttpRequestFactory(ClientHttpRequestFactory requestFactory) { super(requestFactory); } + @Override protected ClientHttpRequest createRequest(URI uri, HttpMethod httpMethod, ClientHttpRequestFactory requestFactory) throws IOException { + ClientHttpRequest request = requestFactory.createRequest(uri, httpMethod); if (shouldBuffer(uri, httpMethod)) { return new BufferingClientHttpRequestWrapper(request); @@ -48,11 +56,10 @@ public class BufferingClientHttpRequestFactory extends AbstractClientHttpRequest } /** - * Indicates whether the request/response exchange for the given URI and method should be buffered in memory. - * - *
Default implementation returns {@code true} for all URIs and methods. Subclasses can override this method to - * change this behavior. - * + * Indicates whether the request/response exchange for the given URI and method + * should be buffered in memory. + *
The default implementation returns {@code true} for all URIs and methods. + * Subclasses can override this method to change this behavior. * @param uri the URI * @param httpMethod the method * @return {@code true} if the exchange should be buffered; {@code false} otherwise @@ -60,4 +67,5 @@ public class BufferingClientHttpRequestFactory extends AbstractClientHttpRequest protected boolean shouldBuffer(URI uri, HttpMethod httpMethod) { return true; } + } diff --git a/spring-web/src/main/java/org/springframework/http/client/BufferingClientHttpRequestWrapper.java b/spring-web/src/main/java/org/springframework/http/client/BufferingClientHttpRequestWrapper.java index 204dc67d7d6..1de5a5e4875 100644 --- a/spring-web/src/main/java/org/springframework/http/client/BufferingClientHttpRequestWrapper.java +++ b/spring-web/src/main/java/org/springframework/http/client/BufferingClientHttpRequestWrapper.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2013 the original author or authors. + * Copyright 2002-2015 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -21,7 +21,6 @@ import java.net.URI; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpMethod; -import org.springframework.util.Assert; import org.springframework.util.StreamUtils; /** @@ -36,7 +35,6 @@ final class BufferingClientHttpRequestWrapper extends AbstractBufferingClientHtt BufferingClientHttpRequestWrapper(ClientHttpRequest request) { - Assert.notNull(request, "'request' must not be null"); this.request = request; } diff --git a/spring-web/src/main/java/org/springframework/http/client/BufferingClientHttpResponseWrapper.java b/spring-web/src/main/java/org/springframework/http/client/BufferingClientHttpResponseWrapper.java index 10f3de00794..297218281aa 100644 --- a/spring-web/src/main/java/org/springframework/http/client/BufferingClientHttpResponseWrapper.java +++ b/spring-web/src/main/java/org/springframework/http/client/BufferingClientHttpResponseWrapper.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2013 the original author or authors. + * Copyright 2002-2015 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -25,8 +25,8 @@ import org.springframework.http.HttpStatus; import org.springframework.util.StreamUtils; /** - * Simple implementation of {@link ClientHttpResponse} that reads the response's body into memory, - * thus allowing for multiple invocations of {@link #getBody()}. + * Simple implementation of {@link ClientHttpResponse} that reads the response's body + * into memory, thus allowing for multiple invocations of {@link #getBody()}. * * @author Arjen Poutsma * @since 3.1 diff --git a/spring-web/src/main/java/org/springframework/web/bind/annotation/RequestMapping.java b/spring-web/src/main/java/org/springframework/web/bind/annotation/RequestMapping.java index 854bf77e19b..4d5286d4e26 100644 --- a/spring-web/src/main/java/org/springframework/web/bind/annotation/RequestMapping.java +++ b/spring-web/src/main/java/org/springframework/web/bind/annotation/RequestMapping.java @@ -40,8 +40,8 @@ import org.springframework.core.annotation.AliasFor; * details see the note on the new support classes added in Spring MVC 3.1 * further below. * - *
Handler methods which are annotated with this annotation are allowed - * to have very flexible signatures. They may have arguments of the following + *
Handler methods which are annotated with this annotation are allowed to + * have very flexible signatures. They may have parameters of the following * types, in arbitrary order (except for validation results, which need to * follow right after the corresponding command object, if desired): *
Note: JDK 1.8's {@code java.util.Optional} is supported + *
Note: Java 8's {@code java.util.Optional} is supported * as a method parameter type with annotations that provide a {@code required} * attribute (e.g. {@code @RequestParam}, {@code @RequestHeader}, etc.). The use * of {@code java.util.Optional} in those cases is equivalent to having @@ -174,8 +174,8 @@ import org.springframework.core.annotation.AliasFor; *
The effect of setting this flag is similar to using {@code MappingJackson2HttpMessageConverter} - * with an {@code @ResponseBody} request-handling method. + * Set whether to serialize models containing a single attribute as a map or + * whether to extract the single value from the model and serialize it directly. + *
The effect of setting this flag is similar to using + * {@code MappingJackson2HttpMessageConverter} with an {@code @ResponseBody} + * request-handling method. *
Default is {@code false}. */ public void setExtractValueFromSingleKeyModel(boolean extractValueFromSingleKeyModel) { @@ -181,7 +182,7 @@ public class MappingJackson2JsonView extends AbstractJackson2View { * Filter out undesired attributes from the given model. * The return value can be either another {@link Map} or a single value object. *
The default implementation removes {@link BindingResult} instances and entries
- * not included in the {@link #setRenderedAttributes renderedAttributes} property.
+ * not included in the {@link #setModelKeys renderedAttributes} property.
* @param model the model, as passed on to {@link #renderMergedOutputModel}
* @return the value to be rendered
*/
@@ -221,9 +222,10 @@ public class MappingJackson2JsonView extends AbstractJackson2View {
if (this.jsonPrefix != null) {
generator.writeRaw(this.jsonPrefix);
}
+
String jsonpFunction = null;
if (object instanceof MappingJacksonValue) {
- jsonpFunction = ((MappingJacksonValue)object).getJsonpFunction();
+ jsonpFunction = ((MappingJacksonValue) object).getJsonpFunction();
}
if (jsonpFunction != null) {
generator.writeRaw(jsonpFunction + "(" );
@@ -234,7 +236,7 @@ public class MappingJackson2JsonView extends AbstractJackson2View {
protected void writeSuffix(JsonGenerator generator, Object object) throws IOException {
String jsonpFunction = null;
if (object instanceof MappingJacksonValue) {
- jsonpFunction = ((MappingJacksonValue)object).getJsonpFunction();
+ jsonpFunction = ((MappingJacksonValue) object).getJsonpFunction();
}
if (jsonpFunction != null) {
generator.writeRaw(");");
diff --git a/src/asciidoc/web-mvc.adoc b/src/asciidoc/web-mvc.adoc
index 363eea63938..9c6b7bb5858 100644
--- a/src/asciidoc/web-mvc.adoc
+++ b/src/asciidoc/web-mvc.adoc
@@ -635,8 +635,8 @@ controller. When this is the case, for controllers specifically, we recommend
using class-based proxying. This is typically the default choice with controllers.
However if a controller must implement an interface that is not a Spring Context
callback (e.g. `InitializingBean`, `*Aware`, etc), you may need to explicitly
-configure class-based proxying. For example with `