Sebastien Deleuze
87598f48e4
Introduce null-safety of Spring Framework API
...
This commit introduces 2 new @Nullable and @NonNullApi
annotations that leverage JSR 305 (dormant but available via
Findbugs jsr305 dependency and already used by libraries
like OkHttp) meta-annotations to specify explicitly
null-safety of Spring Framework parameters and return values.
In order to avoid adding too much annotations, the
default is set at package level with @NonNullApi and
@Nullable annotations are added when needed at parameter or
return value level. These annotations are intended to be used
on Spring Framework itself but also by other Spring projects.
@Nullable annotations have been introduced based on Javadoc
and search of patterns like "return null;". It is expected that
nullability of Spring Framework API will be polished with
complementary commits.
In practice, this will make the whole Spring Framework API
null-safe for Kotlin projects (when KT-10942 will be fixed)
since Kotlin will be able to leverage these annotations to
know if a parameter or a return value is nullable or not. But
this is also useful for Java developers as well since IntelliJ
IDEA, for example, also understands these annotations to
generate warnings when unsafe nullable usages are detected.
Issue: SPR-15540
2017-05-27 08:57:01 +02:00
Juergen Hoeller
3cc94ae8b5
Consistently accept "taskExecutor" bean of type Executor (as stated in @EnableAsync's javadoc)
...
Issue: SPR-15566
2017-05-25 23:37:02 +02:00
Andy Clement
109746a03b
Adjust source in test class to work around eclipse compiler bug
...
Issue: SPR-15586
2017-05-24 13:24:24 -07:00
Juergen Hoeller
cb3d1befcd
LocalValidatorFactoryBean properly supports unwrap at ValidatorFactory level
...
Also documents limitation for Bean Validation 2.0's getClockProvider() method.
Issue: SPR-15561
Issue: SPR-13482
2017-05-18 21:00:56 +02:00
Juergen Hoeller
ba501791c9
Consistent use of WebFlux terminology over Web Reactive
2017-05-05 14:21:01 +02:00
Juergen Hoeller
1f5eaf20b0
Basic test for functional bean registration within a configuration class
...
Issue: SPR-13779
2017-05-04 11:26:21 +02:00
Juergen Hoeller
1ea54eb2c6
GenericFilterBean lazily initializes its default environment
...
Alignment with HttpServletBean; consistent use of EnvironmentCapable.
Issue: SPR-15469
2017-04-27 21:38:30 +02:00
Juergen Hoeller
8b50f887db
Caching annotations on interface methods with CGLIB proxies
...
Issue: SPR-15271
2017-04-26 18:16:47 +02:00
Juergen Hoeller
6c43d14a77
Async annotations on interface methods with CGLIB proxies
...
Issue: SPR-14949
2017-04-26 18:16:40 +02:00
Juergen Hoeller
91df0653fe
Polishing
2017-04-17 15:05:34 +02:00
Juergen Hoeller
5d3249f692
Recommendation for consistent @Profile declarations on overloaded @Bean methods
...
Issue: SPR-15266
2017-04-17 14:52:06 +02:00
Juergen Hoeller
022aefdfe8
Explicit note about @Profile declarations on overloaded @Bean methods
...
Also marks @Conditional as @Documented, aligned with other annotations.
Issue: SPR-15266
2017-04-15 14:17:45 +02:00
Juergen Hoeller
9abf249cee
Explicitly replace target ApplicationListener with singleton proxy, if any (avoiding double registration/invocation)
...
Issue: SPR-15452
2017-04-15 14:10:28 +02:00
Juergen Hoeller
0b118322b0
Polishing
2017-04-13 16:17:05 +02:00
Juergen Hoeller
1735ba22cb
ShadowingClassLoader can be constructed without default excludes
...
Issue: SPR-15439
2017-04-12 15:34:50 +02:00
Juergen Hoeller
c4e0d6c2a2
UnknownHostException as resource-not-found for properties files
...
Plus first-class declaration of FileNotFoundException in Resource javadoc.
Issue: SPR-15433
2017-04-11 11:45:30 +02:00
Juergen Hoeller
15b5dd9f12
Polishing
2017-04-10 15:36:45 +02:00
Juergen Hoeller
a95843a068
Dependency tracking for Supplier-created beans
...
Issue: SPR-15417
2017-04-07 18:01:28 +02:00
Juergen Hoeller
67ea4b3a05
package-info for repackaged libraries (and other polishing)
2017-04-06 14:10:46 +02:00
Juergen Hoeller
917207b7ae
Support for @Order on nested configuration classes
...
Issue: SPR-15384
2017-04-04 17:17:03 +02:00
Sam Brannen
51f23cb424
Polish JavaDoc for date-time and number format annotations
2017-04-03 16:48:05 +02:00
Sam Brannen
279c56a385
Fix typo in JavaDoc
2017-04-03 16:43:55 +02:00
Sebastien Deleuze
e2fd398bad
Specify explicitly Kotlin extensions return type
...
The main purpose is to specify nullability.
2017-03-30 14:25:13 +02:00
Sam Brannen
7a01771a45
Polishing
2017-03-28 19:27:03 +02:00
Sam Brannen
0b11785852
Improve tests for PropertySourcesPlaceholderConfigurer
2017-03-28 19:26:45 +02:00
QBNemo
26101892c1
Fix typo
...
Closes gh-1354
2017-03-27 10:11:50 +02:00
Grant Hutchins
e087db1ecb
Fix typo
...
Closes gh-1364
2017-03-27 10:04:15 +02:00
Juergen Hoeller
e892e02f41
Polishing
2017-03-21 17:44:47 +01:00
Juergen Hoeller
fc2e635c05
Lookup methods work on configuration classes as well
...
Issue: SPR-15316
2017-03-07 13:51:43 +01:00
Juergen Hoeller
6d6cf01a42
Polishing
2017-02-28 13:13:23 +01:00
Juergen Hoeller
d003f6614b
Tests for annotation lookups in interfaces (currently ignored for CGLIB proxies)
...
Issue: SPR-15271
Issue: SPR-14949
Issue: SPR-14322
2017-02-28 13:11:15 +01:00
Juergen Hoeller
d4a1b59b4c
Skip transaction/caching metadata retrieval for java.lang.Object methods
...
Also retrieves CacheConfig as merged annotation now, aligned with other caching annotations.
Issue: SPR-15296
2017-02-28 13:08:55 +01:00
Juergen Hoeller
cbd19153c4
Polishing
2017-02-22 16:53:54 +01:00
Juergen Hoeller
f4de1ea147
Polishing
2017-02-22 15:32:19 +01:00
Juergen Hoeller
7fb0ad37da
ConfigurationClassEnhancer explicitly handles non-interceptable FactoryBeans
...
Issue: SPR-15275
2017-02-22 15:32:04 +01:00
Juergen Hoeller
370e3d683a
Polishing
2017-02-20 23:00:12 +01:00
Stephane Nicoll
73909f41cb
Polish
2017-02-20 16:29:05 +01:00
Stephane Nicoll
1c74a1a0fe
Improve allowNullValue handling when a null value is provided
...
This commit improves `AbstractValueAdaptingCache` to throw a dedicated
exception if `allowNullValues` is `false` and a `null` value is provided
anyway. This avoid a lower-level exception from the cache library that
will miss some context.
Issue: SPR-15173
2017-02-20 16:08:08 +01:00
Juergen Hoeller
1ee0626c94
Polishing
2017-02-17 21:06:58 +01:00
Juergen Hoeller
8d707eb530
Polishing
2017-02-16 15:37:31 +01:00
Juergen Hoeller
599c1ba73e
Polishing
2017-02-15 18:05:38 +01:00
Juergen Hoeller
54f01cffaf
Drop weaving support for pre-Servlet-3.1 servers
...
Issue: SPR-14467
2017-02-15 18:03:49 +01:00
Juergen Hoeller
44ec6e0037
Polishing
2017-02-13 15:07:07 +01:00
Juergen Hoeller
e1bb697cf9
Correct explanation of example patterns
...
Issue: SPR-15240
2017-02-10 10:56:17 +01:00
Juergen Hoeller
448ea4cdfe
Consistent logging in ignoreResourceNotFound scenarios
...
Issue: SPR-15218
2017-02-10 10:41:10 +01:00
Juergen Hoeller
5015613934
Enforce delegation through single overridable registerBean method
...
Issue: SPR-14832
2017-02-10 10:38:01 +01:00
Juergen Hoeller
1b2dc3638f
Revisit Assert to avoid single-arg assert methods (with refined messages)
...
Issue: SPR-15196
2017-01-30 22:15:55 +01:00
Stephane Nicoll
d550eb152c
Polish contribution
...
Closes gh-1307
2017-01-27 14:17:13 +01:00
Ruben Dijkstra
f1c7e0f5b2
Check for null on the argument instead of the message
...
See gh-1307
Issue: SPR-15196
2017-01-27 14:15:24 +01:00
Juergen Hoeller
5e946c2700
Consistent type variable resolution for arrays/collections (in particular at field level)
...
Dropping GenericCollectionTypeResolver in favor of direct ResolvableType usage.
Issue: SPR-15160
2017-01-24 18:00:17 +01:00
Juergen Hoeller
7d3fcaa934
Consider abstract classes with @Lookup methods as candidate components
...
Issue: SPR-14550
2017-01-23 17:28:18 +01:00
Juergen Hoeller
6fe7e56598
Document further configuration class restrictions
...
Issue: SPR-14602
2017-01-23 13:39:11 +01:00
Juergen Hoeller
253060c21c
Only expose ASM-driven method order if the methods match
...
Issue: SPR-14505
2017-01-23 13:37:22 +01:00
Juergen Hoeller
a9ae2c3402
Polishing
2017-01-23 12:42:01 +01:00
Juergen Hoeller
e566e25b6f
Clear nonAnnotatedClasses cache in afterSingletonsInstantiated
...
Issue: SPR-15175
2017-01-23 12:29:38 +01:00
Alexey Nikolaenko
644b0b8beb
Fix Javadoc for CronSequenceGenerator
...
Closes gh-1294
2017-01-20 17:26:49 +01:00
Juergen Hoeller
976d32fc59
SimpleApplicationEventMulticaster defensively swallows ClassCastException without message
...
Issue: SPR-15145
2017-01-17 20:37:20 +01:00
Juergen Hoeller
052014783a
Remove outdated BeanFactoryLocator documentation references
...
Issue: SPR-15154
2017-01-17 16:03:17 +01:00
Juergen Hoeller
ac6aa53031
Drop outdated BeanFactoryLocator / beanRefContext.xml mechanism
...
Issue: SPR-15154
2017-01-17 13:58:37 +01:00
Juergen Hoeller
d96738d613
Revised indexer implementation
...
Issue: SPR-11890
2017-01-17 12:59:42 +01:00
Juergen Hoeller
5471d6a465
Revised indexer implementation
...
Issue: SPR-11890
2017-01-17 12:46:55 +01:00
Juergen Hoeller
153fd82946
SimpleApplicationEventMulticaster defensively handles ClassCastException without message
...
Issue: SPR-15145
2017-01-16 15:35:18 +01:00
Juergen Hoeller
e19dff179e
Polishing
2017-01-12 21:18:01 +01:00
Juergen Hoeller
d0e93284f3
SpringValidatorAdapter properly handles HV-5-style list constraint violations
...
Issue: SPR-15082
2017-01-12 21:16:56 +01:00
Juergen Hoeller
b06423a5f8
AbstractMessageSource does not attempt to format code-as-default-message
...
Issue: SPR-15123
2017-01-12 21:16:48 +01:00
Sebastien Deleuze
0a988fd2b1
Remove object wrappers in Kotlin extensions
...
This commit also improve significantly Kotlin extensions
documentation.
Issue: SPR-15127
2017-01-11 08:52:01 +01:00
Sebastien Deleuze
8f14e29067
Support AnnotationConfigApplicationContext{} in Kotlin
...
Issue: SPR-15126
2017-01-10 22:47:33 +01:00
Sebastien Deleuze
f8461d856a
Support Gradle-style Kotlin bean API
...
val context = GenericApplicationContext {
registerBean<Foo>()
registerBean { Bar(it.getBean<Foo>()) }
}
Issue: SPR-15126
2017-01-10 21:43:27 +01:00
Mario Arias
1af905ca0a
Add Model and ModelMap Kotlin extensions
...
Issue: SPR-15119
2017-01-10 14:22:54 +01:00
Sebastien Deleuze
6ee5e2a817
Polishing
...
Issue: SPR-15118
2017-01-10 10:54:24 +01:00
Sebastien Deleuze
c5cfd8c8fc
Make the Kotlin bean registration API even more idiomatic
...
Put the lambda parameter at the end and use a function
instead of a supplier to be able to register beans like this:
val context = GenericApplicationContext()
context.registerBean(Foo::class)
context.registerBean{ Bar(it.getBean(Foo::class)) }
Issue: SPR-15118
2017-01-10 10:38:24 +01:00
Sebastien Deleuze
715274e327
Avoid the need to specify Supplier in Kotlin bean registration API
...
Based on an idea from Mario Arias, we can avoid requiring specifying
explicitly Supplier lambda type in Kotlin API by declaring the supplier
parameter as "crossinline supplier: () -> T" instead of
"supplier: Supplier<T>".
Issue: SPR-15118
2017-01-09 20:22:30 +01:00
Juergen Hoeller
fc629bb508
Polishing
2016-12-29 22:39:36 +01:00
Juergen Hoeller
a5c6658d2c
Track bean dependencies for calls between @Bean methods within @Configuration classes
...
Issue: SPR-15069
2016-12-29 22:38:00 +01:00
Juergen Hoeller
edc62be231
@Scheduled reliably applies after other post-processors and shuts down before TaskScheduler
...
Issue: SPR-14692
Issue: SPR-15067
2016-12-29 22:35:10 +01:00
Juergen Hoeller
209e7a700d
Avoid FactoryBean initialization on isSingleton check for decorated bean definition
...
Issue: SPR-14892
Issue: SPR-15042
2016-12-28 17:27:06 +01:00
Juergen Hoeller
9c62b1eaf7
Polishing
2016-12-28 17:22:18 +01:00
Sebastien Deleuze
58e113a591
Avoid NPE in AutoProxyRegistrar when no attribute found
...
Issue: SPR-15055
2016-12-27 16:37:01 +01:00
Juergen Hoeller
7818c650ba
Cache ASM metadata at the context level (if supported)
...
Includes streamlined ClassPathBeanDefinitionScanner setup.
Issue: SPR-14654
2016-12-27 13:38:24 +01:00
Sebastien Deleuze
6a850ee688
Polishing
2016-12-27 10:08:12 +01:00
Juergen Hoeller
bb94ba6e3f
DateFormatter's ISO patterns use XXX timezone notation (as per SimpleDateFormat's javadoc)
...
Issue: SPR-14675
2016-12-26 22:31:27 +01:00
Sebastien Deleuze
ff675f5226
Add Kotlin extensions for bean registration and retrieval
...
Issue: SPR-15048
2016-12-26 14:21:10 +01:00
Juergen Hoeller
a8741dd371
Polishing
2016-12-26 11:26:58 +01:00
Juergen Hoeller
f805427629
Detect generic type match behind interface-based proxy as well
...
Issue: SPR-14097
2016-12-26 11:23:07 +01:00
Juergen Hoeller
0208198804
Expose reflection metadata with ASM-driven method order
...
Issue: SPR-14505
2016-12-26 11:00:22 +01:00
Juergen Hoeller
ef5c797569
Polishing
2016-12-23 21:23:30 +01:00
Juergen Hoeller
3295a4e6ef
ConfigurationClassParser enforces @Bean declaration order through ASM metadata
...
Issue: SPR-14505
2016-12-23 20:29:12 +01:00
Juergen Hoeller
f51fe5fd39
Polishing
2016-12-23 12:27:07 +01:00
Juergen Hoeller
e788b8467d
GenericApplicationContext offers Supplier-based registration with BeanDefinitionCustomizer callback
...
Issue: SPR-14832
2016-12-23 12:26:47 +01:00
Juergen Hoeller
154ef8bf10
Polishing
2016-12-20 19:57:52 +01:00
Juergen Hoeller
9005481a49
Supplier registration support for annotated bean classes
...
Issue: SPR-14832
2016-12-20 19:57:44 +01:00
Juergen Hoeller
f6b2a21206
ConfigurationClassPostProcessor programmatically registers unified ImportAwareBeanPostProcessor
...
Issue: SPR-14931
2016-12-20 12:16:16 +01:00
Juergen Hoeller
9c55d22f78
MBeanExporter silently ignores null beans
...
Issue: SPR-15031
2016-12-19 16:02:59 +01:00
Juergen Hoeller
7867e56494
Polishing
2016-12-19 02:00:28 +01:00
Juergen Hoeller
3ee6286eb5
Support for functional instance supplier callback at BeanDefinition level
...
Issue: SPR-14832
2016-12-18 21:05:45 +01:00
Juergen Hoeller
4c005e6336
ResolvableType-based matching respects generic factory method return type
...
Includes consistent use of ResolvableType.resolve() wherever applicable.
Issue: SPR-15011
2016-12-17 23:10:48 +01:00
Juergen Hoeller
23f0418337
LocaleContextHolder provides support for framework-level default settings
...
Issue: SPR-15017
2016-12-15 15:43:40 +01:00
Juergen Hoeller
58eccfe5bd
Remove setExtractOldValueForEditor at DataBinder level (to be deprecated in 4.3.5)
...
Issue: SPR-15009
2016-12-14 22:00:05 +01:00
Kazuki Shimizu
9f229283fb
Support lazy initialization of BindingResult when customize a MessageCodesResolver
...
Issue: SPR-15009
2016-12-14 00:50:25 +09:00
Juergen Hoeller
547b9638dc
Collection injection may refer back to factory methods on same bean again
...
Issue: SPR-14996
2016-12-09 23:09:10 +01:00