Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: spring-projects/spring-framework
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: v4.3.18.RELEASE
Choose a base ref
...
head repository: spring-projects/spring-framework
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: v4.3.19.RELEASE
Choose a head ref

Commits on Jun 12, 2018

  1. Copy the full SHA
    a0f52bf View commit details

Commits on Jun 29, 2018

  1. Support for new JsonMappingException wording in Jackson 2.9

    Issue: SPR-16947
    
    (cherry picked from commit 6d0f8bf)
    jhoeller committed Jun 29, 2018
    Copy the full SHA
    1b0d838 View commit details
  2. Up-to-date coverage of task executor and scheduler variants

    Includes a clarification of ThreadPoolExecutor configuration options and a note on early AsyncConfigurer initialization.
    
    Issue: SPR-16944
    Issue: SPR-16945
    
    (cherry picked from commit d58c09b)
    
    (cherry picked from commit 5a11112)
    jhoeller committed Jun 29, 2018
    Copy the full SHA
    d5bfdda View commit details
  3. Polishing

    jhoeller committed Jun 29, 2018
    Copy the full SHA
    fa8acfa View commit details
  4. Upgrade to Tomcat 8.5.32

    jhoeller committed Jun 29, 2018
    Copy the full SHA
    de8d4e9 View commit details
  5. Polishing

    jhoeller committed Jun 29, 2018
    Copy the full SHA
    740751b View commit details

Commits on Jul 3, 2018

  1. Same method filtering in ConstructorResolver and getTypeForFactoryMethod

    Issue: SPR-16999
    
    (cherry picked from commit 0052c89)
    jhoeller committed Jul 3, 2018
    Copy the full SHA
    9f69638 View commit details
  2. ConcurrentReferenceHashMap caches EntrySet in volatile field

    Includes an efficient implementation of isEmpty(), not relying on a full entry count but rather backing out once a non-empty hash segment has been found.
    
    Issue: SPR-16994
    jhoeller committed Jul 3, 2018
    Copy the full SHA
    44b2657 View commit details
  3. Polishing

    jhoeller committed Jul 3, 2018
    Copy the full SHA
    4298744 View commit details

Commits on Jul 4, 2018

  1. Polishing

    jhoeller committed Jul 4, 2018
    Copy the full SHA
    50f7ffd View commit details

Commits on Jul 6, 2018

  1. Copy the full SHA
    b129fb4 View commit details
  2. Polishing

    jhoeller committed Jul 6, 2018
    Copy the full SHA
    f4b644d View commit details

Commits on Jul 15, 2018

  1. Fix typo

    Issue: SPR-17042
    snicoll committed Jul 15, 2018
    Copy the full SHA
    e9e864b View commit details

Commits on Jul 18, 2018

  1. UrlBasedViewResolver exposes redirect prefix as bean name

    Issue: SPR-17045
    jhoeller committed Jul 18, 2018
    Copy the full SHA
    19e944b View commit details
  2. Copy the full SHA
    1e9b2b1 View commit details
  3. Consistent exposure of nested parameter type in binding exceptions

    (cherry picked from commit ed54895)
    jhoeller committed Jul 18, 2018
    Copy the full SHA
    1ff1c95 View commit details

Commits on Jul 19, 2018

  1. Javadoc update: ConfigurationClassPostProcessor is priority-ordered

    Issue: SPR-17062
    
    (cherry picked from commit c66f9d8)
    jhoeller committed Jul 19, 2018
    Copy the full SHA
    322b0f4 View commit details
  2. Polishing

    jhoeller committed Jul 19, 2018
    Copy the full SHA
    22fc325 View commit details
  3. Polishing

    jhoeller committed Jul 19, 2018
    Copy the full SHA
    65e4232 View commit details

Commits on Jul 20, 2018

  1. Polishing

    jhoeller committed Jul 20, 2018
    Copy the full SHA
    484addb View commit details

Commits on Jul 24, 2018

  1. Polishing

    jhoeller committed Jul 24, 2018
    Copy the full SHA
    2ae2249 View commit details
  2. Copy the full SHA
    a403a75 View commit details

Commits on Jul 25, 2018

  1. Backport of WebMvcConfigurationSupport javadoc revision

    Includes related polishing.
    jhoeller committed Jul 25, 2018
    Copy the full SHA
    21b7dc1 View commit details
  2. MethodBeforeAdviceInterceptor implements BeforeAdvice marker interface

    Includes related polishing in the advice interceptor implementations.
    
    Issue: SPR-17088
    
    (cherry picked from commit 4e03d3f)
    jhoeller committed Jul 25, 2018
    Copy the full SHA
    001cecd View commit details

Commits on Jul 26, 2018

  1. Properly identify event-related ClassCastExceptions on JDK 11

    Issue: SPR-17093
    
    (cherry picked from commit e458777)
    jhoeller committed Jul 26, 2018
    Copy the full SHA
    1b78afe View commit details
  2. Polishing

    jhoeller committed Jul 26, 2018
    Copy the full SHA
    42e550a View commit details
  3. Copy the full SHA
    7ac99c1 View commit details
  4. Polishing

    jhoeller committed Jul 26, 2018
    Copy the full SHA
    4c05020 View commit details

Commits on Jul 27, 2018

  1. Polishing

    jhoeller committed Jul 27, 2018
    Copy the full SHA
    b17a6f9 View commit details

Commits on Jul 30, 2018

  1. Polishing

    jhoeller committed Jul 30, 2018
    Copy the full SHA
    e24ac55 View commit details

Commits on Jul 31, 2018

  1. Polishing

    jhoeller committed Jul 31, 2018
    Copy the full SHA
    ae6d778 View commit details

Commits on Aug 1, 2018

  1. Polishing

    jhoeller committed Aug 1, 2018
    Copy the full SHA
    92c2102 View commit details

Commits on Aug 2, 2018

  1. SchedulerAccessor catches cluster race conditions on job rescheduling

    Issue: SPR-17114
    
    (cherry picked from commit fa97aab)
    jhoeller committed Aug 2, 2018
    Copy the full SHA
    7da02fb View commit details
  2. Polishing

    (cherry picked from commit dc36bb3)
    jhoeller committed Aug 2, 2018
    Copy the full SHA
    13637ec View commit details
  3. Polishing

    jhoeller committed Aug 2, 2018
    Copy the full SHA
    75b323e View commit details

Commits on Aug 7, 2018

  1. DisposableBean javadoc refers to singletons as well as scoped beans

    Issue: SPR-17131
    
    (cherry picked from commit f155d21)
    jhoeller committed Aug 7, 2018
    Copy the full SHA
    73da153 View commit details
  2. Polishing

    jhoeller committed Aug 7, 2018
    Copy the full SHA
    89cadfa View commit details
  3. Polishing

    jhoeller committed Aug 7, 2018
    Copy the full SHA
    5515112 View commit details

Commits on Aug 8, 2018

  1. Expose checkbox field marker as 'hidden' to RequestDataValueProcessor

    Issue: SPR-17147
    
    (cherry picked from commit fa72186)
    jhoeller committed Aug 8, 2018
    Copy the full SHA
    bd060a1 View commit details
  2. Polishing

    jhoeller committed Aug 8, 2018
    Copy the full SHA
    c69fdfa View commit details
  3. Copy the full SHA
    e94c691 View commit details

Commits on Aug 9, 2018

  1. Polishing

    jhoeller committed Aug 9, 2018
    Copy the full SHA
    4b30fe2 View commit details
  2. Polishing

    jhoeller committed Aug 9, 2018
    Copy the full SHA
    45598ca View commit details
  3. Copy the full SHA
    5a66a33 View commit details
  4. Polishing

    jhoeller committed Aug 9, 2018
    Copy the full SHA
    73dfa9a View commit details

Commits on Aug 10, 2018

  1. Polishing

    jhoeller committed Aug 10, 2018
    Copy the full SHA
    687d350 View commit details

Commits on Aug 11, 2018

  1. Copy the full SHA
    b51685b View commit details

Commits on Aug 12, 2018

  1. Copy the full SHA
    5bd5df3 View commit details

Commits on Aug 13, 2018

  1. Polishing

    jhoeller committed Aug 13, 2018
    Copy the full SHA
    484a2f3 View commit details

Commits on Aug 14, 2018

  1. Copy the full SHA
    9de85f1 View commit details
Showing with 3,056 additions and 2,526 deletions.
  1. +5 −5 build.gradle
  2. +1 −1 gradle.properties
  3. +6 −5 spring-aop/src/main/java/org/springframework/aop/MethodMatcher.java
  4. +37 −50 ...g-aop/src/main/java/org/springframework/aop/aspectj/annotation/AbstractAspectJAdvisorFactory.java
  5. +46 −45 ...n/java/org/springframework/aop/aspectj/annotation/InstantiationModelAwarePointcutAdvisorImpl.java
  6. +15 −14 ...aop/src/main/java/org/springframework/aop/aspectj/annotation/ReflectiveAspectJAdvisorFactory.java
  7. +9 −10 spring-aop/src/main/java/org/springframework/aop/config/AopConfigUtils.java
  8. +8 −9 spring-aop/src/main/java/org/springframework/aop/config/AopNamespaceUtils.java
  9. +3 −3 spring-aop/src/main/java/org/springframework/aop/framework/AbstractAdvisingBeanPostProcessor.java
  10. +3 −4 spring-aop/src/main/java/org/springframework/aop/framework/AdvisedSupport.java
  11. +12 −8 spring-aop/src/main/java/org/springframework/aop/framework/CglibAopProxy.java
  12. +3 −4 spring-aop/src/main/java/org/springframework/aop/framework/DefaultAdvisorChainFactory.java
  13. +2 −2 spring-aop/src/main/java/org/springframework/aop/framework/ProxyCreatorSupport.java
  14. +2 −2 spring-aop/src/main/java/org/springframework/aop/framework/ProxyFactoryBean.java
  15. +10 −11 spring-aop/src/main/java/org/springframework/aop/framework/adapter/AdvisorAdapterRegistry.java
  16. +4 −1 ...-aop/src/main/java/org/springframework/aop/framework/adapter/AfterReturningAdviceInterceptor.java
  17. +8 −4 ...ng-aop/src/main/java/org/springframework/aop/framework/adapter/MethodBeforeAdviceInterceptor.java
  18. +38 −29 spring-aop/src/main/java/org/springframework/aop/framework/adapter/ThrowsAdviceInterceptor.java
  19. +3 −3 spring-aop/src/main/java/org/springframework/aop/framework/autoproxy/AbstractAutoProxyCreator.java
  20. +12 −15 .../src/main/java/org/springframework/aop/framework/autoproxy/BeanFactoryAdvisorRetrievalHelper.java
  21. +4 −4 ...ng-aop/src/main/java/org/springframework/aop/interceptor/SimpleAsyncUncaughtExceptionHandler.java
  22. +3 −2 spring-aop/src/main/java/org/springframework/aop/scope/ScopedProxyFactoryBean.java
  23. +4 −3 spring-aop/src/main/java/org/springframework/aop/support/AbstractRegexpMethodPointcut.java
  24. +3 −1 spring-aop/src/main/java/org/springframework/aop/support/DynamicMethodMatcher.java
  25. +1 −1 spring-aop/src/main/java/org/springframework/aop/support/DynamicMethodMatcherPointcut.java
  26. +4 −3 spring-aop/src/main/java/org/springframework/aop/support/RootClassFilter.java
  27. +3 −1 spring-aop/src/main/java/org/springframework/aop/support/StaticMethodMatcher.java
  28. +3 −3 spring-aop/src/main/java/org/springframework/aop/target/AbstractPrototypeBasedTargetSource.java
  29. +2 −2 ...g-aop/src/test/java/org/springframework/aop/aspectj/MethodInvocationProceedingJoinPointTests.java
  30. +1 −1 ...g-aspects/src/main/java/org/springframework/transaction/aspectj/JtaAnnotationTransactionAspect.aj
  31. +7 −7 spring-beans/src/main/java/org/springframework/beans/factory/BeanDefinitionStoreException.java
  32. +16 −14 spring-beans/src/main/java/org/springframework/beans/factory/DisposableBean.java
  33. +17 −19 spring-beans/src/main/java/org/springframework/beans/factory/InitializingBean.java
  34. +7 −8 .../main/java/org/springframework/beans/factory/annotation/AutowiredAnnotationBeanPostProcessor.java
  35. +7 −4 spring-beans/src/main/java/org/springframework/beans/factory/annotation/InjectionMetadata.java
  36. +7 −5 ...va/org/springframework/beans/factory/annotation/QualifierAnnotationAutowireCandidateResolver.java
  37. +5 −6 spring-beans/src/main/java/org/springframework/beans/factory/config/AbstractFactoryBean.java
  38. +2 −3 spring-beans/src/main/java/org/springframework/beans/factory/config/DependencyDescriptor.java
  39. +8 −8 ...ans/src/main/java/org/springframework/beans/factory/config/DestructionAwareBeanPostProcessor.java
  40. +1 −1 spring-beans/src/main/java/org/springframework/beans/factory/parsing/ComponentDefinition.java
  41. +24 −27 ...s/src/main/java/org/springframework/beans/factory/support/AbstractAutowireCapableBeanFactory.java
  42. +2 −1 spring-beans/src/main/java/org/springframework/beans/factory/support/BeanDefinitionRegistry.java
  43. +79 −75 spring-beans/src/main/java/org/springframework/beans/factory/support/DefaultListableBeanFactory.java
  44. +10 −5 ...ng-beans/src/main/java/org/springframework/beans/factory/xml/DefaultNamespaceHandlerResolver.java
  45. +8 −6 spring-beans/src/main/java/org/springframework/beans/factory/xml/PluggableSchemaResolver.java
  46. +9 −8 spring-beans/src/main/java/org/springframework/beans/factory/xml/XmlBeanDefinitionReader.java
  47. +8 −2 spring-beans/src/main/java/org/springframework/beans/support/PagedListHolder.java
  48. +12 −14 ...est/java/org/springframework/beans/factory/annotation/InjectAnnotationBeanPostProcessorTests.java
  49. +21 −25 spring-beans/src/test/java/org/springframework/beans/factory/config/CustomScopeConfigurerTests.java
  50. +3 −8 spring-beans/src/test/java/org/springframework/beans/factory/config/DeprecatedBeanWarnerTests.java
  51. +22 −17 spring-beans/src/test/java/org/springframework/beans/factory/xml/XmlListableBeanFactoryTests.java
  52. +6 −5 spring-context-support/src/main/java/org/springframework/cache/jcache/JCacheCache.java
  53. +4 −4 spring-context-support/src/main/java/org/springframework/cache/jcache/JCacheCacheManager.java
  54. +2 −2 ...-context-support/src/main/java/org/springframework/scheduling/commonj/ScheduledTimerListener.java
  55. +13 −5 spring-context-support/src/main/java/org/springframework/scheduling/quartz/SchedulerAccessor.java
  56. +3 −3 spring-context-support/src/main/java/org/springframework/scheduling/quartz/SchedulerFactoryBean.java
  57. +3 −3 ...c/test/java/org/springframework/cache/jcache/interceptor/AnnotationCacheOperationSourceTests.java
  58. +1 −1 spring-context-support/src/test/resources/org/springframework/scheduling/quartz/quartz-hsql.sql
  59. +4 −5 ...ng-context/src/main/java/org/springframework/cache/annotation/AnnotationCacheOperationSource.java
  60. +17 −18 spring-context/src/main/java/org/springframework/cache/annotation/CacheAnnotationParser.java
  61. +8 −8 spring-context/src/main/java/org/springframework/cache/annotation/CachingConfigurationSelector.java
  62. +3 −3 spring-context/src/main/java/org/springframework/cache/annotation/CachingConfigurerSupport.java
  63. +2 −2 spring-context/src/main/java/org/springframework/cache/annotation/ProxyCachingConfiguration.java
  64. +5 −3 spring-context/src/main/java/org/springframework/cache/annotation/SpringCacheAnnotationParser.java
  65. +10 −10 ...ext/src/main/java/org/springframework/cache/config/AnnotationDrivenCacheBeanDefinitionParser.java
  66. +18 −11 spring-context/src/main/java/org/springframework/cache/interceptor/AbstractCacheResolver.java
  67. +12 −14 ...ext/src/main/java/org/springframework/cache/interceptor/AbstractFallbackCacheOperationSource.java
  68. +4 −2 spring-context/src/main/java/org/springframework/cache/interceptor/CacheAspectSupport.java
  69. +3 −3 spring-context/src/main/java/org/springframework/context/ConfigurableApplicationContext.java
  70. +12 −10 spring-context/src/main/java/org/springframework/context/Lifecycle.java
  71. +22 −22 spring-context/src/main/java/org/springframework/context/SmartLifecycle.java
  72. +12 −3 spring-context/src/main/java/org/springframework/context/annotation/AdviceMode.java
  73. +16 −13 spring-context/src/main/java/org/springframework/context/annotation/AdviceModeImportSelector.java
  74. +4 −5 ...text/src/main/java/org/springframework/context/annotation/AnnotationConfigApplicationContext.java
  75. +3 −3 spring-context/src/main/java/org/springframework/context/annotation/AnnotationConfigUtils.java
  76. +2 −2 spring-context/src/main/java/org/springframework/context/annotation/AutoProxyRegistrar.java
  77. +6 −5 spring-context/src/main/java/org/springframework/context/annotation/BeanAnnotationHelper.java
  78. +2 −2 spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClassEnhancer.java
  79. +9 −8 ...context/src/main/java/org/springframework/context/annotation/ConfigurationClassPostProcessor.java
  80. +8 −5 spring-context/src/main/java/org/springframework/context/event/DefaultEventListenerFactory.java
  81. +2 −3 spring-context/src/main/java/org/springframework/context/event/EventListenerMethodProcessor.java
  82. +8 −4 spring-context/src/main/java/org/springframework/context/event/GenericApplicationListener.java
  83. +10 −6 ...ng-context/src/main/java/org/springframework/context/event/SimpleApplicationEventMulticaster.java
  84. +7 −5 spring-context/src/main/java/org/springframework/context/event/SmartApplicationListener.java
  85. +27 −23 spring-context/src/main/java/org/springframework/context/support/DefaultLifecycleProcessor.java
  86. +4 −4 spring-context/src/main/java/org/springframework/context/support/DefaultMessageSourceResolvable.java
  87. +18 −16 ...ntext/src/main/java/org/springframework/context/support/PropertySourcesPlaceholderConfigurer.java
  88. +18 −20 .../src/main/java/org/springframework/jmx/export/assembler/AbstractReflectiveMBeanInfoAssembler.java
  89. +7 −5 spring-context/src/main/java/org/springframework/jmx/support/MBeanRegistrationSupport.java
  90. +5 −4 spring-context/src/main/java/org/springframework/remoting/rmi/RmiServiceExporter.java
  91. +3 −3 spring-context/src/main/java/org/springframework/remoting/support/RemoteInvocationBasedExporter.java
  92. +11 −8 ...g-context/src/main/java/org/springframework/scheduling/annotation/AsyncConfigurationSelector.java
  93. +10 −5 spring-context/src/main/java/org/springframework/scheduling/annotation/EnableAsync.java
  94. +6 −5 spring-context/src/main/java/org/springframework/scheduling/annotation/Scheduled.java
  95. +15 −3 ...src/main/java/org/springframework/scheduling/annotation/ScheduledAnnotationBeanPostProcessor.java
  96. +2 −2 spring-context/src/main/java/org/springframework/scheduling/concurrent/ScheduledExecutorTask.java
  97. +11 −1 ...ontext/src/main/java/org/springframework/scheduling/concurrent/ThreadPoolExecutorFactoryBean.java
  98. +16 −8 spring-context/src/main/java/org/springframework/scheduling/concurrent/ThreadPoolTaskExecutor.java
  99. +11 −11 spring-context/src/test/java/org/springframework/aop/framework/ProxyFactoryBeanTests.java
  100. +9 −9 ...ntext/src/test/java/org/springframework/cache/annotation/AnnotationCacheOperationSourceTests.java
  101. +28 −1 ...xt/src/test/java/org/springframework/context/annotation/ConfigurationClassPostProcessorTests.java
  102. +14 −2 ...org/springframework/context/annotation/configuration/BeanAnnotationAttributePropagationTests.java
  103. +5 −7 spring-context/src/test/java/org/springframework/scheduling/annotation/EnableAsyncTests.java
  104. +3 −16 spring-context/src/test/java/org/springframework/scheduling/annotation/EnableSchedulingTests.java
  105. +60 −25 ...est/java/org/springframework/scheduling/annotation/ScheduledAnnotationBeanPostProcessorTests.java
  106. +10 −10 ...text/src/test/java/org/springframework/validation/beanvalidation/SpringValidatorAdapterTests.java
  107. +13 −14 ...ng-context/src/test/java/org/springframework/validation/beanvalidation/ValidatorFactoryTests.java
  108. +1 −1 .../resources/org/springframework/context/access/ContextSingletonBeanFactoryLocatorTests-context.xml
  109. +2 −2 spring-core/src/main/java/org/springframework/core/GenericTypeResolver.java
  110. +12 −11 spring-core/src/main/java/org/springframework/core/SerializableTypeWrapper.java
  111. +3 −1 spring-core/src/main/java/org/springframework/core/SimpleAliasRegistry.java
  112. +20 −25 spring-core/src/main/java/org/springframework/core/annotation/AnnotatedElementUtils.java
  113. +3 −0 spring-core/src/main/java/org/springframework/core/annotation/AnnotationUtils.java
  114. +4 −6 spring-core/src/main/java/org/springframework/core/convert/support/ConversionUtils.java
  115. +5 −1 spring-core/src/main/java/org/springframework/core/env/AbstractEnvironment.java
  116. +3 −3 spring-core/src/main/java/org/springframework/core/io/support/LocalizedResourceHelper.java
  117. +18 −19 .../src/main/java/org/springframework/core/type/classreading/AnnotationAttributesReadingVisitor.java
  118. +69 −57 spring-core/src/main/java/org/springframework/util/ConcurrentReferenceHashMap.java
  119. +26 −26 spring-core/src/main/java/org/springframework/util/MimeTypeUtils.java
  120. +1 −1 spring-core/src/main/java/org/springframework/util/StringUtils.java
  121. +6 −11 spring-core/src/main/java/org/springframework/util/xml/AbstractStaxXMLReader.java
  122. +12 −15 spring-core/src/main/java/org/springframework/util/xml/AbstractXMLStreamReader.java
  123. +28 −32 spring-core/src/main/java/org/springframework/util/xml/DomContentHandler.java
  124. +8 −8 spring-core/src/main/java/org/springframework/util/xml/StaxEventHandler.java
  125. +4 −6 spring-core/src/main/java/org/springframework/util/xml/StaxEventXMLReader.java
  126. +0 −3 spring-core/src/main/java/org/springframework/util/xml/StaxStreamHandler.java
  127. +2 −4 spring-core/src/main/java/org/springframework/util/xml/StaxStreamXMLReader.java
  128. +3 −3 spring-core/src/main/java/org/springframework/util/xml/XMLEventStreamReader.java
  129. +1 −5 spring-core/src/main/java/org/springframework/util/xml/XMLEventStreamWriter.java
  130. +63 −0 spring-core/src/test/java/org/springframework/core/SimpleAliasRegistryTests.java
  131. +10 −14 spring-core/src/test/java/org/springframework/core/annotation/AnnotationUtilsTests.java
  132. +9 −2 spring-core/src/test/java/org/springframework/core/annotation/OrderUtilsTests.java
  133. +92 −62 spring-expression/src/main/java/org/springframework/expression/spel/CodeFlow.java
  134. +5 −1 spring-expression/src/main/java/org/springframework/expression/spel/ast/Elvis.java
  135. +2 −3 spring-expression/src/main/java/org/springframework/expression/spel/ast/OpEQ.java
  136. +4 −4 spring-expression/src/main/java/org/springframework/expression/spel/ast/OpPlus.java
  137. +19 −14 spring-expression/src/main/java/org/springframework/expression/spel/ast/Operator.java
  138. +10 −16 spring-expression/src/main/java/org/springframework/expression/spel/standard/SpelExpression.java
  139. +116 −46 ...ng-expression/src/test/java/org/springframework/expression/spel/SpelCompilationCoverageTests.java
  140. +2 −2 spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/CallMetaDataContext.java
  141. +9 −4 spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/TableMetaDataContext.java
  142. +15 −15 spring-jdbc/src/main/java/org/springframework/jdbc/datasource/LazyConnectionDataSourceProxy.java
  143. +3 −5 spring-jdbc/src/main/java/org/springframework/jdbc/datasource/embedded/EmbeddedDatabaseFactory.java
  144. +2 −2 spring-jdbc/src/main/java/org/springframework/jdbc/object/BatchSqlUpdate.java
  145. +3 −3 spring-jdbc/src/main/java/org/springframework/jdbc/support/SQLErrorCodesFactory.java
  146. +2 −2 spring-jdbc/src/main/java/org/springframework/jdbc/support/lob/TemporaryLobCreator.java
  147. +24 −17 ...-jms/src/main/java/org/springframework/jms/annotation/JmsListenerAnnotationBeanPostProcessor.java
  148. +7 −7 spring-jms/src/main/java/org/springframework/jms/config/JmsListenerEndpointRegistry.java
  149. +2 −2 ...g-jms/src/main/java/org/springframework/jms/listener/AbstractPollingMessageListenerContainer.java
  150. +2 −2 ...jms/src/main/java/org/springframework/jms/support/destination/BeanFactoryDestinationResolver.java
  151. +63 −17 ...src/test/java/org/springframework/jms/annotation/JmsListenerAnnotationBeanPostProcessorTests.java
  152. +2 −1 ...saging/src/main/java/org/springframework/messaging/converter/MappingJackson2MessageConverter.java
  153. +1 −1 ...ava/org/springframework/messaging/simp/annotation/support/SimpAnnotationMethodMessageHandler.java
  154. +4 −4 ...essaging/src/main/java/org/springframework/messaging/simp/user/UserDestinationMessageHandler.java
  155. +2 −2 spring-messaging/src/main/java/org/springframework/messaging/support/AbstractHeaderMapper.java
  156. +8 −7 spring-orm/src/main/java/org/springframework/orm/jpa/SharedEntityManagerCreator.java
  157. +55 −2 spring-orm/src/test/java/org/springframework/orm/jpa/SharedEntityManagerCreatorTests.java
  158. +11 −8 spring-oxm/src/main/java/org/springframework/oxm/jibx/JibxMarshaller.java
  159. +1 −1 spring-oxm/src/main/java/org/springframework/oxm/support/package-info.java
  160. +52 −54 .../src/main/java/org/springframework/test/context/support/AbstractDelegatingSmartContextLoader.java
  161. +5 −5 .../main/java/org/springframework/test/context/support/DependencyInjectionTestExecutionListener.java
  162. +4 −1 spring-test/src/main/java/org/springframework/test/web/client/AbstractRequestExpectationManager.java
  163. +6 −4 spring-test/src/main/java/org/springframework/test/web/servlet/DefaultMvcResult.java
  164. +1 −2 spring-test/src/main/java/org/springframework/test/web/servlet/ResultMatcher.java
  165. +23 −22 spring-test/src/test/java/org/springframework/test/context/groovy/GroovySpringContextTests.java
  166. +54 −51 ...t/java/org/springframework/test/context/junit4/ConcreteTransactionalJUnit4SpringContextTests.java
  167. +40 −43 ...est/src/test/java/org/springframework/test/context/junit4/SpringJUnit4ClassRunnerAppCtxTests.java
  168. +71 −67 ...t/java/org/springframework/test/context/testng/ConcreteTransactionalTestNGSpringContextTests.java
  169. +1 −1 spring-tx/src/main/java/org/springframework/dao/CannotAcquireLockException.java
  170. +7 −7 spring-tx/src/main/java/org/springframework/transaction/TransactionStatus.java
  171. +11 −12 ...rc/main/java/org/springframework/transaction/annotation/AnnotationTransactionAttributeSource.java
  172. +4 −3 ...-tx/src/main/java/org/springframework/transaction/annotation/Ejb3TransactionAnnotationParser.java
  173. +15 −14 ...g-tx/src/main/java/org/springframework/transaction/annotation/JtaTransactionAnnotationParser.java
  174. +19 −21 ...x/src/main/java/org/springframework/transaction/annotation/SpringTransactionAnnotationParser.java
  175. +7 −9 spring-tx/src/main/java/org/springframework/transaction/annotation/TransactionAnnotationParser.java
  176. +9 −7 ...n/java/org/springframework/transaction/annotation/TransactionManagementConfigurationSelector.java
  177. +1 −1 spring-tx/src/main/java/org/springframework/transaction/annotation/Transactional.java
  178. +4 −4 spring-tx/src/main/java/org/springframework/transaction/event/TransactionalEventListenerFactory.java
  179. +21 −18 .../java/org/springframework/transaction/interceptor/AbstractFallbackTransactionAttributeSource.java
  180. +3 −2 spring-tx/src/main/java/org/springframework/transaction/interceptor/DefaultTransactionAttribute.java
  181. +28 −25 spring-tx/src/main/java/org/springframework/transaction/support/DefaultTransactionStatus.java
  182. +6 −9 spring-tx/src/main/java/org/springframework/transaction/support/SimpleTransactionStatus.java
  183. +10 −10 ...g-tx/src/test/java/org/springframework/transaction/interceptor/MapTransactionAttributeSource.java
  184. +11 −11 spring-web/src/main/java/org/springframework/http/HttpHeaders.java
  185. +2 −2 spring-web/src/main/java/org/springframework/http/HttpMethod.java
  186. +5 −3 spring-web/src/main/java/org/springframework/http/client/OkHttp3ClientHttpRequestFactory.java
  187. +4 −2 spring-web/src/main/java/org/springframework/http/converter/AbstractHttpMessageConverter.java
  188. +11 −13 ...b/src/main/java/org/springframework/http/converter/json/AbstractJackson2HttpMessageConverter.java
  189. +5 −5 ...g-web/src/main/java/org/springframework/http/converter/protobuf/ExtensionRegistryInitializer.java
  190. +3 −3 ...g-web/src/main/java/org/springframework/http/converter/xml/AbstractJaxb2HttpMessageConverter.java
  191. +13 −8 spring-web/src/main/java/org/springframework/http/converter/xml/AbstractXmlHttpMessageConverter.java
  192. +3 −3 ...web/src/main/java/org/springframework/http/converter/xml/Jaxb2CollectionHttpMessageConverter.java
  193. +3 −4 ...eb/src/main/java/org/springframework/http/converter/xml/Jaxb2RootElementHttpMessageConverter.java
  194. +2 −2 spring-web/src/main/java/org/springframework/remoting/caucho/HessianServiceExporter.java
  195. +6 −5 ...ng-web/src/main/java/org/springframework/remoting/jaxws/SimpleHttpServerJaxWsServiceExporter.java
  196. +2 −2 spring-web/src/main/java/org/springframework/web/bind/MissingPathVariableException.java
  197. +2 −2 spring-web/src/main/java/org/springframework/web/context/support/GroovyWebApplicationContext.java
  198. +2 −2 spring-web/src/main/java/org/springframework/web/cors/CorsProcessor.java
  199. +1 −1 spring-web/src/main/java/org/springframework/web/cors/CorsUtils.java
  200. +16 −16 spring-web/src/main/java/org/springframework/web/method/annotation/InitBinderDataBinderFactory.java
  201. +5 −4 spring-web/src/main/java/org/springframework/web/method/support/ModelAndViewContainer.java
  202. +1 −1 spring-web/src/main/java/org/springframework/web/util/HtmlCharacterEntityReferences.java
  203. +2 −2 spring-web/src/test/java/org/springframework/web/bind/ServletRequestDataBinderTests.java
  204. +2 −2 spring-web/src/test/java/org/springframework/web/bind/support/WebRequestDataBinderTests.java
  205. +3 −3 spring-web/src/test/java/org/springframework/web/util/HtmlCharacterEntityReferencesTests.java
  206. +55 −57 ...vc/src/main/java/org/springframework/web/servlet/config/AnnotationDrivenBeanDefinitionParser.java
  207. +6 −6 ...ng-webmvc/src/main/java/org/springframework/web/servlet/config/ResourcesBeanDefinitionParser.java
  208. +77 −82 ...c/src/main/java/org/springframework/web/servlet/config/annotation/WebMvcConfigurationSupport.java
  209. +6 −4 ...ebmvc/src/main/java/org/springframework/web/servlet/handler/AbstractHandlerExceptionResolver.java
  210. +23 −23 ...main/java/org/springframework/web/servlet/mvc/method/annotation/RequestMappingHandlerAdapter.java
  211. +10 −9 ...main/java/org/springframework/web/servlet/mvc/method/annotation/RequestMappingHandlerMapping.java
  212. +26 −38 ...vc/src/main/java/org/springframework/web/servlet/mvc/support/DefaultHandlerExceptionResolver.java
  213. +17 −4 spring-webmvc/src/main/java/org/springframework/web/servlet/resource/GzipResourceResolver.java
  214. +3 −3 spring-webmvc/src/main/java/org/springframework/web/servlet/resource/VersionResourceResolver.java
  215. +2 −2 ...bmvc/src/main/java/org/springframework/web/servlet/tags/form/AbstractDataBoundFormElementTag.java
  216. +2 −2 ...ng-webmvc/src/main/java/org/springframework/web/servlet/tags/form/AbstractHtmlElementBodyTag.java
  217. +2 −2 spring-webmvc/src/main/java/org/springframework/web/servlet/tags/form/AbstractHtmlElementTag.java
  218. +3 −3 spring-webmvc/src/main/java/org/springframework/web/servlet/tags/form/ButtonTag.java
  219. +2 −2 spring-webmvc/src/main/java/org/springframework/web/servlet/tags/form/CheckboxTag.java
  220. +2 −2 spring-webmvc/src/main/java/org/springframework/web/servlet/tags/form/CheckboxesTag.java
  221. +10 −14 spring-webmvc/src/main/java/org/springframework/web/servlet/tags/form/InputTag.java
  222. +3 −3 spring-webmvc/src/main/java/org/springframework/web/servlet/tags/form/OptionTag.java
  223. +11 −11 spring-webmvc/src/main/java/org/springframework/web/servlet/tags/form/OptionWriter.java
  224. +1 −2 spring-webmvc/src/main/java/org/springframework/web/servlet/tags/form/OptionsTag.java
  225. +4 −4 spring-webmvc/src/main/java/org/springframework/web/servlet/tags/form/SelectTag.java
  226. +2 −2 spring-webmvc/src/main/java/org/springframework/web/servlet/tags/form/TagWriter.java
  227. +2 −1 spring-webmvc/src/main/java/org/springframework/web/servlet/tags/form/TextareaTag.java
  228. +5 −4 spring-webmvc/src/main/java/org/springframework/web/servlet/view/AbstractView.java
  229. +17 −13 spring-webmvc/src/main/java/org/springframework/web/servlet/view/UrlBasedViewResolver.java
  230. +11 −11 spring-webmvc/src/main/java/org/springframework/web/servlet/view/json/AbstractJackson2View.java
  231. +2 −2 spring-webmvc/src/main/java/org/springframework/web/servlet/view/json/MappingJackson2JsonView.java
  232. +6 −10 spring-webmvc/src/main/java/org/springframework/web/servlet/view/xml/MappingJackson2XmlView.java
  233. +30 −30 spring-webmvc/src/main/resources/org/springframework/web/servlet/view/freemarker/spring.ftl
  234. +1 −1 spring-webmvc/src/test/resources/org/springframework/web/context/ref1.xml
  235. +25 −28 ...g-websocket/src/main/java/org/springframework/web/socket/config/HandlersBeanDefinitionParser.java
  236. +16 −18 ...socket/src/main/java/org/springframework/web/socket/config/MessageBrokerBeanDefinitionParser.java
  237. +12 −12 spring-websocket/src/main/java/org/springframework/web/socket/config/WebSocketNamespaceUtils.java
  238. +1 −1 ...ket/src/main/java/org/springframework/web/socket/handler/ConcurrentWebSocketSessionDecorator.java
  239. +4 −2 ...c/main/java/org/springframework/web/socket/messaging/WebSocketAnnotationMethodMessageHandler.java
  240. +11 −8 spring-websocket/src/main/java/org/springframework/web/socket/messaging/WebSocketStompClient.java
  241. +2 −1 ...ebsocket/src/main/java/org/springframework/web/socket/server/support/WebSocketHandlerMapping.java
  242. +2 −2 ...c/main/java/org/springframework/web/socket/sockjs/transport/handler/AbstractTransportHandler.java
  243. +87 −22 src/asciidoc/core-aop.adoc
  244. +86 −68 src/asciidoc/core-beans.adoc
  245. +36 −27 src/asciidoc/core-validation.adoc
  246. +67 −83 src/asciidoc/integration.adoc
  247. +2 −2 src/asciidoc/web-view.adoc
  248. +2 −2 ...est/java/org/springframework/aop/framework/autoproxy/AdvisorAutoProxyCreatorIntegrationTests.java
10 changes: 5 additions & 5 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -52,7 +52,7 @@ configure(allprojects) { project ->
ext.hsqldbVersion = "2.3.4"
ext.httpasyncVersion = "4.1.3"
ext.httpclientVersion = "4.5.5"
ext.jackson2Version = "2.8.11.1"
ext.jackson2Version = "2.8.11.2"
ext.jasperreportsVersion = "6.2.1" // our tests fail with JR-internal NPEs against 6.2.2 and higher
ext.javamailVersion = "1.5.6"
ext.jettyVersion = "9.3.14.v20161028" // as of 9.3.15, Jetty has hard Servlet 3.1 requirement
@@ -62,20 +62,20 @@ configure(allprojects) { project ->
ext.jtaVersion = "1.2"
ext.junitVersion = "4.12"
ext.log4jVersion = "1.2.17"
ext.nettyVersion = "4.1.25.Final"
ext.nettyVersion = "4.1.29.Final"
ext.okhttpVersion = "2.7.5"
ext.okhttp3Version = "3.8.1"
ext.openjpaVersion = "2.4.2"
ext.poiVersion = "3.14"
ext.reactorVersion = "2.0.8.RELEASE"
ext.romeVersion = "1.7.4"
ext.slf4jVersion = "1.7.21"
ext.slf4jVersion = "1.7.25"
ext.snakeyamlVersion = "1.17"
ext.snifferVersion = "1.16"
ext.testngVersion = "6.9.10"
ext.tiles2Version = "2.2.2"
ext.tiles3Version = "3.0.7"
ext.tomcatVersion = "8.5.31"
ext.tomcatVersion = "8.5.33"
ext.tyrusVersion = "1.3.5" // constrained by WebLogic 12.1.3 support
ext.undertowVersion = "1.3.33.Final"
ext.xmlunitVersion = "1.6"
@@ -726,7 +726,7 @@ project("spring-web") {
}
testCompile("com.fasterxml.jackson.datatype:jackson-datatype-joda:2.8.11")
testCompile("com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.8.11")
testCompile("com.fasterxml.jackson.module:jackson-module-kotlin:${jackson2Version}")
testCompile("com.fasterxml.jackson.module:jackson-module-kotlin:2.8.11.1")
testCompile("com.squareup.okhttp3:mockwebserver:${okhttp3Version}")
testRuntime("com.sun.mail:javax.mail:${javamailVersion}")
}
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
@@ -1 +1 @@
version=4.3.18.BUILD-SNAPSHOT
version=4.3.19.RELEASE
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright 2002-2015 the original author or authors.
* Copyright 2002-2018 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -48,10 +48,11 @@
public interface MethodMatcher {

/**
* Perform static checking whether the given method matches. If this
* returns {@code false} or if the {@link #isRuntime()} method
* returns {@code false}, no runtime check (i.e. no.
* {@link #matches(java.lang.reflect.Method, Class, Object[])} call) will be made.
* Perform static checking whether the given method matches.
* <p>If this returns {@code false} or if the {@link #isRuntime()}
* method returns {@code false}, no runtime check (i.e. no
* {@link #matches(java.lang.reflect.Method, Class, Object[])} call)
* will be made.
* @param method the candidate method
* @param targetClass the target class (may be {@code null}, in which case
* the candidate class must be taken to be the method's declaring class)
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright 2002-2016 the original author or authors.
* Copyright 2002-2018 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -59,6 +59,9 @@ public abstract class AbstractAspectJAdvisorFactory implements AspectJAdvisorFac

private static final String AJC_MAGIC = "ajc$";

private static final Class<?>[] ASPECTJ_ANNOTATION_CLASSES = new Class<?>[] {
Pointcut.class, Around.class, Before.class, After.class, AfterReturning.class, AfterThrowing.class};


/** Logger available to subclasses */
protected final Log logger = LogFactory.getLog(getClass());
@@ -122,14 +125,12 @@ public void validate(Class<?> aspectClass) throws AopConfigException {

/**
* Find and return the first AspectJ annotation on the given method
* (there <i>should</i> only be one anyway...)
* (there <i>should</i> only be one anyway...).
*/
@SuppressWarnings("unchecked")
protected static AspectJAnnotation<?> findAspectJAnnotationOnMethod(Method method) {
Class<?>[] classesToLookFor = new Class<?>[] {
Before.class, Around.class, After.class, AfterReturning.class, AfterThrowing.class, Pointcut.class};
for (Class<?> c : classesToLookFor) {
AspectJAnnotation<?> foundAnnotation = findAnnotation(method, (Class<Annotation>) c);
for (Class<?> clazz : ASPECTJ_ANNOTATION_CLASSES) {
AspectJAnnotation<?> foundAnnotation = findAnnotation(method, (Class<Annotation>) clazz);
if (foundAnnotation != null) {
return foundAnnotation;
}
@@ -148,14 +149,13 @@ private static <A extends Annotation> AspectJAnnotation<A> findAnnotation(Method
}


/**
* Enum for AspectJ annotation types.
* @see AspectJAnnotation#getAnnotationType()
*/
protected enum AspectJAnnotationType {

AtPointcut,
AtBefore,
AtAfter,
AtAfterReturning,
AtAfterThrowing,
AtAround
AtPointcut, AtAround, AtBefore, AtAfter, AtAfterReturning, AtAfterThrowing
}


@@ -165,18 +165,18 @@ protected enum AspectJAnnotationType {
*/
protected static class AspectJAnnotation<A extends Annotation> {

private static final String[] EXPRESSION_PROPERTIES = new String[] {"value", "pointcut"};
private static final String[] EXPRESSION_ATTRIBUTES = new String[] {"pointcut", "value"};

private static Map<Class<?>, AspectJAnnotationType> annotationTypes =
new HashMap<Class<?>, AspectJAnnotationType>();
private static Map<Class<?>, AspectJAnnotationType> annotationTypeMap =
new HashMap<Class<?>, AspectJAnnotationType>(8);

static {
annotationTypes.put(Pointcut.class,AspectJAnnotationType.AtPointcut);
annotationTypes.put(After.class,AspectJAnnotationType.AtAfter);
annotationTypes.put(AfterReturning.class,AspectJAnnotationType.AtAfterReturning);
annotationTypes.put(AfterThrowing.class,AspectJAnnotationType.AtAfterThrowing);
annotationTypes.put(Around.class,AspectJAnnotationType.AtAround);
annotationTypes.put(Before.class,AspectJAnnotationType.AtBefore);
annotationTypeMap.put(Pointcut.class, AspectJAnnotationType.AtPointcut);
annotationTypeMap.put(Around.class, AspectJAnnotationType.AtAround);
annotationTypeMap.put(Before.class, AspectJAnnotationType.AtBefore);
annotationTypeMap.put(After.class, AspectJAnnotationType.AtAfter);
annotationTypeMap.put(AfterReturning.class, AspectJAnnotationType.AtAfterReturning);
annotationTypeMap.put(AfterThrowing.class, AspectJAnnotationType.AtAfterThrowing);
}

private final A annotation;
@@ -190,44 +190,31 @@ protected static class AspectJAnnotation<A extends Annotation> {
public AspectJAnnotation(A annotation) {
this.annotation = annotation;
this.annotationType = determineAnnotationType(annotation);
// We know these methods exist with the same name on each object,
// but need to invoke them reflectively as there isn't a common interface.
try {
this.pointcutExpression = resolveExpression(annotation);
this.argumentNames = (String) annotation.getClass().getMethod("argNames").invoke(annotation);
this.argumentNames = (String) AnnotationUtils.getValue(annotation, "argNames");
}
catch (Exception ex) {
throw new IllegalArgumentException(annotation + " cannot be an AspectJ annotation", ex);
throw new IllegalArgumentException(annotation + " is not a valid AspectJ annotation", ex);
}
}

private AspectJAnnotationType determineAnnotationType(A annotation) {
for (Class<?> type : annotationTypes.keySet()) {
if (type.isInstance(annotation)) {
return annotationTypes.get(type);
}
AspectJAnnotationType type = annotationTypeMap.get(annotation.annotationType());
if (type != null) {
return type;
}
throw new IllegalStateException("Unknown annotation type: " + annotation.toString());
throw new IllegalStateException("Unknown annotation type: " + annotation);
}

private String resolveExpression(A annotation) throws Exception {
String expression = null;
for (String methodName : EXPRESSION_PROPERTIES) {
Method method;
try {
method = annotation.getClass().getDeclaredMethod(methodName);
}
catch (NoSuchMethodException ex) {
method = null;
}
if (method != null) {
String candidate = (String) method.invoke(annotation);
if (StringUtils.hasText(candidate)) {
expression = candidate;
}
private String resolveExpression(A annotation) {
for (String attributeName : EXPRESSION_ATTRIBUTES) {
String candidate = (String) AnnotationUtils.getValue(annotation, attributeName);
if (StringUtils.hasText(candidate)) {
return candidate;
}
}
return expression;
throw new IllegalStateException("Failed to resolve expression: " + annotation);
}

public AspectJAnnotationType getAnnotationType() {
@@ -268,11 +255,11 @@ public String[] getParameterNames(Method method) {
if (annotation == null) {
return null;
}
StringTokenizer strTok = new StringTokenizer(annotation.getArgumentNames(), ",");
if (strTok.countTokens() > 0) {
String[] names = new String[strTok.countTokens()];
StringTokenizer nameTokens = new StringTokenizer(annotation.getArgumentNames(), ",");
if (nameTokens.countTokens() > 0) {
String[] names = new String[nameTokens.countTokens()];
for (int i = 0; i < names.length; i++) {
names[i] = strTok.nextToken();
names[i] = nameTokens.nextToken();
}
return names;
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright 2002-2015 the original author or authors.
* Copyright 2002-2018 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -109,29 +109,22 @@ public InstantiationModelAwarePointcutAdvisorImpl(AspectJExpressionPointcut decl


/**
* The pointcut for Spring AOP to use. Actual behaviour of the pointcut will change
* depending on the state of the advice.
* The pointcut for Spring AOP to use.
* Actual behaviour of the pointcut will change depending on the state of the advice.
*/
@Override
public Pointcut getPointcut() {
return this.pointcut;
}

/**
* This is only of interest for Spring AOP: AspectJ instantiation semantics
* are much richer. In AspectJ terminology, all a return of {@code true}
* means here is that the aspect is not a SINGLETON.
*/
@Override
public boolean isPerInstance() {
return (getAspectMetadata().getAjType().getPerClause().getKind() != PerClauseKind.SINGLETON);
public boolean isLazy() {
return this.lazy;
}

/**
* Return the AspectJ AspectMetadata for this advisor.
*/
public AspectMetadata getAspectMetadata() {
return this.aspectInstanceFactory.getAspectMetadata();
@Override
public synchronized boolean isAdviceInstantiated() {
return (this.instantiatedAdvice != null);
}

/**
@@ -145,20 +138,26 @@ public synchronized Advice getAdvice() {
return this.instantiatedAdvice;
}

@Override
public boolean isLazy() {
return this.lazy;
private Advice instantiateAdvice(AspectJExpressionPointcut pcut) {
return this.aspectJAdvisorFactory.getAdvice(this.aspectJAdviceMethod, pcut,
this.aspectInstanceFactory, this.declarationOrder, this.aspectName);
}

/**
* This is only of interest for Spring AOP: AspectJ instantiation semantics
* are much richer. In AspectJ terminology, all a return of {@code true}
* means here is that the aspect is not a SINGLETON.
*/
@Override
public synchronized boolean isAdviceInstantiated() {
return (this.instantiatedAdvice != null);
public boolean isPerInstance() {
return (getAspectMetadata().getAjType().getPerClause().getKind() != PerClauseKind.SINGLETON);
}


private Advice instantiateAdvice(AspectJExpressionPointcut pcut) {
return this.aspectJAdvisorFactory.getAdvice(this.aspectJAdviceMethod, pcut,
this.aspectInstanceFactory, this.declarationOrder, this.aspectName);
/**
* Return the AspectJ AspectMetadata for this advisor.
*/
public AspectMetadata getAspectMetadata() {
return this.aspectInstanceFactory.getAspectMetadata();
}

public MetadataAwareAspectInstanceFactory getAspectInstanceFactory() {
@@ -213,33 +212,26 @@ private void determineAdviceType() {
}
else {
switch (aspectJAnnotation.getAnnotationType()) {
case AtAfter:
case AtAfterReturning:
case AtAfterThrowing:
this.isAfterAdvice = true;
this.isBeforeAdvice = false;
break;
case AtAround:
case AtPointcut:
this.isAfterAdvice = false;
case AtAround:
this.isBeforeAdvice = false;
this.isAfterAdvice = false;
break;
case AtBefore:
this.isAfterAdvice = false;
this.isBeforeAdvice = true;
this.isAfterAdvice = false;
break;
case AtAfter:
case AtAfterReturning:
case AtAfterThrowing:
this.isBeforeAdvice = false;
this.isAfterAdvice = true;
break;
}
}
}


@Override
public String toString() {
return "InstantiationModelAwarePointcutAdvisor: expression [" + getDeclaredPointcut().getExpression() +
"]; advice method [" + this.aspectJAdviceMethod + "]; perClauseKind=" +
this.aspectInstanceFactory.getAspectMetadata().getAjType().getPerClause().getKind();

}

private void readObject(ObjectInputStream inputStream) throws IOException, ClassNotFoundException {
inputStream.defaultReadObject();
try {
@@ -250,11 +242,18 @@ private void readObject(ObjectInputStream inputStream) throws IOException, Class
}
}

@Override
public String toString() {
return "InstantiationModelAwarePointcutAdvisor: expression [" + getDeclaredPointcut().getExpression() +
"]; advice method [" + this.aspectJAdviceMethod + "]; perClauseKind=" +
this.aspectInstanceFactory.getAspectMetadata().getAjType().getPerClause().getKind();
}


/**
* Pointcut implementation that changes its behaviour when the advice is instantiated.
* Note that this is a <i>dynamic</i> pointcut. Otherwise it might
* be optimized out if it does not at first match statically.
* Note that this is a <i>dynamic</i> pointcut; otherwise it might be optimized out
* if it does not at first match statically.
*/
private class PerTargetInstantiationModelPointcut extends DynamicMethodMatcherPointcut {

@@ -264,8 +263,9 @@ private class PerTargetInstantiationModelPointcut extends DynamicMethodMatcherPo

private LazySingletonAspectInstanceFactoryDecorator aspectInstanceFactory;

private PerTargetInstantiationModelPointcut(AspectJExpressionPointcut declaredPointcut,
public PerTargetInstantiationModelPointcut(AspectJExpressionPointcut declaredPointcut,
Pointcut preInstantiationPointcut, MetadataAwareAspectInstanceFactory aspectInstanceFactory) {

this.declaredPointcut = declaredPointcut;
this.preInstantiationPointcut = preInstantiationPointcut;
if (aspectInstanceFactory instanceof LazySingletonAspectInstanceFactoryDecorator) {
@@ -275,7 +275,8 @@ private PerTargetInstantiationModelPointcut(AspectJExpressionPointcut declaredPo

@Override
public boolean matches(Method method, Class<?> targetClass) {
// We're either instantiated and matching on declared pointcut, or uninstantiated matching on either pointcut
// We're either instantiated and matching on declared pointcut,
// or uninstantiated matching on either pointcut...
return (isAspectMaterialized() && this.declaredPointcut.matches(method, targetClass)) ||
this.preInstantiationPointcut.getMethodMatcher().matches(method, targetClass);
}
Loading