1. 01 9月, 2016 1 次提交
    • A
      Refactored SseEvent to ServerSentEvent · 16b525f6
      Arjen Poutsma 提交于
       - Renamed SseEvent to ServerSentEvent to make the name less redundant.
       - ServerSentEvent is now immutable, having a builder to create new instances.
       - Realigned the class properties to more closely match the events
         described in the spec, so that `reconnectTime` becomes `retry`, and
         `name` becomes `event`.
      16b525f6
  2. 31 8月, 2016 3 次提交
  3. 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
  4. 29 8月, 2016 1 次提交
  5. 09 8月, 2016 1 次提交
  6. 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
  7. 26 7月, 2016 1 次提交
  8. 23 7月, 2016 3 次提交
  9. 21 7月, 2016 1 次提交
  10. 20 7月, 2016 3 次提交
  11. 19 7月, 2016 2 次提交
  12. 16 7月, 2016 1 次提交
  13. 15 7月, 2016 4 次提交
  14. 13 7月, 2016 5 次提交
  15. 12 7月, 2016 1 次提交
  16. 08 7月, 2016 8 次提交
    • B
      Add RxJava1 support for request building/extracting · 99697118
      Brian Clozel 提交于
      This commit adds the required infrastructure to build HTTP requests as
      well as extracting relevant information from HTTP responses using the
      RxJava 1.x API, where Observable and Single don't extend Publisher.
      99697118
    • B
      Refactor HTTP client contracts · 4892436e
      Brian Clozel 提交于
      This commit refactors the `ClientHttpRequestFactory` into an
      `ClientHttpConnector` abstraction, in order to reflect that
      `ClientHttpRequest`s only "exist" once the client is connected
      to the origin server.
      
      This is why the HTTP client is now callback-based, containing all
      interactions with the request within a
      `Function<ClientHttpRequest,Mono<Void>>` that signals when it's done
      writing to the request.
      
      The `ClientHttpRequest` contract also adopts `setComplete()`
      and promotes that method to the `ReactiveHttpOutputMessage` contract.
      
      This commit also adapts all other APIs to that change and fixes a few
      issues, including:
      
      * use `HttpMessageConverter`s instead of `Encoders`/`Decoders`
      * better handle type information about request content publishers
      * support client cookies in HTTP requests
      * temporarily remove the RxNetty client support
      4892436e
    • B
      Update after `reactor.core.converter.Converters` changes · b5bce1f0
      Brian Clozel 提交于
      Reactor's `DependencyUtils` has been renamed to `Converters` and
      all the `from` converter methods have been disambiguated to
      `fromPublisher`, `toPublisher`.
      b5bce1f0
    • V
      Refactor AbstractRequestBodyPublisher states · d68232c8
      Violeta Georgieva 提交于
      The state machine is refactored in order to solve various concurrency
      issues.
      d68232c8
    • 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
      Fix StringDecoder#decodeToMono issue with empty input · a5843111
      Rossen Stoyanchev 提交于
      Before this change decodeToMono always created a StringBuilder to
      aggregate resulting in an "" (empty string) rather than an empty
      Mono for an empty input stream.
      
      Now we aggregate in the DataBuffer instead and then decode to String.
      a5843111
    • 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
    • B
      Upgrade build to Spring 5.0.0-BUILD-SNAPSHOT · 4c3c5446
      Brian Clozel 提交于
      * update bean validation API version
      * MethodParameter now validates indices, see 39e3f2eb
      * `getCharSet()` is now `getCharset()`
      4c3c5446
  17. 07 7月, 2016 1 次提交