Commit Graph

266 Commits

Author SHA1 Message Date
Mahmoud Ben Hassine
f39f07075a Improve Step/Job builder APIs to guide users to set mandatory properties
Before this commit, the user had to manually set the job repository and transaction
manager on `JobBuilder` and `StepBuilder` instances with a chained call to
`.repository(jobRepository)` and `.transactionManager(transactionManager)`.
This is error prone and can lead to runtime errors if these properties are not set.

This commit introduces new APIs to guide the user to set these properties at
builder creation time.

Resolves #4192
2022-09-17 22:31:12 +02:00
Mahmoud Ben Hassine
6e443cb1b1 Deprecate Job/Step builder factories
This commit deprecates JobBuilderFactory and StepBuilderFactory
in favor of the respective builders they create.

It also removes the exposure of such utilities as beans in the
application context when using `@EnableBatchProcessing`.

Resolves https://github.com/spring-projects/spring-batch/issues/4188
2022-09-13 16:56:01 +02:00
Tadaya Tsuyukubo
1ff720545f Adapt SampleTestRunner change in micrometer tracing
Accommodate the breaking change in `SampleTestRunner` introduced by
https://github.com/micrometer-metrics/tracing/pull/57
2022-09-09 15:38:30 +02:00
Mahmoud Ben Hassine
7c8fb172a7 Move the transaction manager configuration to AbstractTaskletStepBuilder
Before this commit, the transaction manager was configurable
at the StepBuilder level, which is inconsistent with the XML
config style in addition to be not needed for most step types.

This commit moves the configuration of the transaction manager
from the StepBuilder down to the AbstractTaskletStepBuilder,
which is the level where the transaction manager is needed.

Resolves #4130
2022-09-08 11:35:14 +02:00
Mahmoud Ben Hassine
4d548d9a49 Exclude junit-jupiter from micrometer test dependencies 2022-09-07 17:05:06 +02:00
Spring Builds
878578f829 [artifactory-release] Next development version 2022-08-24 17:14:59 +00:00
Spring Builds
7fc0af6785 [artifactory-release] Release version 5.0.0-M5 2022-08-24 17:14:56 +00:00
Mahmoud Ben Hassine
4d0ed63dd7 Deprecate AssertFile
Resolves #4181
2022-08-24 15:17:34 +02:00
Glenn Renfro
8ca9802da4 Remove the JUnit dependency in AssertFile
The side effect is a breaking change in that it will now
throw IllegalStateException instead of the Compare and
AssertExceptions provided by JUnit.

Resolves #4111
2022-08-24 10:29:45 +02:00
Mahmoud Ben Hassine
c425137eec Remove datasource dependency in JobRepositoryTestUtils
Before this commit, the `JobRepositoryTestUtils` was
tied to the JDBC implementation of the `JobRepository`
as it was requiring a datasource. This makes it unusable
with implementations that do not rely on a datasource
to store batch meta-data (A MongoDB job repository for
instance where no datasource is used).

This commit decouples the `JobRepositoryTestUtils` from
the implementation details of the `JobRepository` by making
it working against the `JobRepository` interface.

This commit also introduces the necessary methods in the
`JobRepository` interface as well as various DAOs to
implement the utilities without having to deal with the
details of the underlying repository implementation.

Resolves #4070
2022-08-23 21:33:06 +02:00
Mahmoud Ben Hassine
f104baa417 Remove datasource autowiring in JobRepositoryTestUtils
Before this commit, trying to register a `JobRepositoryTestUtils` bean
in a test context that contains multiple datasources fails at startup,
because a datasource is autowired in `JobRepositoryTestUtils` while
multiple are defined.

This commit removes the autowiring of the datasource in JobRepositoryTestUtils.

Resolves #4178
2022-08-21 13:36:37 +02:00
Mahmoud Ben Hassine
c506a49988 Remove job autowiring in JobLauncherTestUtils
Before this commit, registering the JobLauncherTestUtils
as a bean in the test context (either manually or via
`@SpringBatchTest`) was failing when multiple jobs are
defined in the test context.

This commit removes the autowiring of the job under test
in JobLauncherTestUtils.

Resolves #1237
2022-08-20 12:39:02 +02:00
Mahmoud Ben Hassine
e67c0069f1 Use the Chunk API consistently
This commit replaces the usage of List with Chunk
where appropriate. Summary of changes:

- The Chunk class was moved from the `org.springframework.batch.core.step.item` package to the `org.springframework.batch.item` package
- The signature of the method `ItemWriter#write(List)` was changed to `ItemWriter#write(Chunk)`
- All implementations of `ItemWriter` were updated to use the Chunk API instead of List
- All methods in the `ItemWriteListener` interface were updated to use the Chunk API instead of List
- All implementations of `ItemWriteListener` were updated to use the Chunk API instead of List
- The constructor of `ChunkRequest` was changed to accept a Chunk instead of a Collection of items
- The return type of `ChunkRequest#getItems()` was changed from List to Chunk

Resolves #3954
2022-08-19 13:40:09 +02:00
Henning Poettker
6117c044fb Migrate Spring Batch Test to JUnit Jupiter 2022-08-02 17:07:43 +02:00
Spring Builds
08adb4550a [artifactory-release] Next development version 2022-07-21 03:17:06 +00:00
Spring Builds
d46aeef01d [artifactory-release] Release version 5.0.0-M4 2022-07-21 03:17:03 +00:00
Marvin Deng
c0791039dc Rename SimpleJobLauncher to TaskExecutorJobLauncher
Resolves #4123
2022-07-19 13:34:23 +02:00
Mahmoud Ben Hassine
565ddcdf96 Change transaction manager type in default batch configuration
This commits changes the type of the transaction manager
from `DataSourceTransactionManager` to `JdbcTransactionManager`
in the default configuration of `@EnableBatchProcessing`.

The `JdbcTransactionManager` adds common JDBC exception translation
which is beneficial for Spring Batch to improve exception handling
and error reporting.

Resolves #4126
2022-07-16 17:52:43 +02:00
Mahmoud Ben Hassine
c4ad90b9b1 Apply spring-javaformat style for consistency with other projects
Resolves #4118
2022-05-25 23:06:48 +02:00
Spring Builds
b9bc4c1488 [artifactory-release] Next development version 2022-05-19 01:22:57 +00:00
Spring Builds
a99f1c8645 [artifactory-release] Release version 5.0.0-M3 2022-05-19 01:22:54 +00:00
Starchenko Ilya
ad92d2a6c9 Fix Javadoc of SpringBatchTest annotation
fix double @-symbol in javadoc

Issue #4102
2022-04-27 15:14:20 +02:00
Danilo Piazzalunga
200724dd0f Make JUnit 4 an optional dependency in spring-batch-test
Resolves #4033
2022-04-01 16:28:32 +02:00
Moritz Halbritter
404e0a3dbd Update to Micrometer 2.0.0-SNAPSHOT
See gh-4079
2022-03-25 09:37:18 +01:00
Spring Builds
437f4797f8 [artifactory-release] Next development version 2022-03-23 11:57:35 +00:00
Spring Builds
273ddeed90 [artifactory-release] Release version 5.0.0-M2 2022-03-23 11:57:32 +00:00
Mahmoud Ben Hassine
ae6c0b9809 Refine contribution #4065
* Fix tests
* Update Javadocs
* Update year in license headers
* Move observability APIs to a separate package
2022-03-16 17:03:14 +01:00
Marcin Grzejszczak
e917d75d20 Add Observation API
Issue #4065
2022-03-16 16:14:50 +01:00
Spring Builds
75b1492039 [artifactory-release] Next development version 2022-01-19 12:13:24 +00:00
Spring Builds
a06a866410 [artifactory-release] Release version 5.0.0-M1 2022-01-19 12:13:21 +00:00
Mahmoud Ben Hassine
e5c752b4b8 Remove JSR-352 implementation
Resolves #3894
2021-12-13 09:57:48 +01:00
Mahmoud Ben Hassine
5dc17b190e Upgrade dependencies to major versions for Spring Batch 5
* Upgrade to Jakarta EE 9
* Upgrade to Spring Framework 6
* Upgrade to Spring Integration 6
* Upgrade to Spring Data 3
* Upgrade to Spring AMQP 3
* Upgrade to Spring for Apache Kafka 3

LDIF support is still in progress waiting for the next
major version of Spring LDAP.

Closes #4027
Closes #3656
2021-11-22 12:16:49 +01:00
Mahmoud Ben Hassine
385ec9fec0 Implement equals/hashcode in BatchTestContextCustomizer
Resolves #3940
2021-09-13 21:49:24 +02:00
Mahmoud Ben Hassine
ddbd0d8ebc Fix suffix of test classes names
As per Spring Framework code style [1], the suffix of
test classes should be "Tests". This commit fixes that
for some classes that do not conform to the code style.

[1]: https://github.com/spring-projects/spring-framework/wiki/Code-Style#tests
2021-09-13 11:22:47 +02:00
Mahmoud Ben Hassine
e8bbde10e5 Remove unused imports 2021-09-12 22:23:56 +02:00
Mahmoud Ben Hassine
f85a662ebf Refine contribution #3934
* Add default methods in all listener interfaces
* Remove usage of newly deprecated support classes

Issue #3924
2021-09-10 22:05:02 +02:00
Mahmoud Ben Hassine
de9ce2d0cc Use JdbcTestUtils where appropriate in tests 2021-08-26 22:12:34 +02:00
Mahmoud Ben Hassine
d206de1cd0 Clean up schema versions in XML files of tests/samples
The schema version in JobParserWrongSchemaInRootTests-context.xml
has not been removed as it is used on purpose for
JobParserExceptionTests#testWrongSchemaInRoot.

Resolves #913
2021-08-24 11:51:37 +02:00
Mahmoud Ben Hassine
4b3bcac082 Update datasource configuration in samples/tests 2021-08-17 22:52:45 +02:00
Mahmoud Ben Hassine
bb3809cf55 Remove deprecated APIs
Resolves #3836
2021-08-17 21:14:53 +02:00
Mahmoud Ben Hassine
f8bdf5521e Remove the Map based job repository/explorer and their DAOs
This commit removes the deprecated Map-based job repository
and job explorer implementations with their respective DAOs.
Using the `EnableBatchProcessing` annotation now requires a
datasource bean to be defined in the application context.
This will be reviewed as part of #3942.

This commit is a first pass that updates related tests to use
the JDBC-based job repository/explorer with an embedded database.
A second pass should be done to improve tests by caching/reusing
embedded databases if possible.

Issue #3836
2021-08-17 16:23:46 +02:00
Philippe Marschall
1480dc5fd2 Use default methods in TestExecutionListener
Remove empty implementation methods.
2021-08-12 21:49:05 +02:00
Mahmoud Ben Hassine
27e11b52f9 Remove usage of deprecated APIs
Resolves #3838
2021-08-12 15:51:02 +02:00
Philippe Marschall
6d5a4d5352 Remove Reflection from StepScopeTestExecutionListener
Call methods on TestContext directly
2021-08-11 20:32:21 +02:00
Mahmoud Ben Hassine
7bbbd4f667 Refine contribution #3962
- Fix failing tests
- Update year in license headers

Related to #3838
2021-08-10 17:50:41 +02:00
Sebastiano Valle
24422b5163 Remove some deprecated APIs from tests
The following deprecated APIs are not in use anymore in the project's tests:
- `org.junit.rules.ExpectedException#none`
- `org.mockito.MockitoAnnotations#initMocks`
- `org.mockito.Mockito#verifyZeroInteractions`

Issue #3838
2021-08-10 17:48:21 +02:00
Marten Deinum
b7d144c10d Added isXXXEnabled for logging statements
Guarded the logging statements which do concatenation of strings
or calling toString on objects. When a log level isn't enabled
this still would produce garbage that would need to be collected.

Guarded all logging up to info, warn and error can be assumed to be
enabled on a production system.
2021-03-17 14:50:57 +01:00
Mahmoud Ben Hassine
eaeb415521 Remove outdated IDE specific resources 2021-02-05 16:40:47 +01:00
Mahmoud Ben Hassine
fa53dde01e Update build to use Maven instead of Gradle 2021-01-29 11:45:26 +01:00
Mahmoud Ben Hassine
15d24b370f Update documentation with expected configuration to use @SpringBatchTest
Resolves #3699
2020-10-02 23:49:21 +02:00