1. 08 7月, 2016 8 次提交
    • 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
    • A
      Merge pull request #135 from violetagg/ondataavailable-concurrency · 799bb642
      Arjen Poutsma 提交于
      Refactor AbstractRequestBodyPublisher states
      799bb642
    • V
      Refactor AbstractRequestBodyPublisher states · d68232c8
      Violeta Georgieva 提交于
      The state machine is refactored in order to solve various concurrency
      issues.
      d68232c8
    • R
      Polish tests · d7a43d20
      Rossen Stoyanchev 提交于
      d7a43d20
    • 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
  2. 07 7月, 2016 2 次提交
  3. 06 7月, 2016 9 次提交
  4. 05 7月, 2016 2 次提交
  5. 04 7月, 2016 10 次提交
    • S
      Remove @Ignore on streamResult() test · 8690464a
      Sebastien Deleuze 提交于
      This test was fixed by previous commit that allows to
      JSON encode correctly streams with more than 2 elements.
      8690464a
    • S
      7ed03d01
    • S
      Avoid exception while setting the status code of a committed response · c1518c3f
      Sebastien Deleuze 提交于
      Before this commit, it was not possible to set the status code of an
      HTTP response without throwing an exception if it was already
      committed. The consequence was a lot of errors in the logs for long
      lived HTTP exchanges like Server-Sent Events for example.
      
      After this commit, ServerHttpResponse#setStatusCode() returns
      true if the operation succeeded and false if the status code has not
      been set because the response has already been committed.
      
      In term of implementation, that makes status code managed
      consistently with headers and cookies:
      AbstractServerHttpResponse#setStatusCode() stores the status
      code that will be effectively set later in the response lifecycle by
      the HTTP server via AbstractServerHttpResponse#writeStatusCode()
      when the response will be committed.
      c1518c3f
    • S
      Support rx.Completable · b7b6704c
      Sebastien Deleuze 提交于
      b7b6704c
    • S
      Upgrade dependencies · a1d4fe69
      Sebastien Deleuze 提交于
      a1d4fe69
    • S
      Remove unused imports · f254680f
      Sebastien Deleuze 提交于
      f254680f
    • S
      Allow to configure Tomcat baseDir · 0f01729b
      Sebastien Deleuze 提交于
      This commit also set Tomcat baseDir to java.io.tmpdir for
      integration tests in order to avoid creation of temporary directories
      in the project root.
      0f01729b
    • S
      Speed up RequestMappingIntegrationTests · b7b0313c
      Sebastien Deleuze 提交于
      Reactor Core + Spring Reactive now handle correctly
      shorter interval for the stream result test.
      b7b0313c
    • 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
  6. 02 7月, 2016 6 次提交
    • R
      Shorten returnValueType name in HandlerResult · dffd6d67
      Rossen Stoyanchev 提交于
      dffd6d67
    • R
      Complete reactive conversion support refactoring · df64262d
      Rossen Stoyanchev 提交于
      This commit ensures stream semantics (Flux vs Mono) are adhered to also
      on the target side.
      df64262d
    • R
      71f4dff0
    • R
      Polish "decodeOne" related changes · a68ff94f
      Rossen Stoyanchev 提交于
      a68ff94f
    • S
      Add Decoder#decodeOne() · 917a2fb9
      Sebastien Deleuze 提交于
      This commit adds a Decoder#decodeOne() method in order
      to handle correctly the streaming versus one value
      deserialization based on the type provided by the user.
      
      For example, if a List parameter is provided in a controller
      method, Jackson will be called once, while if the user provides
      a Flux or an Observable parameter, Jackson will be called for
      each element.
      917a2fb9
    • S
      Refactor reactive type conversion support · 12d7b781
      Sebastien Deleuze 提交于
      This commit replaces Reactive Streams converters for RxJava1 and
      CompletableFuture with Reactor specific ones. The results in conversion
      that preserves stream semantics, i.e. Mono vs Flux.
      
      For example this is allowed:
      Flux -> Observable
      Mono -> Single
      Mono -> CompletableFuture
      
      This is not allowed:
      Flux -> Single
      Mono -> Observable
      Flux -> CompletableFuture
      
      As a result it is now possible to check through the ConversionService
      if a target type to convert to is a stream of many or of one which is
      useful for decoding purposes.
      
      The commit also adds PublisherToFluxConverter to allow conversion from
      raw Publisher to Flux. The reverse is not necessary since Flux is a
      Publisher and it's a no-op conversion.
      12d7b781
  7. 01 7月, 2016 3 次提交