Commit Graph

2237 Commits

Author SHA1 Message Date
Sam Brannen
9962aa00a0 Introduce TestClassScanner to locate Spring test classes for AOT processing
This commit introduces the TestClassScanner which scans provided
classpath roots for Spring integration test classes using the JUnit
Platform Launcher API which allows all registered TestEngines to
discover tests according to their own rules.

The scanner currently detects the following categories of Spring
integration test classes.

- JUnit Jupiter: classes that register the SpringExtension via
  @ExtendWith.
- JUnit 4: classes that register the SpringJUnit4ClassRunner or
  SpringRunner via @RunWith.
- Generic: classes that are annotated with @ContextConfiguration or
  @BootstrapWith.

The scanner has been tested with the following TestEngine
implementations for the JUnit Platform.

- JUnit Jupiter
- JUnit Vintage
- JUnit Platform Suite Engine
- TestNG Engine for the JUnit Platform

Closes gh-28824
2022-07-15 13:21:22 +02:00
rstoyanchev
f814fb420b Merge branch '5.3.x' 2022-07-13 19:21:33 +01:00
rstoyanchev
cdd4e8cd7f Improve regex support for URL path matching
Closes gh-28815
2022-07-13 18:43:51 +01:00
Sam Brannen
0b5c5dbc31 Merge branch '5.3.x' 2022-07-13 15:13:41 +02:00
Marc Wrobel
165fba868c Fix typos in reference docs
Closes gh-28805
2022-07-13 15:12:31 +02:00
rstoyanchev
ff9a4ab35c Update documentation for RFC 7807 support
Closes gh-28438
2022-07-13 13:12:16 +01:00
rstoyanchev
eea793be98 Move sections on REST API exceptions 2 levels up
See gh-28438
2022-07-13 13:12:16 +01:00
rstoyanchev
263811ecfa Add WebFlux equivalent of ResponseEntityExceptionHandler
Closes gh-28665
2022-07-13 10:58:48 +01:00
Sébastien Deleuze
b135cbe7c8 Merge branch '5.3.x' 2022-07-13 10:10:42 +02:00
Sébastien Deleuze
c942c8d2cf Fix expectations in MockMvc Kotlin documentation
Closes gh-28301
2022-07-13 10:06:41 +02:00
Sébastien Deleuze
1201af20e4 Improve consistency of Kotlin injection code samples
Closes gh-28596
2022-07-13 09:42:47 +02:00
Sébastien Deleuze
d1df4d3739 Fix Kotlin code snippets language
Closes gh-28810
2022-07-13 09:21:02 +02:00
Sébastien Deleuze
1ef8800c6c Fix Kotlin example for custom @Production
Closes gh-28680
2022-07-13 09:13:47 +02:00
Sébastien Deleuze
4d7e4e0c58 Fix a typo
See gh-28630
2022-07-12 18:54:01 +02:00
Arjen Poutsma
9b739a2310 Update scheduling package to use java.time
This commit deprecates all methods in org.springframework.scheduling
that use

- Date, in favor of variants that take an Instant.
- long & TimeUnit, in favor of variants that take a Duration.

Closes: gh-28714
2022-07-08 16:25:27 +02:00
Lucas Mantovani
05df491154 Fix WebClientAdapter.createHttpServiceProxyFactory() example in ref docs
* Remove build() call
* Add call to afterPropertiesSet()

Closes gh-28753
2022-07-04 19:47:23 +02:00
Sam Brannen
ce5076ffe8 Merge branch '5.3.x' 2022-07-03 18:05:36 +02:00
Sam Brannen
fda3f8201a Switch warning level for forbidden reference to INFO in Eclipse IDE 2022-07-03 17:23:55 +02:00
Brian Clozel
444a9bd011 Add testing infrastructure for RuntimeHintsAgent
This commit adds the supporting testing infrastructure using the
`RuntimeHintsAgent`. Given that the agent is loaded by the JVM running
the test suite, we can then use it to record method invocations at
runtime and check whether the prepared `RuntimeHints` match the expected
behavior.

This commit contributes the `RuntimeHintsRecorder`. With this, we can
record relevant method invocations for a given lambda, focusing on a
specific part of the code behavior. This returns a
`RuntimeHintsInvocations` instance, which is an AssertJ assert provider.
From there, we can perform assertions on the recorded invocations and
check that a given collection of hints cover the reflection, resources
and proxies needs at runtime.

This also ships the `@EnabledIfRuntimeHintsAgent` opinionated
annotation: this applies the `RuntimeHintsAgentCondition` JUnit
extension that detects whether the `RuntimeHintsAgent` is loaded by the
current JVM. Tests annotated with this will be skipped if the agent is
not present. This annotation is also tagged with a JUnit `@Tag` to
gather such tests in a specific `"RuntimeHintsTests"` test suite.

In the Spring Framework build, we have chosen to isolate such tests and
not load the agent for the main test suite ("RuntimeHintsTests" tests
are excluded from the main suite). While the agent's intent is to be as
transparent as possible, there are security and access considerations
that could interefere with other tests.
With this approach, we can then create a separate test suite and run
agent tests in a dedicated JVM.

Note that projects using this infrastructure can choose to use the
condition by itself in a custom annotation.

Here is an example of this testing infrastructure:

```
@EnabledIfRuntimeHintsAgent
class MyTestCases {

  @Test
  void hintsForMethodsReflectionShouldMatch() {
      RuntimeHints hints = new RuntimeHints();
      hints.reflection().registerType(String.class,
          hint -> hint.withMembers(MemberCategory.INTROSPECT_PUBLIC_METHODS));

      RuntimeHintsInvocations invocations = RuntimeHintsRecorder.record(() -> {
          Method[] methods = String.class.getMethods();
      });
      assertThat(invocations).match(hints);
  }

}
```

See gh-27981
2022-06-30 18:20:22 +02:00
rstoyanchev
b312eca391 Deprecate and set trailingSlash option to false
Closes gh-28552
2022-06-29 16:09:10 +01:00
rstoyanchev
92cf1e13e8 Enable use of parsed patterns by default in Spring MVC
Closes gh-28607
2022-06-29 10:17:27 +01:00
Sam Brannen
f8cdb7a747 Fix switch statement formatting in Eclipse
See https://github.com/spring-io/spring-javaformat/issues/336
2022-06-25 14:26:59 +02:00
rstoyanchev
24c46142c6 Add docs on exceptions for HTTP interface client
Closes gh-28533
2022-06-24 15:55:18 +01:00
rstoyanchev
b72ee5f034 Add static factory methods to WebClientAdapter
Ideally one would pass WebClient directly to HttpServiceProxyFactory,
but two need to remain decoupled. This commit adds static, shortcut
methods to WebClientAdapter to create an HttpServiceProxyFactory, thus
eliminating the step to wrap the WebClient.
2022-06-24 09:55:21 +01:00
Sébastien Deleuze
36012ffea9 Merge branch '5.3.x' 2022-06-17 12:58:27 +02:00
Sébastien Deleuze
854307d8d8 Document that Kotlin inline classes are not supported
Closes gh-28642
2022-06-17 12:34:58 +02:00
Sébastien Deleuze
3401359bdf Refine @Required Kotlin documentation
Refine @Required Kotlin documentation to use
annotation use site targets.

Closes gh-28630
2022-06-17 12:25:52 +02:00
Sébastien Deleuze
f1c00dd8a6 Fix a typo in ResponseEntity documentation
Closes gh-28647
2022-06-17 12:15:22 +02:00
Sam Brannen
a1f14e8eeb Merge branch '5.3.x' 2022-06-16 16:14:05 +02:00
Sam Brannen
bdf91ac435 Set default encoding for Eclipse projects to UTF-8
This change aligns with Java 18 support in recent versions of Eclipse.
2022-06-16 16:13:35 +02:00
Sam Brannen
67b1420b32 Merge branch '5.3.x' 2022-06-15 11:28:04 +02:00
Sam Brannen
8b4750e705 Fix Kotlin example for @ComponentScan basePackages attribute
Closes gh-28628
2022-06-15 11:27:39 +02:00
Juergen Hoeller
aa48dec697 Merge branch '5.3.x'
# Conflicts:
#	build.gradle
#	spring-jms/src/main/java/org/springframework/jms/connection/CachingConnectionFactory.java
2022-06-14 15:14:10 +02:00
Juergen Hoeller
e72b0a04cd Document limitations for MessageProducer/Consumer caching with WebLogic JMS
Closes gh-28500
2022-06-14 15:09:10 +02:00
Arjen Poutsma
405e5921a6 Merge branch '5.3.x' 2022-06-10 13:38:27 +02:00
Arjen Poutsma
27738cc20f Fix code samples for nested router functions
Closes gh-28603
2022-06-10 13:36:33 +02:00
Sam Brannen
74d1be9bd8 Remove obsolete references to @Required
Since the @Required annotation was removed in a previous 6.0 milestone,
this commit removes all remaining references to it.

Closes gh-28600
2022-06-09 14:54:09 +02:00
Sam Brannen
40ab20e14a Merge branch '5.3.x' 2022-06-09 13:56:15 +02:00
Sam Brannen
babff8e635 Fix Kotlin example for dependency injection with static factory method
Closes gh-28589
2022-06-09 13:16:19 +02:00
Sam Brannen
290cc73d3d Fix Kotlin example for @Required
Since @Required can only be declared on a method, this commit moves the
@Required declaration from the field to the "set" method.

Closes gh-28590
2022-06-09 13:13:43 +02:00
Stephane Nicoll
62d98685ce Merge branch '5.3.x' 2022-06-07 08:30:59 +02:00
Stephane Nicoll
e18a118f8b Polish contribution
See gh-28572
2022-06-07 08:29:28 +02:00
Lee, Kyutae
77aac7768d Update reference docs to use PropertySourcesPlaceholderConfigurer
See gh-28572
2022-06-07 08:22:53 +02:00
Stephane Nicoll
a46b71a4b9 Merge branch '5.3.x' 2022-05-31 10:01:50 +02:00
Ikko Ashimine
6e3b3c5419 Fix typo in webflux.adoc
See gh-28542
2022-05-31 10:01:13 +02:00
Sam Brannen
a3ee27bb4d Polishing 2022-05-30 20:00:07 +02:00
Eddú Meléndez Gonzales
506b78f469 Use getHost instead of getContainerIpAddress in Redis examples
getContainerIpAddress is deprecated.

Closes gh-28461
2022-05-15 15:12:03 +02:00
Sam Brannen
4b0531b4aa Merge branch '5.3.x' 2022-05-11 17:33:52 +02:00
Sam Brannen
48c797e429 Fix Kotlin example for static factory method
Closes gh-28399
2022-05-11 17:33:31 +02:00
Sam Brannen
5ddbdb6ba7 Merge branch '5.3.x' 2022-05-11 17:17:20 +02:00