1. 06 9月, 2016 4 次提交
  2. 05 9月, 2016 4 次提交
    • S
      Document before/after test execution callbacks in reference manual · 6efb166c
      Sam Brannen 提交于
      Issue: SPR-4365
      6efb166c
    • S
      Introduce concurrency tests for Spring's JUnit 4 support · 2699504c
      Sam Brannen 提交于
      Whereas the existing TestContextConcurrencyTests verify support for
      concurrency in the TestContextManager and TestContext, this commit
      introduces SpringJUnit4ConcurrencyTests that verify support for
      concurrent test execution in Spring's JUnit 4 support, namely in the
      SpringRunner, SpringClassRule, and SpringMethodRule.
      
      The tests executed by this new test class come from a hand-picked
      collection of test classes within the test suite that is intended to
      cover most categories of tests that are currently supported by the
      TestContext Framework on JUnit 4.
      
      Note, however, that the chosen test classes intentionally do not
      include any classes that fall under the following categories.
      
       - tests that make use of Spring's @DirtiesContext support
      
       - tests that make use of JUnit 4's @FixMethodOrder support
      
       - tests that commit changes to the state of a shared in-memory database
      
      Issue: SPR-5863
      2699504c
    • S
      Improve exception msg for inactive test ApplicationContext · e822e4cb
      Sam Brannen 提交于
      This commit improves the exception message thrown when a test's
      ApplicationContext is no longer active by explaining that the cause
      may be due to parallel test execution.
      
      Issue: SPR-5863
      e822e4cb
    • S
      Further improve thread safety for attributes in DefaultTestContext · fbfad869
      Sam Brannen 提交于
      Issue: SPR-5863
      fbfad869
  3. 03 9月, 2016 10 次提交
    • S
      Upgrade to Reactor Core 3.0.2 · 5755b673
      Sebastien Deleuze 提交于
      5755b673
    • V
      Fix AbstractRequestBodyPublisher to comply with the spec · 00617d74
      Violeta Georgieva 提交于
      As per specification "The Subscription MUST allow the Subscriber to
      call Subscription.request synchronously from within onNext or
      onSubscribe". With the current implementation if Subscription.request
      is called more than once when Subscriber.onSubscribe ISE will be
      thrown - java.lang.IllegalStateException: DEMAND.
      With this fix the implementation will not throw ISE and will allow
      many invocations of Subscription.request when
      Subscriber.onSubscribe.
      00617d74
    • 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
    • S
      Support concurrent execution in TestContextManager & DefaultTestContext · a10a8e56
      Sam Brannen 提交于
      Prior to this commit, executing tests concurrently in the TestContext
      Framework (TCF) was unsupported and typically lead to unpredictable
      results.
      
      This commit addresses this core issue by supporting concurrent
      execution in the TestContextManager and the DefaultTestContext.
      
      Specifically, the TestContextManager now uses ThreadLocal storage for
      the current TestContext, thereby ensuring that any registered
      TestExecutionListeners and the TestContextManager itself operate on a
      TestContext specific to the current thread.
      
      In order to avoid repeatedly incurring the costs of the overhead of the
      TCF bootstrapping process, the original TestContext built by the
      TestContextBootstrapper is used as a template which is then passed to
      the copy constructor of the concrete implementation of the TestContext
      to create the context for the current thread. DefaultTestContext now
      implements such a copy constructor, and all concrete implementations of
      TestContext are encouraged to do the same.
      
      If the TestContext built by the TestContextBootstrapper does not
      provide a copy constructor, thread-safety and support for concurrency
      are left completely to the implementation of the concrete TestContext.
      
      Note, however, that this commit does not address any thread-safety or
      concurrency issues in the ContextLoader SPI or its implementations.
      
      Issue: SPR-5863
      a10a8e56
    • S
      Improve concurrency in DefaultTestContext regarding attributes · ec7aefa8
      Sam Brannen 提交于
      This commit inlines the basic implementation of AttributeAccessorSupport
      and converts the LinkedHashMap to a ConcurrentHashMap.
      
      In addition, attributes are now included in toString().
      
      Issue: SPR-5863
      ec7aefa8
    • S
      Polishing · 5fe3bcf8
      Sam Brannen 提交于
      5fe3bcf8
    • R
      Add @since tags · c813405c
      Rossen Stoyanchev 提交于
      c813405c
    • R
      Add MockServerHttpRequest/Response to spring-test · a1ac5125
      Rossen Stoyanchev 提交于
      Issue: SPR-14421
      a1ac5125
    • R
      Refactor location of MockServerHttpRequest/Response · 73752c29
      Rossen Stoyanchev 提交于
      This change puts the MockHttpServerRequest/Response under
      org.springframework.mock.http.server.reactive.test which
      mirrors the arrangement we have with the Servlet mock equivalents
      and sets up the addition of MockHttpServerRequest/Response in
      spring-test.
      
      Issue: SPR-14421
      73752c29
    • R
      Polish MockServerHttpRequest · e17132c2
      Rossen Stoyanchev 提交于
      Issue: SPR-14421
      e17132c2
  4. 02 9月, 2016 11 次提交
  5. 01 9月, 2016 11 次提交
    • S
      Polishing · 02bed0a3
      Sebastien Deleuze 提交于
      02bed0a3
    • S
      Let users control SSE stream completion · 06d4bb6a
      Sebastien Deleuze 提交于
      This commit avoid merging automatically the SSE stream with
      Flux.never(). Since browsers automatically reconnect when
      the HTTP connection is closed, it is now the user responsability
      to optionally perform a concatWith(Flux.never()) on streams that
      complete in order to avoid receiving the data multiple times on
      client side.
      
      The behavior with hot streams that never complete does not change.
      
      Issue: SPR-14578
      06d4bb6a
    • S
      Delete unused imports in spring-context-indexer · 1af2fbfb
      Sam Brannen 提交于
      1af2fbfb
    • S
      Polish SpringClassRule and SpringMethodRule · 52022501
      Sam Brannen 提交于
      52022501
    • S
      Merge pull request #1151 from sylvainlaurent:patch-1 · 749ee606
      Stephane Nicoll 提交于
      * pr/1151:
        Fix class literal in instanceof
      749ee606
    • S
      Fix class literal in instanceof · dc3f62d5
      sylvainlaurent 提交于
      Closes gh-1151
      dc3f62d5
    • S
      Update Web Reactive documentation · 76ed101a
      Sebastien Deleuze 提交于
      76ed101a
    • S
      Support for candidate components index · dcade06f
      Stephane Nicoll 提交于
      This commit adds a "spring-context-indexer" module that can be added to
      any project in order to generate an index of candidate components defined
      in the project.
      
      `CandidateComponentsIndexer` is a standard annotation processor that
      looks for source files with target annotations (typically `@Component`)
      and references them in a `META-INF/spring.components` generated file.
      
      Each entry in the index is the fully qualified name of a candidate
      component and the comma-separated list of stereotypes that apply to that
      candidate. A typical example of a stereotype is `@Component`. If a
      project has a `com.example.FooService` annotated with `@Component` the
      following `META-INF/spring.components` file is generated at compile time:
      
      ```
      com.example.FooService=org.springframework.stereotype.Component
      ```
      
      A new `@Indexed` annotation can be added on any annotation to instructs
      the scanner to include a source file that contains that annotation. For
      instance, `@Component` is meta-annotated with `@Indexed` now and adding
      `@Indexed` to more annotation types will transparently improve the index
      with additional information. This also works for interaces or parent
      classes: adding `@Indexed` on a `Repository` base interface means that
      the indexed can be queried for its implementation by using the fully
      qualified name of the `Repository` interface.
      
      The indexer also adds any class or interface that has a type-level
      annotation from the `javax` package. This includes obviously JPA
      (`@Entity` and related) but also CDI (`@Named`, `@ManagedBean`) and
      servlet annotations (i.e. `@WebFilter`). These are meant to handle
      cases where a component needs to identify candidates and use classpath
      scanning currently.
      
      If a `package-info.java` file exists, the package is registered using
      a "package-info" stereotype.
      
      Such files can later be reused by the `ApplicationContext` to avoid
      using component scan. A global `CandidateComponentsIndex` can be easily
      loaded from the current classpath using `CandidateComponentsIndexLoader`.
      
      The core framework uses such infrastructure in two areas: to retrieve
      the candidate `@Component`s and to build a default `PersistenceUnitInfo`.
      Rather than scanning the classpath and using ASM to identify candidates,
      the index is used if present.
      
      As long as the include filters refer to an annotation that is directly
      annotated with `@Indexed` or an assignable type that is directly
      annotated with `@Indexed`, the index can be used since a dedicated entry
      wil be present for that type. If any other unsupported include filter is
      specified, we fallback on classpath scanning.
      
      In case the index is incomplete or cannot be used, The
      `spring.index.ignore` system property can be set to `true` or,
      alternatively, in a "spring.properties" at the root of the classpath.
      
      Issue: SPR-11890
      dcade06f
    • S
      Add support for RxJava 2 · 48d67a24
      Sebastien Deleuze 提交于
      This commit adds support for RxJava 2 Completable,
      Single, Observable and Flowable types (io.reactivex package).
      
      Issue: SPR-14628
      48d67a24
    • S
      Polishing · b4641b23
      Sebastien Deleuze 提交于
      b4641b23
    • A
      Introduce new functional web API · f1319f58
      Arjen Poutsma 提交于
      This commit introduces a new, functional web programming model in the
      org.springframework.web.reactive.function package. The key types
      are:
      
       - Request and Response are new Java 8-DSLs for access to the HTTP
         request and response
       - HandlerFunction represents a function to handle a request to a
         response
       - RoutingFunction maps a request to a HandlerFunction
       - FilterFunction filters a routing as defined by a RoutingFunction
       - RequestPredicate is used by Router to create RoutingFunctions
       - RequestPredicates offers common RequestPredicate instances
      f1319f58