From 62565860475ff23f81db421db6aaab550dde6312 Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Mon, 12 Oct 2015 18:12:31 +0200 Subject: [PATCH] Polishing --- .../BufferingClientHttpRequestFactory.java | 24 ++++++--- .../BufferingClientHttpRequestWrapper.java | 4 +- .../BufferingClientHttpResponseWrapper.java | 6 +-- .../web/bind/annotation/RequestMapping.java | 10 ++-- .../view/json/MappingJackson2JsonView.java | 16 +++--- src/asciidoc/web-mvc.adoc | 52 +++++++++---------- 6 files changed, 60 insertions(+), 52 deletions(-) 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 47517bf1dc..3f3b418514 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 204dc67d7d..1de5a5e487 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 10f3de0079..297218281a 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 854bf77e19..4d5286d4e2 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; *

  • A {@code ModelAndView} object (Servlet MVC or Portlet MVC), * with the model implicitly enriched with command objects and the results * of {@link ModelAttribute @ModelAttribute} annotated reference data accessor methods. - *
  • A {@link org.springframework.ui.Model Model} object, with the view name - * implicitly determined through a {@link org.springframework.web.servlet.RequestToViewNameTranslator} + *
  • A {@link org.springframework.ui.Model Model} object, with the view name implicitly + * determined through a {@link org.springframework.web.servlet.RequestToViewNameTranslator} * and the model implicitly enriched with command objects and the results * of {@link ModelAttribute @ModelAttribute} annotated reference data accessor methods. *
  • A {@link java.util.Map} object for exposing a model, diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/view/json/MappingJackson2JsonView.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/view/json/MappingJackson2JsonView.java index 78f06be2af..afc3067e02 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/view/json/MappingJackson2JsonView.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/view/json/MappingJackson2JsonView.java @@ -143,10 +143,11 @@ public class MappingJackson2JsonView extends AbstractJackson2View { } /** - * 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. + * 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 363eea6393..9c6b7bb585 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 ``, -change to ``. +configure class-based proxying. For example with ``, +change to ``. [[mvc-ann-requestmapping-31-vs-30]] ==== New Support Classes for @RequestMapping methods in Spring MVC 3.1 @@ -1368,8 +1368,8 @@ the MVC namespace or the MVC Java config see <> instead. - - + + @@ -1897,9 +1897,9 @@ PropertyEditors required by several of the PetClinic controllers. [subs="verbatim,quotes"] ---- - + - + ---- @@ -4512,7 +4512,7 @@ context defined): http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd"> - + ---- @@ -4602,7 +4602,7 @@ and override the methods you need: } ---- -To customize the default configuration of `` check what +To customize the default configuration of `` check what attributes and sub-elements it supports. You can view the http://schema.spring.io/mvc/spring-mvc.xsd[Spring MVC XML schema] or use the code completion feature of your IDE to discover what attributes and sub-elements are @@ -4799,15 +4799,15 @@ And in XML use the `` element: [subs="verbatim"] ---- - + - + - + ---- @@ -4858,7 +4858,7 @@ that in turn can be created with a `ContentNegotiationManagerFactoryBean`: [source,xml,indent=0] [subs="verbatim,quotes"] ---- - + @@ -4954,10 +4954,10 @@ And the same in XML: - + - + ---- @@ -4973,14 +4973,14 @@ The MVC namespace provides dedicated elements. For example with FreeMarker: - + - + - + ---- @@ -5158,7 +5158,7 @@ XML example: ---- - + @@ -5306,11 +5306,11 @@ And the same in XML, use the `` element: trailing-slash="false" registered-suffixes-only="true" path-helper="pathHelper" - path-matcher="pathMatcher" /> + path-matcher="pathMatcher"/> - - + + ---- @@ -5373,10 +5373,10 @@ It is also possible to do the same in XML: - + - + @@ -5384,9 +5384,9 @@ It is also possible to do the same in XML: + p:modulesToInstall="com.fasterxml.jackson.module.paramnames.ParameterNamesModule"/> - + ---- @@ -5470,6 +5470,6 @@ by type and then modifying its properties as necessary. For example: } ---- -Note that `MyPostProcessor` needs to be included in an `` in order for +Note that `MyPostProcessor` needs to be included in an `` in order for it to be detected or if you prefer you can declare it explicitly with an XML bean declaration.