Commits on Jul 27, 2012
  1. Support TransactionManagementConfigurer in the TCF

    sbrannen committed Jul 27, 2012
    Currently the Spring TestContext Framework looks up a
    PlatformTransactionManager bean named "transactionManager". The exact
    name of the bean can be overridden via @TransactionConfiguration or
    @Transactional; however, the bean will always be looked up 'by name'.
    The TransactionManagementConfigurer interface that was introduced in
    Spring 3.1 provides a programmatic approach to specifying the
    PlatformTransactionManager bean to be used for annotation-driven
    transaction management, and that bean is not required to be named
    "transactionManager". However, as of Spring 3.1.2, using the
    TransactionManagementConfigurer on a @Configuration class has no effect
    on how the TestContext framework looks up the transaction manager.
    Consequently, if an explicit name or qualifier has not been specified,
    the bean must be named "transactionManager" in order for a transactional
    integration test to work.
    This commit addresses this issue by refactoring the
    TransactionalTestExecutionListener so that it looks up and delegates to
    a single TransactionManagementConfigurer as part of the algorithm for
    determining the transaction manager.
    Issue: SPR-9604
  2. Support single, unqualified tx manager in the TCF

    sbrannen committed Jul 27, 2012
    TransactionalTestExecutionListener currently requires that the
    PlatformTransactionManager bean be named "transactionManager" by
    default. Otherwise, the bean name can only be overridden via the
    transactionManager attribute of @TransactionConfiguration or the value
    attribute of @Transactional.
    However, if there is only a single PlatformTransactionManager in the
    test's ApplicationContext, then the requirement to specify the exact
    name of that bean (or to name it exactly "transactionManager") is often
    This commit addresses this issue by refactoring the
    TransactionalTestExecutionListener so that it is comparable to the
    algorithm for determining the transaction manager used in
    TransactionAspectSupport for "production" code. Specifically, the TTEL
    now uses the following algorithm to retrieve the transaction manager.
     - look up by type and qualifier from @Transactional
     - else, look up by type and explicit name from
     - else, look up single bean by type
     - else, look up by type and default name from @TransactionConfiguration
    Issue: SPR-9645
Commits on Jul 26, 2012
  1. Support named dispatchers in MockServletContext

    sbrannen committed Jul 26, 2012
    Currently the getNamedDispatcher(String) method of MockServletContext
    always returns null. This poses a problem in certain testing scenarios
    since one would always expect at least a default Servlet to be present.
    This is specifically important for web application tests that involve
    the DefaultServletHttpRequestHandler which attempts to forward to the
    default Servlet after retrieving it by name. Furthermore, there is no
    way to register a named RequestDispatcher with the MockServletContext.
    This commit addresses these issues by introducing the following in
     - a new defaultServletName property for configuring the name of the
       default Servlet, which defaults to "default"
     - named RequestDispatchers can be registered and unregistered
     - a MockRequestDispatcher is registered for the "default" Servlet
       automatically in the constructor
     - when the defaultServletName property is set to a new value the
       the current default RequestDispatcher is unregistered and replaced
       with a MockRequestDispatcher for the new defaultServletName
    Issue: SPR-9587
Commits on Jul 25, 2012

    rstoyanchev committed Jul 25, 2012
    Usually this request attribute is set for all sub-classes of
    AbstractUrlHandlerMapping and therefore whenever
    AnnotationMethodHandlerAdapter is used. However, having a
    default value to fall back on in AnnotationMethodHandlerAdapter
    is still appropriate in general and also considering the Javadoc
    Issue: SPR-9629
  2. Improve tests for detection of @MVC annotations

    rstoyanchev committed Jul 25, 2012
    Issue: SPR-9601
Commits on Jul 24, 2012
  1. Fix typo in MockFilterChain

    sbrannen committed Jul 24, 2012
Commits on Jul 21, 2012
  1. Add ContentNegotiationManagerFactoryBean

    rstoyanchev committed Jul 21, 2012
    The new FactoryBean facilitates the creation of a
    ContentNegotiationManager in XML configuration.
    Issue: SPR-8420
  2. Add options to configure content negotiation

    rstoyanchev committed Jul 21, 2012
    The MVC Java config and the MVC namespace now support options to
    configure content negotiation. By default both support checking path
    extensions first and the "Accept" header second. For path extensions
    .json, .xml, .atom, and .rss are recognized out of the box if the
    Jackson, JAXB2, or Rome libraries are available. The ServletContext
    and the Java Activation Framework may be used as fallback options
    for path extension lookups.
    Issue: SPR-8420
Commits on Jul 20, 2012
  1. Add exclude patterns for mapped interceptors

    rstoyanchev committed Jul 20, 2012
    Add the ability provide exclude patterns for mapped interceptors in the
    MVC namespace and in the MVC Java config.
    Issue: SPR-6570
  2. Fix issue with failing test from previous commit

    rstoyanchev committed Jul 20, 2012
    Issue: SPR-9611
  3. Ensure async Callables are in sync with the call stack

    rstoyanchev committed Jul 20, 2012
    After this change each call stack level pushes and pops an async
    Callable to ensure the AsyncExecutionChain is in sync with the
    call stack. Before this change, a controller returning a "forward:"
    prefixed string caused the AsyncExecutionChain to contain a
    extra Callables that did not match the actual call stack.
    Issue: SPR-9611
Commits on Jul 18, 2012
  1. Create StandardServletAsyncWebRequest via reflection

    rstoyanchev committed Jul 18, 2012
    Issue: SPR-9500
  2. Parameterize DeferredResult

    rstoyanchev committed Jul 18, 2012
    Issue: SPR-9579
Commits on Jul 17, 2012
Commits on Jul 16, 2012
  1. Merge pull request #108 from rwinch/SPR-9594

    sbrannen committed Jul 16, 2012
    * SPR-9594:
      Fix minor issue in MockHttpServletRequest
  2. Fix minor issue in MockHttpServletRequest

    rwinch committed with sbrannen Jul 13, 2012
    Previously MockHttpServletRequest#sendRedirect did not set the HTTP status
    or the Location header. This does not conform to the HttpServletRequest
    MockHttpServletRequest will now:
      - Set the HTTP status to 302 on sendRedirect
      - Set the Location header on sendRedirect
      - Ensure the Location header and getRedirectedUrl are kept in synch
    Issue: SPR-9594
Commits on Jul 10, 2012
  1. Update section on exception handling MVC chapter

    rstoyanchev committed Jul 10, 2012
    Update section on exception handling in Spring MVC chapter to include
    more guidance on exception handling when implementing a REST API.
    Issue: SPR-9290
  2. Add BindException to DefaultHandlerExceptionResolver

    rstoyanchev committed Jul 10, 2012
    Previously DefaultHandlerExceptionResolver did not handle BindException
    but after this change it does. A BindException is raised when an
    @ModelAttribute annotated argument is not followed by a BindingResult
    argument. Hence this is unlikely to affect browser rendering.
    For programmatic clients however this change ensures an unhandled
    BindException is at least turned into a 400 error.
    Issue: SPR-9310
  3. Move feed message converters ahead of jackson/jaxb2

    rstoyanchev committed Jul 6, 2012
    The Atom/RSS message converters are now registered ahead of the
    Jackson and the JAXB2 message converters by default. Since the Atom
    and RSS converters convert to and from very specific object types
    Feed and Channel respectively, that shouldn't introduce any regressions
    and will work more intuitively when the requested media type is "*/*".
    Issue: SPR-9054
  4. Merge pull request #104 from poutsma/SPR-9536

    cbeams committed Jul 10, 2012
    * SPR-9576:
      Include **/*.aj files in *-sources.jar files
  5. Include **/*.aj files in *-sources.jar files

    rwinch committed with cbeams Jul 10, 2012
    Previously only **/*.java sources files were included in the sources
    jars. This is not ideal for the spring-aspects jar nor does it match
    prior versions of the sources jars.
    Now **/*.aj files are included in addition to the **/*.java files.
    Issue: SPR-9576
  6. Fix issue with incorrect class import

    rstoyanchev committed Jul 10, 2012
    Issue: SPR-9112
Commits on Jul 9, 2012
  1. Add support for global @ExceptionHandler methods

    rstoyanchev committed Jun 11, 2012
    Before this change @ExceptionHandler methods could be located in and
    apply locally within a controller. The change makes it possible to have
    such methods applicable globally regardless of the controller that
    raised the exception.
    The easiest way to do that is to add them to a class annotated with
    `@ExceptionResolver`, a new annotation that is also an `@Component`
    annotation (and therefore works with component scanning). It is also
    possible to register classes containing `@ExceptionHandler` methods
    directly with the ExceptionHandlerExceptionResolver.
    When multiple `@ExceptionResolver` classes are detected, or registered
    directly, the order in which they're used depends on the the `@Order`
    annotation (if present) or on the value of the order field (if the
    Ordered interface is implemented).
    Issue: SPR-9112
Commits on Jul 6, 2012
  1. preparations for 3.2 M2

    jhoeller committed Jul 6, 2012
  2. added "jtaTransactionManager" property to Hibernate 4 LocalSessionFac…

    jhoeller committed with unknown Jul 6, 2012
    Issue: SPR-9480
  3. reintroduced static DEFAULT_CHARSET field

    jhoeller committed with unknown Jul 6, 2012
     Issue: SPR-9487
  4. Resolve nested placeholders via PropertyResolver

    cbeams committed Jul 5, 2012
    Prior to this change, PropertySourcesPropertyResolver (and therefore
    all AbstractEnvironment) implementations failed to resolve nested
    placeholders as in the following example:
    Calls to PropertySource#getProperty for keys 'p1' and 'v1' would
    successfully return their respective values, but for 'p3' the return
    value would be the unresolved placeholders. This behavior is
    inconsistent with that of PropertyPlaceholderConfigurer.
    PropertySourcesPropertyResolver #getProperty variants now resolve any
    nested placeholders recursively, throwing IllegalArgumentException for
    any unresolvable placeholders (as is the default behavior for
    PropertyPlaceholderConfigurer). See SPR-9569 for an enhancement that
    will intoduce an 'ignoreUnresolvablePlaceholders' switch to make this
    behavior configurable.
    This commit also improves error output in
    PropertyPlaceholderHelper#parseStringValue by including the original
    string in which an unresolvable placeholder was found.
    Issue: SPR-9473, SPR-9569
Commits on Jul 5, 2012
  1. Fix minor issue in HandlerMethod

    rstoyanchev committed Jul 5, 2012
    Before this change HandlerMethod used ClassUtils.getUserClass(Class<?>)
    to get the real user class, and not one generated by CGlib. However it
    failed to that under all circumstances. This change fixes that.
    Issue: SPR-9490
  2. Add defaultCharset field to StringHttpMessageConverter

    rstoyanchev committed Jul 5, 2012
    Before this change the StringHttpMessageConverter used a fixed charset
    "ISO-8859-1" if the requested content type did not specify one. This
    change adds a defaultCharset field and a constructor to configure it in
    Issue: SPR-9487
Commits on Jul 4, 2012
  1. preparations for 3.2 M2

    jhoeller committed Jul 4, 2012
  2. polishing

    jhoeller committed Jul 4, 2012
  3. DispatcherPortlet does not forward event exceptions to the render pha…

    jhoeller committed Jul 4, 2012
    …se by default
    Issue: SPR-9287
  4. moved getInputStream() not-null requirement to InputStreamSource itse…

    jhoeller committed Jul 4, 2012
    …lf; removed misleading "throws IllegalStateException" declaration
    Issue: SPR-9561