Stéphane Nicoll
bf5b22d64f
Merge branch '6.1.x'
2024-03-26 17:45:25 +01:00
Stéphane Nicoll
c7c9da56da
Consistent atMost period for Awaitility-based tests
...
Closes gh-32537
2024-03-26 17:45:14 +01:00
Sébastien Deleuze
8b51b36729
Perform NullAway build-time checks in more modules
...
This commit enables null-safety build-time checks in
all remaining modules except spring-test.
See gh-32475
2024-03-26 15:53:01 +01:00
Sébastien Deleuze
2fea3d7921
Merge branch '6.1.x'
2024-03-26 15:41:46 +01:00
Sébastien Deleuze
290a41d398
Refine null-safety in more modules
...
This commit refines the null-safety in all remaining modules
except spring-test.
See gh-32475
2024-03-26 15:39:18 +01:00
Sébastien Deleuze
3b4f8dbb8e
Merge branch '6.1.x'
2024-03-26 09:47:09 +01:00
Sébastien Deleuze
1b563f8ba4
Refine null-safety in more modules
...
This commit refines the null-safety in:
- spring-jdbc
- spring-r2dbc
- spring-orm
- spring-beans
- spring-aop
See gh-32475
2024-03-26 09:46:34 +01:00
Sébastien Deleuze
e52ee01ec8
Perform NullAway build-time checks in spring-web
...
Also in spring-websocket.
See gh-32475
2024-03-25 11:11:09 +01:00
Sébastien Deleuze
b1b9ee0ccf
Merge branch '6.1.x'
2024-03-21 17:56:14 +01:00
Sébastien Deleuze
1e80694daf
Fix a regression with Kotlin generic controllers
...
This commit reintroduces a more defensive parameter type check that
skips KClass casting for generic parameters.
Closes gh-32510
2024-03-21 17:55:57 +01:00
Sébastien Deleuze
f648fd7c3b
Perform NullAway build-time checks in spring-expression
...
See gh-32475
2024-03-20 10:10:00 +01:00
Sébastien Deleuze
1ccd5512c5
Merge branch '6.1.x'
2024-03-20 10:08:30 +01:00
Sébastien Deleuze
2e98a8a2a4
Refine null-safety in spring-expression
...
See gh-32475
2024-03-20 10:07:56 +01:00
Sébastien Deleuze
4c7735016b
Refine null-safety with NullAway build-time checks
...
This commit introduces null-safety checks for spring-core at build-time
in order to validate the consistency of Spring null-safety annotations
and generate errors when inconsistencies are detected during a build
(similar to what is done with Checkstyle).
In order to make that possible, this commit also introduces a new
org.springframework.lang.Contract annotation inspired from
org.jetbrains.annotations.Contract, which allows to specify semantics
of methods like Assert#notNull in order to prevent artificial
additional null checks in Spring Framework code base.
This commit only checks org.springframework.core package, follow-up
commits will also extend the analysis to other modules, after related
null-safety refinements.
See gh-32475
2024-03-19 16:30:32 +01:00
Sébastien Deleuze
8d23ec4747
Merge branch '6.1.x'
2024-03-19 13:36:39 +01:00
Sébastien Deleuze
aa0fb97ba5
Nullability refinements
...
See gh-32475
2024-03-19 13:32:13 +01:00
Juergen Hoeller
14bc0d6469
Fix typo in condition check
...
See gh-21190
2024-03-19 13:17:33 +01:00
Juergen Hoeller
e58ea0d945
Merge branch '6.1.x'
...
# Conflicts:
# spring-core/src/main/java/org/springframework/core/CoroutinesUtils.java
2024-03-19 10:06:48 +01:00
Juergen Hoeller
bd27ddf83a
Polishing (aligned with main)
2024-03-19 10:05:32 +01:00
Juergen Hoeller
c531a8a705
Nullability refinements and related polishing
...
See gh-32475
2024-03-19 09:58:44 +01:00
Juergen Hoeller
6df27644eb
Merge branch '6.1.x'
2024-03-18 16:04:26 +01:00
Juergen Hoeller
5dc6a16c0b
Nullability refinements
...
See gh-32475
2024-03-18 16:03:00 +01:00
Juergen Hoeller
2f2c4188e5
Nullability refinements
...
See gh-32475
2024-03-18 15:49:20 +01:00
Sam Brannen
ccebaa6b0c
Merge branch '6.1.x'
2024-03-18 15:18:06 +01:00
Sam Brannen
42a4f28962
Avoid unnecessary Annotation array cloning in TypeDescriptor
...
Closes gh-32476
2024-03-18 15:17:04 +01:00
Juergen Hoeller
2b56ca08d4
Restore canonical name representation for 6.2
...
See gh-32405
2024-03-17 21:03:02 +01:00
Juergen Hoeller
b89cf2b16a
Merge branch '6.1.x'
2024-03-17 21:00:00 +01:00
Juergen Hoeller
b1c3b6e34b
Restore original toString representation (revert accidental backport)
...
See gh-32405
2024-03-17 20:42:29 +01:00
Johnny Lim
99e1b0d117
Make SimpleAliasRegistry.aliasNames final
2024-03-17 13:33:31 +01:00
Juergen Hoeller
89d563097f
Merge branch '6.1.x'
...
# Conflicts:
# spring-core/src/main/java/org/springframework/core/convert/TypeDescriptor.java
2024-03-16 23:24:51 +01:00
Juergen Hoeller
eb8b7c4331
Remove superfluous @NonNull declarations
2024-03-16 14:22:17 +01:00
Juergen Hoeller
58bd057a24
Avoid cloning empty Annotation array in TypeDescriptor (backport)
...
Closes gh-32405
2024-03-16 14:21:34 +01:00
Sam Brannen
e1b1435a00
Stop referring to JDK 1.5 plus polishing
2024-03-14 16:00:51 +01:00
Sam Brannen
986c4fd926
Revise use of Objects.requireNonNull()
...
Historically, we have rarely intentionally thrown a
NullPointerException in the Spring Framework. Instead, we prefer to
throw either an IllegalArgumentException or IllegalStateException
instead of a NullPointerException.
However, changes to the code in recent times have introduced the use of
Objects.requireNonNull(Object) which throws a NullPointerException
without an explicit error message.
The latter ends up providing less context than a NullPointerException
thrown by the JVM (since Java 14) due to actually de-referencing a
null-pointer. See https://openjdk.org/jeps/358 .
In light of that, this commit revises our current use of
Objects.requireNonNull(Object) by removing it or replacing it with
Assert.notNull().
However, we still use Objects.requireNonNull(T, String) in a few places
where we are required to throw a NullPointerException in order to
comply with a third-party contract such as Reactive Streams.
Closes gh-32430
2024-03-13 16:00:22 +01:00
Juergen Hoeller
3b87c87a33
Merge branch '6.1.x'
2024-03-12 20:11:21 +01:00
Juergen Hoeller
723c94e5ac
Polishing
2024-03-12 20:10:01 +01:00
Sébastien Deleuze
0435e9c49e
Merge branch '6.1.x'
2024-03-11 13:40:23 +01:00
Sébastien Deleuze
80f3be6577
Replace getJvmErasure by getClassifier
...
Should be slightly faster.
See gh-32334
2024-03-11 13:37:41 +01:00
Sébastien Deleuze
946082f806
Refine publisher type check in CoroutinesUtils
...
See gh-32390
2024-03-11 13:15:54 +01:00
Yanming Zhou
246e4977a2
Polishing Optional usage
2024-03-11 09:13:49 +01:00
Sam Brannen
4c246b7c96
Consistently use canonical annotation names in string representations
2024-03-10 15:54:53 +01:00
Sam Brannen
5345a13918
Polish contribution
...
See gh-32405
2024-03-10 12:36:08 +01:00
Patrick Strawderman
7fa2a28970
Avoid cloning empty Annotation array in TypeDescriptor
...
Rework AnnotatedElementAdapter to avoid cloning the underlying
Annotation array if it is empty when getAnnotations() is called.
Additionally, make the class static and add a factory method that
returns a singleton instance for null or empty Annotation arrays.
Closes gh-32405
2024-03-10 12:26:49 +01:00
Stéphane Nicoll
e53ed3e3c6
Merge branch '6.1.x'
2024-03-09 16:03:04 +01:00
Stéphane Nicoll
4983a802a7
Polish "Fix Javadoc"
...
See gh-32403
2024-03-09 16:02:01 +01:00
Maksim Sasnouski
abdccffa39
Fix Javadoc
...
This commit fixes various Javadoc issues across the code base.
See gh-32403
2024-03-09 16:02:00 +01:00
Juergen Hoeller
c1287d48e2
Polishing
2024-03-08 19:31:01 +01:00
Juergen Hoeller
19fec0633f
Local root directory and jar caching in PathMatchingResourcePatternResolver
...
Closes gh-21190
2024-03-08 19:12:14 +01:00
Sam Brannen
ae6c64abc5
Fix Javadoc errors
2024-03-08 11:59:53 +01:00
Sébastien Deleuze
f0039833c8
Merge branch '6.1.x'
2024-03-07 14:31:26 +01:00
Sébastien Deleuze
579dbc48d7
Optimize Coroutine invocations
...
KClass instantiation in CoroutinesUtils is suboptimal, and should be
replaced by KTypes#isSubtypeOf checks using pre-instantiated types for
Flow, Mono and Publisher.
This commit impact on performances is significant since a throughput
increase between 2x and 3x has been measured on basic endpoints.
Closes gh-32390
2024-03-07 14:27:47 +01:00
Sébastien Deleuze
92f4e883b3
Merge branch '6.1.x'
2024-03-07 11:11:46 +01:00
Sébastien Deleuze
c1d4b610ca
Refine Kotlin inline class optimizations
...
Closes gh-32334
2024-03-07 11:11:20 +01:00
Sam Brannen
b32a2cadfb
Update class-level Javadoc for ParameterNameDiscoverer
2024-03-06 14:49:46 +01:00
Juergen Hoeller
a0ae849856
Polishing
2024-03-05 18:23:13 +01:00
ali dandach
eb01cc0d9d
Use String#isEmpty where feasible
...
This commit replaces checks for empty strings ("".equals(...)) with the
String#isEmpty method.
Closes gh-32377
2024-03-05 17:38:29 +01:00
Sam Brannen
c29c67839b
Cache parameterTypes in ClassUtils.getInterfaceMethodIfPossible
2024-03-05 11:48:01 +01:00
Arjen Poutsma
6d9aba88d0
Fix typo
...
See gh-32360
2024-03-05 10:48:06 +01:00
Arjen Poutsma
646bd7f893
Document StringUtils::uriDecode limitations
...
Closes gh-32360
2024-03-05 10:03:15 +01:00
Juergen Hoeller
79c54098ab
Merge branch '6.1.x'
2024-03-04 23:49:55 +01:00
Juergen Hoeller
4300fec023
Restore ability to return original method at ClassUtils level as well
...
Closes gh-32365
2024-03-04 23:48:26 +01:00
Juergen Hoeller
dc6c96de0a
Merge branch '6.1.x'
...
# Conflicts:
# spring-context-support/src/main/java/org/springframework/cache/jcache/interceptor/AbstractFallbackJCacheOperationSource.java
# spring-context/src/main/java/org/springframework/cache/interceptor/AbstractFallbackCacheOperationSource.java
# spring-tx/src/main/java/org/springframework/transaction/interceptor/AbstractFallbackTransactionAttributeSource.java
2024-03-04 22:50:22 +01:00
Juergen Hoeller
e9110c0729
Polishing
2024-03-04 22:48:52 +01:00
Juergen Hoeller
24759a75f4
Restore ability to return original method for proxy-derived method
...
Closes gh-32365
2024-03-04 22:48:46 +01:00
Sébastien Deleuze
219004ef13
Merge branch '6.1.x'
2024-03-03 22:26:37 +01:00
Sébastien Deleuze
516a203703
Support nullable Kotlin value class arguments
...
This commit skips the value class parameter instantiation for nullable
types when a null argument is passed.
Closes gh-32353
2024-03-03 22:26:21 +01:00
Juergen Hoeller
390fe0fe78
Add support for resolving multiple bounds in type variables
...
Closes gh-22902
See gh-32327
2024-03-02 11:30:17 +01:00
Stéphane Nicoll
ac1a030c35
Make PlaceholderResolutionException extend from IllegalArgumentException
...
To smooth upgrade from 6.1.x, this commit makes sure that code that used
to catch an IAE to ignore a faulty placeholder resolution still works.
See gh-9628
2024-03-02 08:28:38 +01:00
Sébastien Deleuze
4149d5cb2b
Merge branch '6.1.x'
2024-03-01 11:55:08 +01:00
Sébastien Deleuze
85a781d517
Instantiate value class parameters with Kotlin reflection
...
In order to invoke the init block and to improve the maintainability.
Closes gh-32324
2024-03-01 11:50:19 +01:00
Sébastien Deleuze
7c5bcbcba4
Merge branch '6.1.x'
2024-02-28 17:24:08 +01:00
Sébastien Deleuze
45c21042f6
Optimize Kotlin inline class checks
...
This commit fixes a performance regression caused by gh-31698,
and more specifically by KClass#isValue invocations which are slow since
they load the whole module to find the class to get the descriptor.
After discussing with the Kotlin team, it has been decided that only
checking for the presence of `@JvmInline` annotation is enough for
Spring use case.
As a consequence, this commit introduces a new
KotlinDetector#isInlineClass method that performs such check, and
BeanUtils, CoroutinesUtils and WebMVC/WebFlux InvocableHandlerMethod
have been refined to leverage it.
Closes gh-32334
2024-02-28 17:18:57 +01:00
Juergen Hoeller
479879c53a
Polishing
2024-02-26 13:40:21 +01:00
Juergen Hoeller
9198774f13
Detect wildcard without bounds returned from VariableResolver as well
...
See gh-32327
See gh-20727
2024-02-25 16:32:11 +01:00
Juergen Hoeller
260404b7f2
Consistently detect wildcard without bounds as unresolvable
...
Closes gh-32327
See gh-20727
2024-02-24 20:25:56 +01:00
Sam Brannen
f59c4023e9
Polishing
2024-02-23 14:46:12 +01:00
Sam Brannen
eab1a3dc6b
Fix BridgeMethodResolverTests.isBridgeMethodFor() in Eclipse IDE
2024-02-23 12:57:14 +01:00
Sam Brannen
4b5e96578d
Extract runningInEclipse() into IdeUtils test fixture
2024-02-23 12:57:06 +01:00
Sam Brannen
122372c580
Spring cleaning: update copyright headers
2024-02-23 12:21:22 +01:00
Sam Brannen
c98bebd6d3
Spring cleaning: add missing @Override annotations
2024-02-23 12:20:11 +01:00
Sam Brannen
d0ffc16efc
Spring cleaning: avoid unnecessary static imports
2024-02-23 12:20:11 +01:00
Sam Brannen
4bd1485ce4
Spring cleaning: use method references
2024-02-23 12:20:11 +01:00
Sam Brannen
4339c8eac2
Spring cleaning: use diamond operator
2024-02-23 12:20:11 +01:00
Arjen Poutsma
aee03c5201
Use composite collections in attribute merging
...
This commit introduces composite collections (i.e. Collection, Set, Map)
and uses these composites in request predicates, where before new
collections were instantiated.
Closes gh-32245
2024-02-22 13:11:20 +01:00
Sam Brannen
644887e094
Polish (Linked)HashSet usage
...
See gh-32291
2024-02-21 16:22:31 +01:00
Sam Brannen
b9c304b890
Polish contribution
...
See gh-32291
2024-02-21 16:19:53 +01:00
Patrick Strawderman
e1a32d4ba9
Avoid resizing of fixed-size HashSet/LinkedHashSet variants
...
Add helpers to CollectionUtils for building HashSets and LinkedHashSets
that can hold an expected number of elements without needing to
resize/rehash.
Closes gh-32291
2024-02-21 16:19:53 +01:00
Sam Brannen
3fb170058f
Polish contribution
...
See gh-32294
2024-02-21 14:09:09 +01:00
Patrick Strawderman
f9fe8efb2e
Use ConcurrentHashMap.newKeySet
...
In places where a ConcurrentHashMap was used as a set by wrapping it
with Collections.newSetFromMap, switch to just using the set returned
by ConcurrentHashMap.newKeySet directly.
Closes gh-32294
2024-02-21 14:08:38 +01:00
Arjen Poutsma
c077805761
Set correct capacity in DefaultDataBuffer::setNativeBuffer
...
Closes gh-30984
2024-02-20 12:36:55 +01:00
Arjen Poutsma
70004e9ad0
Polishing external contribution
...
Change position and limit on duplicate, rather than source.
See gh-30967
Closes gh-32009
2024-02-20 12:12:35 +01:00
injae-kim
969d0bd08b
Set correct limit in DefaultDataBuffer::getNativeBuffer
...
Closes gh-30967
2024-02-20 12:12:35 +01:00
Juergen Hoeller
0ddfe3977a
Merge branch '6.1.x'
2024-02-16 22:50:04 +01:00
Juergen Hoeller
3aae7a66e6
Polishing
2024-02-16 22:27:09 +01:00
Sam Brannen
a85bf3185e
Remove APIs deprecated for removal in 6.2
...
This commit removes the following obsolete and deprecated APIs.
- org.springframework.util.Base64Utils
- org.springframework.cache.jcache.interceptor.JCacheOperationSourcePointcut
- org.springframework.http.client.AbstractClientHttpResponse
- org.springframework.http.client.ClientHttpResponse.getRawStatusCode()
- org.springframework.http.client.observation.ClientHttpObservationDocumentation.HighCardinalityKeyNames.CLIENT_NAME
- org.springframework.web.reactive.function.client.ClientHttpObservationDocumentation.HighCardinalityKeyNames.CLIENT_NAME
- org.springframework.web.filter.reactive.ServerWebExchangeContextFilter.get(Context)
- org.springframework.web.servlet.mvc.method.annotation.ResponseEntityExceptionHandler.handleBindException(...)
- org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver.handleBindException(...)
Closes gh-30608
2024-02-16 16:45:18 +01:00
Sam Brannen
6d5bf6d9b3
Ensure alias resolution in SimpleAliasRegistry depends on registration order
...
Closes gh-32024
2024-02-16 15:22:27 +01:00
Sam Brannen
ea4e7df9ca
Consistently declare ignoreUnresolvablePlaceholders as last argument
2024-02-16 15:00:32 +01:00
Sam Brannen
7c07c43201
Polishing
2024-02-16 15:00:06 +01:00
Sam Brannen
fc9a118406
Polish SimpleCommandLinePropertySource support
2024-02-16 11:41:22 +01:00
Juergen Hoeller
ea3573176a
Avoid infinite recursion for self-referencing generic type
...
Closes gh-32282
See gh-30079
2024-02-16 11:15:02 +01:00