1. 11 9月, 2012 4 次提交
  2. 10 9月, 2012 13 次提交
  3. 09 9月, 2012 3 次提交
    • C
      Use ExtendedBeanInfo on an as-needed basis only · 5bcf68e2
      Chris Beams 提交于
      Prior to this change, CachedIntrospectionResults delegated to
      ExtendedBeanInfo by default in order to inspect JavaBean
      PropertyDescriptor information for bean classes.
      
      Originally introduced with SPR-8079, ExtendedBeanInfo was designed to
      go beyond the capabilities of the default JavaBeans Introspector in
      order to support non-void returning setter methods, principally to
      support use of builder-style APIs within Spring XML. This is a complex
      affair, and the non-trivial logic in ExtendedBeanInfo has led to various
      bugs including regressions for bean classes that do not declare
      non-void returning setters.
      
      This commit takes advantage of the new BeanInfoFactory mechanism
      introduced in SPR-9677 to take ExtendedBeanInfo out of the default code
      path for CachedIntrospectionResults. Now, the new
      ExtendedBeanInfoFactory class will be detected and instantiated (per its
      entry in the META-INF/spring.beanInfoFactories properties file shipped
      with the spring-beans jar). ExtendedBeanInfoFactory#supports is invoked
      for all bean classes in order to determine whether they are candidates
      for ExtendedBeanInfo introspection, i.e. whether they declare non-void
      returning setter methods.
      
      If a class does not declare any such non-standard setter methods (the
      99% case), then CachedIntrospectionResults will fall back to the
      default JavaBeans Introspector. While efforts have been made to fix any
      bugs with ExtendedBeanInfo, this change means that EBI will not pose
      any future risk for bean classes that do not declare non-standard
      setter methods, and also means greater efficiency in general.
      
      Issue: SPR-9723, SPR-9677, SPR-8079
      5bcf68e2
    • C
      Address various ExtendedBeanInfo bugs · b50bb507
      Chris Beams 提交于
       - Ensure that ExtendedBeanInfoTests succeeds when building under JDK 7
      
       - Improve handling of read and write method registration where
         generic interfaces are involved, per SPR-9453
      
       - Add repro test for SPR-9702, in which EBI fails to register
         an indexed read method under certain circumstances
      
      Issue: SPR-9702, SPR-9414, SPR-9453
      b50bb507
    • S
      Polishing · c795c1b3
      Sam Brannen 提交于
      c795c1b3
  4. 08 9月, 2012 2 次提交
  5. 07 9月, 2012 1 次提交
  6. 06 9月, 2012 7 次提交
    • P
      Sort candidate @AspectJ methods deterministically · 77c93219
      Phillip Webb 提交于
      Update the ReflectiveAspectJAdvisorFactory class to sort candidate
      AOP methods based on their annotation first and method name second.
      
      Prior to this the order of aspects created from annotated methods
      could differ depending on the underling JVM, as first noticed under
      JDK7 in SPR-9729.
      
       - ConvertingComparator and InstanceComparator have been introduced in
         support of this change, per SPR-9730.
      
       - A shared static INSTANCE field has been added to ComparableComparator
         to avoid unnecessary instantiation costs within ConvertingComparator
         as well as to prevent generics warnings during certain caller
         scenarios.
      
      Issue: SPR-9729, SPR-9730
      77c93219
    • P
      Refactor ComparatorTests into separate classes · 719a9e12
      Phillip Webb 提交于
      719a9e12
    • P
      Refactor and polish various Comparator impls · 98218687
      Phillip Webb 提交于
       - Refactor CompoundComparator constructor to use varargs
       - Refactor MediaType to consume new varargs constructor
       - Add notNull assertions where appropriate
       - Add generic typing where appropriate
       - Suppress generics warnings elsewhere
       - Fix whitespace errors
      98218687
    • A
      Optional @XmlRootElement check in Jaxb2Marshaller · bd018fc9
      Arjen Poutsma 提交于
      Before this commit, the Jaxb2Marshaller required all supported classes
      to be annotated with @XmlRootElement. This commit adds a property
      'checkForXmlRootElement' (default is true) which allows for un-annotated
      classes.
      
      This is especially useful for JAXB2 implementations that can use
      external binding files, such as EclipseLink MOXy.
      
      Issue: SPR-9757
      bd018fc9
    • C
      Refactor to lazy Environment creation where possible · 6517517c
      Chris Beams 提交于
      This commit avoids eager creation of Environment instances, favoring
      delegation of already existing Environment objects where possible. For
      example, FrameworkServlet creates an ApplicationContext; both require
      a StandardServletEnvironment instance, and prior to this change, two
      instances were created where one would suffice - indeed these two
      instances may reasonably be expected to be the same. Now, the
      FrameworkServlet defers creation of its Environment, allowing users to
      supply a custom instance via its #setEnvironment method (e.g. within a
      WebApplicationInitializer); the FrameworkServlet then takes care to
      delegate that instance to the ApplicationContext created
      in #createWebApplicationContext.
      
      This behavior produces more consistent behavior with regard to
      delegation of the environment, saves unnecessary cycles by avoiding
      needless instantiation and calls to methods like
      StandardServletEnvironment#initPropertySources and leads to better
      logging output, as the user sees only one Environment created and
      initialized when working with the FrameworkServlet/DispatcherServlet.
      
      This commit also mirrors these changes across the corresponding
      Portlet* classes.
      
      Issue: SPR-9763
      6517517c
    • C
      Remove default profile during environment merge · 9f8d2191
      Chris Beams 提交于
      This change fixes a minor bug with the implementation of
      ConfigurableEnvironment#merge, introduced in SPR-9444. During a merge
      of two environments A and B, where A has default profiles [prod] and B
      has default profiles [default] (the so-called 'reserved default
      profile'), B would complete the merge process having a collection of
      profiles reading [default, prod], which is incorrect.
      
      This commit explicitly ensure's that B's reserved default profile is
      removed if A has a set of default profiles greater than zero. If A
      consists only of [default], B will inherit it during the merge
      correctly; if A consists of [p1, p2], B will result in [p1, p2] as
      well; if B consists of [p1] and A of [p2, p3], B will result in
      [p1, p2, p3] post-merge.
      
      Issue: SPR-9761, SPR-9444
      9f8d2191
    • C
      Register environment in all bean factories in a hierarchy · f963d0f1
      Chris Beams 提交于
      Prior to this change, AbstractApplicationContext#prepareBeanFactory
      registered a bean named 'environment' once and only once within a given
      ApplicationContext hierarchy. This worked fine with the expectation
      that the Environment object is always delegated downward to children of
      that hierarchy. However, with SPR-9444 and the introduction of
      ConfigurableEnvironment#merge, this expectation was violated; each
      member of an application context hierarchy now maintains its own
      distinct Environment instance, which means that by extension that each
      application context's underlying BeanFactory should have its own
      'environment' bean pointing to that context's environment instance.
      
      This problem could manifest in getting the wrong environment instance
      when calling #getBean(Environment) or when @Autowiring an Environment
      instance, for example into a @Configuration class. As reported in
      SPR-9756, this could result in false negative property lookups or
      incorrect results when checking whether a profile is active.
      
      This commit ensures that every bean factory in an application
      hierarchy has an 'environment' bean referring to the object returned
      from the enclosing ApplicationContext#getEnvironment method.
      
      Issue: SPR-9756, SPR-9444
      f963d0f1
  7. 05 9月, 2012 6 次提交
  8. 04 9月, 2012 1 次提交
  9. 31 8月, 2012 3 次提交