1. 11 7月, 2012 2 次提交
    • R
      Add BindException to DefaultHandlerExceptionResolver · a1b7a314
      Rossen Stoyanchev 提交于
      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
      a1b7a314
    • R
      Move feed message converters ahead of jackson/jaxb2 · e860fa9a
      Rossen Stoyanchev 提交于
      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
      e860fa9a
  2. 10 7月, 2012 4 次提交
    • C
      Merge pull request #104 from poutsma/SPR-9536 · 2b4a5169
      Chris Beams 提交于
      * SPR-9576:
        Include **/*.aj files in *-sources.jar files
      2b4a5169
    • R
      Include **/*.aj files in *-sources.jar files · a681e574
      Rob Winch 提交于
      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
      a681e574
    • R
      Fix issue with incorrect class import · cf147a82
      Rossen Stoyanchev 提交于
      Issue: SPR-9112
      cf147a82
    • R
      Add support for global @ExceptionHandler methods · c846198e
      Rossen Stoyanchev 提交于
      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
      c846198e
  3. 07 7月, 2012 3 次提交
  4. 06 7月, 2012 3 次提交
    • C
      Resolve nested placeholders via PropertyResolver · 2ec78341
      Chris Beams 提交于
      Prior to this change, PropertySourcesPropertyResolver (and therefore
      all AbstractEnvironment) implementations failed to resolve nested
      placeholders as in the following example:
      
          p1=v1
          p2=v2
          p3=${v1}:{$v2}
      
      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
      2ec78341
    • R
      Fix minor issue in HandlerMethod · b9786cca
      Rossen Stoyanchev 提交于
      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
      b9786cca
    • R
      Add defaultCharset field to StringHttpMessageConverter · a4240d28
      Rossen Stoyanchev 提交于
      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
      StringHttpMessageConverter.
      
      Issue: SPR-9487
      a4240d28
  5. 05 7月, 2012 7 次提交
  6. 03 7月, 2012 3 次提交
  7. 28 6月, 2012 2 次提交
  8. 27 6月, 2012 1 次提交
  9. 26 6月, 2012 5 次提交
    • R
      Polish PathVariableMapMethodArgumentResolver · 3f5fa44d
      Rossen Stoyanchev 提交于
      Return an empty map when there are no path variables, rather than
      raising an exception. This is consistent with similar resolvers for
      extracting headers and request parameters.
      
      Issue: SPR-9289
      3f5fa44d
    • R
      Enable smart suffix pattern match for request mapping · 4fd7645e
      Rossen Stoyanchev 提交于
      Following the introduction of ContentNegotiationManager that allows,
      among other things, to configure the file extensions to use for content
      negotiation, this change adds "smart" suffix pattern match that matches
      against the configured file extensions only rather than against any
      extension.
      
      Given the request mapping "/jobs/{jobName}" and one configured file
      extension ("json"), a request for "/jobs/my.job" will select the
      pattern "/jobs/{jobName}" while a request for "/jobs/my.job.json" will
      select the pattern "/jobs/{jobName}.json". Previously, both requests
      would have resulted in the pattern "/jobs/{jobName}.*".
      
      Issue: SPR-7632, SPR-8474
      4fd7645e
    • R
      Polish ContentNegotiationStrategy support · f94aed83
      Rossen Stoyanchev 提交于
      Issue: SPR-8410, SPR-8417, SPR-8418,SPR-8416, SPR-8419,SPR-7722
      f94aed83
    • R
      Polish client support for HTTP PATCH · 4623568b
      Rossen Stoyanchev 提交于
      Issue: SPR-7985
      4623568b
    • C
      Work around apparent bug in README markdown parsing · 8e568466
      Chris Beams 提交于
      The exact text above the "Staying in touch" section caused "Staying in
      touch" to lose it's formatting as a second-level heading.  Adding
      " for details" to the sentence above works around the problem.
      8e568466
  10. 25 6月, 2012 2 次提交
  11. 23 6月, 2012 1 次提交
    • R
      Add support for HTTP PATCH method · a0747458
      Rossen Stoyanchev 提交于
      The HTTP PATCH method is now supported whereever HTTP methods are used.
      Annotated controllers can be mapped to RequestMethod.PATCH.
      
      On the client side the RestTemplate execute(..) and exchange(..)
      methods can be used with HttpMethod.PATCH. In terms of HTTP client
      libraries, Apache HttpComponents HttpClient version 4.2 or later is
      required (see HTTPCLIENT-1191). The JDK HttpURLConnection does not
      support the HTTP PATCH method.
      
      Issue: SPR-7985
      a0747458
  12. 22 6月, 2012 1 次提交
    • R
      Add abstractions for content negotiation · f05e2bc5
      Rossen Stoyanchev 提交于
      Introduced ContentNeogtiationStrategy for resolving the requested
      media types from an incoming request. The available implementations
      are based on path extension, request parameter, 'Accept' header,
      and a fixed default content type. The logic for these implementations
      is based on equivalent options, previously available only in the
      ContentNegotiatingViewResolver.
      
      Also in this commit is ContentNegotiationManager, the central class to
      use when configuring content negotiation options. It accepts one or
      more ContentNeogtiationStrategy instances and delegates to them.
      
      The ContentNeogiationManager can now be used to configure the
      following classes:
      
      - RequestMappingHandlerMappingm
      - RequestMappingHandlerAdapter
      - ExceptionHandlerExceptionResolver
      - ContentNegotiatingViewResolver
      
      Issue: SPR-8410, SPR-8417, SPR-8418,SPR-8416, SPR-8419,SPR-7722
      f05e2bc5
  13. 21 6月, 2012 1 次提交
    • C
      Refactor PropertyResolver impl for consistency · 35055fd8
      Chris Beams 提交于
      PropertySourcesPropertyResolver#containsProperty now
      calls #containsProperty on each underlying PropertySource instead of
      calling #getProperty and checking for null.
      
      Issue: SPR-9529
      35055fd8
  14. 20 6月, 2012 5 次提交