1. 09 9月, 2016 2 次提交
    • A
      Fix using system default charset in view rendering · 5f941c1d
      Arjen Poutsma 提交于
      Prior to this commit, FreeMarkerView used the system default charset to
      render. This commit switches this by defaulting to UTF-8, if no charset
      is specified in the content type.
      
       - Add contentType parameter to AbstractView.renderInternal, used to
       determine the charset contained therein
       - Adds a defaultCharset property to AbstractView and
       ViewResolverSupport.
      5f941c1d
    • A
      Changed View.render method to take Map<String, ?> · a746c3c5
      Arjen Poutsma 提交于
      Changed View's render method from taking a HandlerResult to taking a
      Map<String, ?>, in order to facilitate scenarios where a HandlerResult
      is not available (i.e. web.reactive.function).
      a746c3c5
  2. 03 9月, 2016 1 次提交
    • B
      Fix null body handling in ResponseEntityResultHandler · 01bd8b9e
      Brian Clozel 提交于
      This commit fixes `ResponseEntityResultHandler` so that it only tries to
      call `writeBody` if the `ResponseEntity` is not null. In case the
      response entity body is null, the response is flushed right away and the
      request is signaled as handled.
      
      Issue: SPR-14663
      01bd8b9e
  3. 02 9月, 2016 3 次提交
  4. 31 8月, 2016 1 次提交
  5. 30 8月, 2016 1 次提交
    • B
      Don't wrap resolver exceptions in InvocableHandlerMethod · 960d335c
      Brian Clozel 提交于
      Prior to this commit, exceptions thrown by the
      `HandlerMethodArgumentResolver` would be wrapped into
      `IllegalStateException`s.
      
      This commit makes sure that a DEBUG log is written with the relevant
      information and that the root cause is not wrapped into another
      exception, so that the appropriate `ExceptionHandler` can be used to
      deal with this error.
      
      Issue: SPR-14618
      960d335c
  6. 29 8月, 2016 1 次提交
  7. 09 8月, 2016 1 次提交
  8. 28 7月, 2016 3 次提交
    • R
      Shorten getter for ReactiveAdapterRegistry · 460ed307
      Rossen Stoyanchev 提交于
      460ed307
    • R
      Add support for rx.Completable as return value · 143b5c89
      Rossen Stoyanchev 提交于
      143b5c89
    • R
      Remove SimpleResultHandler · 79bc227c
      Rossen Stoyanchev 提交于
      There is really no need for a result handler dedicated to a void
      return value and it's actually problematic to have it.
      
      Each result handler treats void as necessary. For an @ResponseBody
      method it means an empty body. For view resolution it means no specific
      value was returned and we should procede with selecting a default view
      name. Having a dedicated void result handler can interfere with this
      especially since view resolution needs to be last in order.
      
      At the same time there are cases when no result handling is needed
      and the response is fully handled within the HandlerAdapter. This is
      the case with WebHandler and the SimpleHandlerAdapter. For that case
      we simply return mono.then(aVoid -> Mono.empty()) which effectively
      returns an empty Mono and no result handling follows. The
      HandlerAdapter already says you can return no values at all if the
      response is fully handled.
      79bc227c
  9. 23 7月, 2016 2 次提交
  10. 19 7月, 2016 2 次提交
  11. 15 7月, 2016 2 次提交
  12. 08 7月, 2016 2 次提交
    • R
      Comprensive support for empty request body · 7534092e
      Rossen Stoyanchev 提交于
      This commit adds support for handling an empty request body with both
      HttpEntity where the body is not required and with @RequestBody where
      the body is required depending on the annotation's required flag.
      
      If the body is an explicit type (e.g. String, HttpEntity<String>) and
      the body is required an exception is raised before the method is even
      invoked or otherwise the body is passed in as null.
      
      If the body is declared as an async type (e.g. Mono<String>,
      HttpEntity<Mono<String>>) and is required, the error will flow through
      the async type. If not required, the async type will be passed with no
      values (i.e. empty).
      
      A notable exception is rx.Single which can only have one value or one
      error and cannot be empty. As a result currently the use of rx.Single
      to represent the request body in any form effectively implies the body
      is required.
      7534092e
    • R
      Support HttpEntity method arguments · 1e1e2f8b
      Rossen Stoyanchev 提交于
      The RequestBodyArgumentResolver has been refactored to have a shared
      base class and tests with the new HttpEntityMethodArgumentResolver.
      
      An HttpEntity argument is not expected to have an async wrapper because
      the request headers are available immediately. The body however can be
      asynchronous, e.g. HttpEntity<Flux<String>>.
      1e1e2f8b
  13. 07 7月, 2016 2 次提交
  14. 04 7月, 2016 3 次提交
    • S
      Remove unused imports · f254680f
      Sebastien Deleuze 提交于
      f254680f
    • R
      Provide rich type information to ConversionService · 8c765814
      Rossen Stoyanchev 提交于
      When using the ConversionService to check and bridge to and from
      reactive types we now generallly provide the full type information
      available from method signatures. However that full type information
      is not always necessary such as when we perform additional checks on
      the generics of the reactive type (e.g. Mono<ResponseEntity>).
      
      This allows us to switch to use DefaultFormattingConversionService
      instead of GenericConversionService while also ensuring that the
      CollectionToObjectConverter doesn't think it can convert List<?> to
      any reactive type.
      
      The ObjectToObjectConverter can also interfere because it is smart
      enough to find the "from(Publisher<?>)" method on Flux and Mono.
      To make up for that on the response side we now check if a type
      is assignable to Publisher first in which case it is a simple cast.
      
      In turn that means we don't need a PublisherToFluxConverter which can
      be problematic in its own right because it can convert from Mono to
      Flux which technically doesn't lose data but switches stream semantics.
      
      Issue: #124, #128
      8c765814
    • R
      HandlerResult now requires MethodParameter as input · fb2e7960
      Rossen Stoyanchev 提交于
      HandlerAdapter's should always be able to provide a MethodParameter
      which in turn ensures that HandlerResultHandler's have full type
      information from method declarations.
      
      This commit also introduces ResolvableMethod for use in tests to make
      it easy to obtain MethodParameter return types.
      
      Issue: #128
      fb2e7960
  15. 02 7月, 2016 5 次提交
  16. 01 7月, 2016 1 次提交
  17. 30 6月, 2016 1 次提交
  18. 27 6月, 2016 1 次提交
    • R
      ResponseBodyResultHandler ignores ResponseEntity · 699b0571
      Rossen Stoyanchev 提交于
      Currently ResponseEntityResultHandler is ordered lower than
      ResponseBodyResultHandler by default whch means a ResponseEntity
      should not be picked by the ResponseBodyResultHandler.
      
      However as it is easy to have both ResponseEntity and @ResponseBody
      e.g. in @RestControler (or even by mistake) and in general it makes
      sense for ResponseBodyResultHandler to explicitly recognize and
      ignore the ResponseEntity return type.
      699b0571
  19. 25 6月, 2016 2 次提交
    • R
      Support async wrappers for ResponseEntity · 95751acb
      Rossen Stoyanchev 提交于
      Before this commit only ResponseEntity with async body was supported,
      e.g. ResponseEntity<Mono<String>>
      
      This commit also adds suppport for an asyn wrapper around,
      e.g. Mono<ResponseEntity<String>.
      95751acb
    • R
      Refactor @ResponseBody and ResponseEntity tests · cae88001
      Rossen Stoyanchev 提交于
      Introduce separate test classes for each base class in the hierarchy
      above @ResponseBody and ResponseEntity result handlers.
      
      Also start porting existing unit test cases for @ResponseBody and
      ResponseEntity return value handlers.
      cae88001
  20. 22 6月, 2016 1 次提交
  21. 11 6月, 2016 3 次提交