main 6cd60f570c49 cached
441 files
1.3 MB
341.6k tokens
1941 symbols
1 requests
Download .txt
Showing preview only (1,546K chars total). Download the full file or copy to clipboard to get everything.
Repository: spring-cloud/spring-cloud-task
Branch: main
Commit: 6cd60f570c49
Files: 441
Total size: 1.3 MB

Directory structure:
gitextract_72_za3bm/

├── .editorconfig
├── .github/
│   ├── dco.yml
│   └── workflows/
│       ├── ci-maven-main.yml
│       ├── ci.yaml
│       └── deploy-docs.yml
├── .gitignore
├── .mvn/
│   ├── jvm.config
│   ├── maven.config
│   └── wrapper/
│       ├── maven-wrapper.jar
│       └── maven-wrapper.properties
├── .settings.xml
├── .springformat
├── CONTRIBUTING.adoc
├── LICENSE
├── README.adoc
├── docs/
│   ├── antora-playbook.yml
│   ├── antora.yml
│   ├── modules/
│   │   └── ROOT/
│   │       ├── nav.adoc
│   │       ├── pages/
│   │       │   ├── _attributes.adoc
│   │       │   ├── appendix-building-the-documentation.adoc
│   │       │   ├── appendix-task-repository-schema.adoc
│   │       │   ├── appendix.adoc
│   │       │   ├── batch-starter.adoc
│   │       │   ├── batch.adoc
│   │       │   ├── configprops.adoc
│   │       │   ├── features.adoc
│   │       │   ├── getting-started.adoc
│   │       │   ├── index.adoc
│   │       │   ├── observability.adoc
│   │       │   ├── preface.adoc
│   │       │   └── stream.adoc
│   │       └── partials/
│   │           ├── _configprops.adoc
│   │           ├── _conventions.adoc
│   │           ├── _metrics.adoc
│   │           └── _spans.adoc
│   ├── package.json
│   ├── pom.xml
│   └── src/
│       └── main/
│           ├── antora/
│           │   └── resources/
│           │       └── antora-resources/
│           │           └── antora.yml
│           ├── asciidoc/
│           │   ├── .gitignore
│           │   ├── Guardfile
│           │   ├── README.adoc
│           │   ├── index.htmladoc
│           │   ├── index.htmlsingleadoc
│           │   ├── index.pdfadoc
│           │   ├── sagan-index.adoc
│           │   ├── spring-cloud-task.epubadoc
│           │   ├── spring-cloud-task.htmlsingleadoc
│           │   └── spring-cloud-task.pdfadoc
│           └── javadoc/
│               └── spring-javadoc.css
├── mvnw
├── mvnw.cmd
├── pom.xml
├── spring-cloud-starter-single-step-batch-job/
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── org/
│       │   │       └── springframework/
│       │   │           └── cloud/
│       │   │               └── task/
│       │   │                   └── batch/
│       │   │                       └── autoconfigure/
│       │   │                           ├── RangeConverter.java
│       │   │                           ├── SingleStepJobAutoConfiguration.java
│       │   │                           ├── SingleStepJobProperties.java
│       │   │                           ├── flatfile/
│       │   │                           │   ├── FlatFileItemReaderAutoConfiguration.java
│       │   │                           │   ├── FlatFileItemReaderProperties.java
│       │   │                           │   ├── FlatFileItemWriterAutoConfiguration.java
│       │   │                           │   ├── FlatFileItemWriterProperties.java
│       │   │                           │   └── package-info.java
│       │   │                           ├── jdbc/
│       │   │                           │   ├── JDBCSingleStepDataSourceAutoConfiguration.java
│       │   │                           │   ├── JdbcBatchItemWriterAutoConfiguration.java
│       │   │                           │   ├── JdbcBatchItemWriterProperties.java
│       │   │                           │   ├── JdbcCursorItemReaderAutoConfiguration.java
│       │   │                           │   ├── JdbcCursorItemReaderProperties.java
│       │   │                           │   └── package-info.java
│       │   │                           ├── kafka/
│       │   │                           │   ├── KafkaItemReaderAutoConfiguration.java
│       │   │                           │   ├── KafkaItemReaderProperties.java
│       │   │                           │   ├── KafkaItemWriterAutoConfiguration.java
│       │   │                           │   ├── KafkaItemWriterProperties.java
│       │   │                           │   └── package-info.java
│       │   │                           ├── package-info.java
│       │   │                           └── rabbit/
│       │   │                               ├── AmqpItemReaderAutoConfiguration.java
│       │   │                               ├── AmqpItemReaderProperties.java
│       │   │                               ├── AmqpItemWriterAutoConfiguration.java
│       │   │                               ├── AmqpItemWriterProperties.java
│       │   │                               └── package-info.java
│       │   └── resources/
│       │       └── META-INF/
│       │           ├── spring/
│       │           │   └── org.springframework.boot.autoconfigure.AutoConfiguration.imports
│       │           └── spring-configuration-metadata.json
│       └── test/
│           ├── java/
│           │   └── org/
│           │       └── springframework/
│           │           └── cloud/
│           │               └── task/
│           │                   └── batch/
│           │                       └── autoconfigure/
│           │                           ├── RangeConverterTests.java
│           │                           ├── SingleStepJobAutoConfigurationTests.java
│           │                           ├── flatfile/
│           │                           │   ├── FlatFileItemReaderAutoConfigurationTests.java
│           │                           │   └── FlatFileItemWriterAutoConfigurationTests.java
│           │                           ├── jdbc/
│           │                           │   ├── JdbcBatchItemWriterAutoConfigurationTests.java
│           │                           │   └── JdbcCursorItemReaderAutoConfigurationTests.java
│           │                           ├── kafka/
│           │                           │   ├── KafkaItemReaderAutoConfigurationTests.java
│           │                           │   └── KafkaItemWriterTests.java
│           │                           └── rabbit/
│           │                               ├── AmqpItemReaderAutoConfigurationTests.java
│           │                               └── AmqpItemWriterAutoConfigurationTests.java
│           └── resources/
│               ├── logback-test.xml
│               ├── schema-h2.sql
│               ├── test.txt
│               ├── testUTF16.csv
│               ├── testUTF8.csv
│               └── writerTestUTF16.txt
├── spring-cloud-starter-task/
│   └── pom.xml
├── spring-cloud-task-batch/
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── org/
│       │   │       └── springframework/
│       │   │           └── cloud/
│       │   │               └── task/
│       │   │                   └── batch/
│       │   │                       ├── configuration/
│       │   │                       │   ├── JobLaunchCondition.java
│       │   │                       │   ├── TaskBatchAutoConfiguration.java
│       │   │                       │   ├── TaskBatchExecutionListenerBeanPostProcessor.java
│       │   │                       │   ├── TaskBatchExecutionListenerFactoryBean.java
│       │   │                       │   ├── TaskBatchProperties.java
│       │   │                       │   ├── TaskJobLauncherApplicationRunnerFactoryBean.java
│       │   │                       │   ├── TaskJobLauncherAutoConfiguration.java
│       │   │                       │   └── package-info.java
│       │   │                       ├── handler/
│       │   │                       │   ├── TaskJobLauncherApplicationRunner.java
│       │   │                       │   └── package-info.java
│       │   │                       └── listener/
│       │   │                           ├── TaskBatchDao.java
│       │   │                           ├── TaskBatchExecutionListener.java
│       │   │                           ├── package-info.java
│       │   │                           └── support/
│       │   │                               ├── JdbcTaskBatchDao.java
│       │   │                               ├── MapTaskBatchDao.java
│       │   │                               └── package-info.java
│       │   └── resources/
│       │       └── META-INF/
│       │           ├── additional-spring-configuration-metadata.json
│       │           └── spring/
│       │               └── org.springframework.boot.autoconfigure.AutoConfiguration.imports
│       └── test/
│           ├── java/
│           │   └── org/
│           │       └── springframework/
│           │           └── cloud/
│           │               └── task/
│           │                   └── batch/
│           │                       ├── configuration/
│           │                       │   ├── TaskBatchTest.java
│           │                       │   └── TaskJobLauncherAutoConfigurationTests.java
│           │                       ├── handler/
│           │                       │   ├── TaskJobLauncherApplicationRunnerCoreTests.java
│           │                       │   └── TaskJobLauncherApplicationRunnerTests.java
│           │                       └── listener/
│           │                           ├── PrefixTests.java
│           │                           ├── PrimaryKeyTests.java
│           │                           └── TaskBatchExecutionListenerTests.java
│           └── resources/
│               ├── META-INF/
│               │   └── spring/
│               │       └── org.springframework.cloud.task.batch.configuration.TaskBatchTest.imports
│               ├── schema-h2.sql
│               └── schema-with-primary-keys-h2.sql
├── spring-cloud-task-core/
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── org/
│       │   │       └── springframework/
│       │   │           └── cloud/
│       │   │               └── task/
│       │   │                   ├── configuration/
│       │   │                   │   ├── DefaultTaskConfigurer.java
│       │   │                   │   ├── EnableTask.java
│       │   │                   │   ├── NoTransactionManagerProperty.java
│       │   │                   │   ├── SimpleTaskAutoConfiguration.java
│       │   │                   │   ├── SingleInstanceTaskListener.java
│       │   │                   │   ├── SingleTaskConfiguration.java
│       │   │                   │   ├── TaskConfigurer.java
│       │   │                   │   ├── TaskLifecycleConfiguration.java
│       │   │                   │   ├── TaskObservationCloudKeyValues.java
│       │   │                   │   ├── TaskProperties.java
│       │   │                   │   ├── TaskRepositoryDatabaseInitializerDetector.java
│       │   │                   │   ├── TaskRepositoryDependsOnDatabaseInitializationDetector.java
│       │   │                   │   ├── TaskRuntimeHints.java
│       │   │                   │   ├── observation/
│       │   │                   │   │   ├── DefaultTaskObservationConvention.java
│       │   │                   │   │   ├── ObservationApplicationRunner.java
│       │   │                   │   │   ├── ObservationApplicationRunnerBeanPostProcessor.java
│       │   │                   │   │   ├── ObservationCommandLineRunner.java
│       │   │                   │   │   ├── ObservationCommandLineRunnerBeanPostProcessor.java
│       │   │                   │   │   ├── ObservationTaskAutoConfiguration.java
│       │   │                   │   │   ├── TaskDocumentedObservation.java
│       │   │                   │   │   ├── TaskObservationContext.java
│       │   │                   │   │   ├── TaskObservationConvention.java
│       │   │                   │   │   └── package-info.java
│       │   │                   │   └── package-info.java
│       │   │                   ├── listener/
│       │   │                   │   ├── DefaultTaskExecutionObservationConvention.java
│       │   │                   │   ├── TaskException.java
│       │   │                   │   ├── TaskExecutionException.java
│       │   │                   │   ├── TaskExecutionListener.java
│       │   │                   │   ├── TaskExecutionListenerSupport.java
│       │   │                   │   ├── TaskExecutionObservation.java
│       │   │                   │   ├── TaskExecutionObservationContext.java
│       │   │                   │   ├── TaskExecutionObservationConvention.java
│       │   │                   │   ├── TaskLifecycleListener.java
│       │   │                   │   ├── TaskListenerExecutorObjectFactory.java
│       │   │                   │   ├── TaskObservations.java
│       │   │                   │   ├── annotation/
│       │   │                   │   │   ├── AfterTask.java
│       │   │                   │   │   ├── BeforeTask.java
│       │   │                   │   │   ├── FailedTask.java
│       │   │                   │   │   ├── TaskListenerExecutor.java
│       │   │                   │   │   └── package-info.java
│       │   │                   │   └── package-info.java
│       │   │                   ├── package-info.java
│       │   │                   └── repository/
│       │   │                       ├── TaskExecution.java
│       │   │                       ├── TaskExplorer.java
│       │   │                       ├── TaskNameResolver.java
│       │   │                       ├── TaskRepository.java
│       │   │                       ├── dao/
│       │   │                       │   ├── JdbcTaskExecutionDao.java
│       │   │                       │   ├── MapTaskExecutionDao.java
│       │   │                       │   ├── TaskExecutionDao.java
│       │   │                       │   └── package-info.java
│       │   │                       ├── database/
│       │   │                       │   ├── PagingQueryProvider.java
│       │   │                       │   ├── package-info.java
│       │   │                       │   └── support/
│       │   │                       │       ├── AbstractSqlPagingQueryProvider.java
│       │   │                       │       ├── Db2PagingQueryProvider.java
│       │   │                       │       ├── H2PagingQueryProvider.java
│       │   │                       │       ├── HsqlPagingQueryProvider.java
│       │   │                       │       ├── MariaDbPagingQueryProvider.java
│       │   │                       │       ├── MySqlPagingQueryProvider.java
│       │   │                       │       ├── OraclePagingQueryProvider.java
│       │   │                       │       ├── PostgresPagingQueryProvider.java
│       │   │                       │       ├── SqlPagingQueryProviderFactoryBean.java
│       │   │                       │       ├── SqlPagingQueryUtils.java
│       │   │                       │       ├── SqlServerPagingQueryProvider.java
│       │   │                       │       └── package-info.java
│       │   │                       ├── package-info.java
│       │   │                       └── support/
│       │   │                           ├── DatabaseType.java
│       │   │                           ├── SimpleTaskExplorer.java
│       │   │                           ├── SimpleTaskNameResolver.java
│       │   │                           ├── SimpleTaskRepository.java
│       │   │                           ├── TaskExecutionDaoFactoryBean.java
│       │   │                           ├── TaskRepositoryInitializer.java
│       │   │                           └── package-info.java
│       │   └── resources/
│       │       ├── META-INF/
│       │       │   ├── additional-spring-configuration-metadata.json
│       │       │   ├── spring/
│       │       │   │   ├── aot.factories
│       │       │   │   └── org.springframework.boot.autoconfigure.AutoConfiguration.imports
│       │       │   └── spring.factories
│       │       └── org/
│       │           └── springframework/
│       │               └── cloud/
│       │                   └── task/
│       │                       ├── migration/
│       │                       │   ├── 1.1.x/
│       │                       │   │   ├── migration-h2.sql
│       │                       │   │   ├── migration-hsqldb.sql
│       │                       │   │   ├── migration-mysql.sql
│       │                       │   │   ├── migration-oracle.sql
│       │                       │   │   ├── migration-postgresql.sql
│       │                       │   │   └── migration-sqlserver.sql
│       │                       │   ├── 1.2.x/
│       │                       │   │   ├── migration-db2.sql
│       │                       │   │   ├── migration-h2.sql
│       │                       │   │   ├── migration-hsqldb.sql
│       │                       │   │   ├── migration-mysql.sql
│       │                       │   │   ├── migration-oracle.sql
│       │                       │   │   ├── migration-postgresql.sql
│       │                       │   │   └── migration-sqlserver.sql
│       │                       │   ├── 2.2.x/
│       │                       │   │   └── migration-oracle.sql
│       │                       │   └── 3.0.x/
│       │                       │       ├── migration-db2.sql
│       │                       │       ├── migration-h2.sql
│       │                       │       ├── migration-hsqldb.sql
│       │                       │       ├── migration-mysql.sql
│       │                       │       └── migration-oracle.sql
│       │                       ├── schema-db2.sql
│       │                       ├── schema-h2.sql
│       │                       ├── schema-hsqldb.sql
│       │                       ├── schema-mariadb.sql
│       │                       ├── schema-mysql.sql
│       │                       ├── schema-oracle.sql
│       │                       ├── schema-postgresql.sql
│       │                       └── schema-sqlserver.sql
│       └── test/
│           ├── java/
│           │   └── org/
│           │       └── springframework/
│           │           └── cloud/
│           │               └── task/
│           │                   ├── SimpleSingleTaskAutoConfigurationTests.java
│           │                   ├── SimpleSingleTaskAutoConfigurationWithDataSourceTests.java
│           │                   ├── SimpleTaskAutoConfigurationTests.java
│           │                   ├── TaskCoreTests.java
│           │                   ├── TaskRepositoryInitializerDefaultTaskConfigurerTests.java
│           │                   ├── TaskRepositoryInitializerNoDataSourceTaskConfigurerTests.java
│           │                   ├── configuration/
│           │                   │   ├── DefaultTaskConfigurerTests.java
│           │                   │   ├── RepositoryTransactionManagerConfigurationTests.java
│           │                   │   ├── TaskPropertiesTests.java
│           │                   │   ├── TestConfiguration.java
│           │                   │   └── observation/
│           │                   │       └── ObservationIntegrationTests.java
│           │                   ├── listener/
│           │                   │   ├── TaskExceptionTests.java
│           │                   │   ├── TaskExecutionListenerTests.java
│           │                   │   ├── TaskLifecycleListenerTests.java
│           │                   │   └── TaskListenerExecutorObjectFactoryTests.java
│           │                   ├── micrometer/
│           │                   │   └── TaskObservationsTests.java
│           │                   ├── repository/
│           │                   │   ├── H2TaskRepositoryIntegrationTests.java
│           │                   │   ├── MariaDbTaskRepositoryIntegrationTests.java
│           │                   │   ├── dao/
│           │                   │   │   ├── BaseTaskExecutionDaoTestCases.java
│           │                   │   │   ├── JdbcTaskExecutionDaoMariaDBIntegrationTests.java
│           │                   │   │   └── TaskExecutionDaoTests.java
│           │                   │   ├── database/
│           │                   │   │   └── support/
│           │                   │   │       ├── FindAllPagingQueryProviderTests.java
│           │                   │   │       ├── H2PagingQueryProviderTests.java
│           │                   │   │       ├── InvalidPagingQueryProviderTests.java
│           │                   │   │       ├── SqlPagingQueryProviderFactoryBeanTests.java
│           │                   │   │       └── WhereClausePagingQueryProviderTests.java
│           │                   │   └── support/
│           │                   │       ├── DatabaseTypeTests.java
│           │                   │       ├── SimpleTaskExplorerTests.java
│           │                   │       ├── SimpleTaskNameResolverTests.java
│           │                   │       ├── SimpleTaskRepositoryJdbcTests.java
│           │                   │       ├── SimpleTaskRepositoryMapTests.java
│           │                   │       ├── TaskDatabaseInitializerTests.java
│           │                   │       └── TaskExecutionDaoFactoryBeanTests.java
│           │                   └── util/
│           │                       ├── TaskExecutionCreator.java
│           │                       ├── TestDBUtils.java
│           │                       ├── TestDefaultConfiguration.java
│           │                       ├── TestListener.java
│           │                       └── TestVerifierUtils.java
│           └── resources/
│               ├── application.properties
│               └── micrometer/
│                   └── pcf-scs-info.json
├── spring-cloud-task-dependencies/
│   └── pom.xml
├── spring-cloud-task-integration-tests/
│   ├── pom.xml
│   └── src/
│       └── test/
│           ├── java/
│           │   ├── configuration/
│           │   │   ├── JobConfiguration.java
│           │   │   ├── JobSkipConfiguration.java
│           │   │   ├── SkipItemReader.java
│           │   │   └── SkipItemWriter.java
│           │   └── org/
│           │       └── springframework/
│           │           └── cloud/
│           │               └── task/
│           │                   ├── executionid/
│           │                   │   ├── TaskStartApplication.java
│           │                   │   └── TaskStartTests.java
│           │                   ├── initializer/
│           │                   │   └── TaskInitializerTests.java
│           │                   └── listener/
│           │                       ├── BatchExecutionEventTests.java
│           │                       └── TaskEventTests.java
│           └── resources/
│               ├── application.properties
│               └── org/
│                   └── springframework/
│                       └── cloud/
│                           └── task/
│                               └── listener/
│                                   ├── chunk-events-sink-channel.properties
│                                   ├── item-process-sink-channel.properties
│                                   ├── item-read-events-sink-channel.properties
│                                   ├── item-write-events-sink-channel.properties
│                                   ├── job-execution-sink-channel.properties
│                                   ├── sink-channel.properties
│                                   ├── skip-events-sink-channel.properties
│                                   └── step-execution-sink-channel.properties
├── spring-cloud-task-samples/
│   ├── batch-events/
│   │   ├── .mvn/
│   │   │   └── wrapper/
│   │   │       ├── maven-wrapper.jar
│   │   │       └── maven-wrapper.properties
│   │   ├── README.adoc
│   │   ├── mvnw
│   │   ├── mvnw.cmd
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── io/
│   │       │   │       └── spring/
│   │       │   │           └── cloud/
│   │       │   │               ├── BatchEventsApplication.java
│   │       │   │               └── package-info.java
│   │       │   └── resources/
│   │       │       ├── application.properties
│   │       │       └── logback-test.xml
│   │       └── test/
│   │           ├── java/
│   │           │   └── io/
│   │           │       └── spring/
│   │           │           └── cloud/
│   │           │               └── BatchEventsApplicationTests.java
│   │           └── resources/
│   │               └── io/
│   │                   └── spring/
│   │                       └── task/
│   │                           └── listener/
│   │                               └── job-listener-sink-channel.properties
│   ├── batch-job/
│   │   ├── .mvn/
│   │   │   └── wrapper/
│   │   │       ├── maven-wrapper.jar
│   │   │       └── maven-wrapper.properties
│   │   ├── README.adoc
│   │   ├── mvnw
│   │   ├── mvnw.cmd
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── io/
│   │       │   │       └── spring/
│   │       │   │           ├── BatchJobApplication.java
│   │       │   │           ├── configuration/
│   │       │   │           │   ├── JobConfiguration.java
│   │       │   │           │   └── package-info.java
│   │       │   │           └── package-info.java
│   │       │   └── resources/
│   │       │       └── application.properties
│   │       └── test/
│   │           ├── java/
│   │           │   └── io/
│   │           │       └── spring/
│   │           │           ├── BatchJobApplicationTests.java
│   │           │           ├── BatchJobTestConfiguration.java
│   │           │           └── TestBatchJobApp.java
│   │           └── resources/
│   │               └── application.properties
│   ├── jpa-sample/
│   │   ├── .mvn/
│   │   │   └── wrapper/
│   │   │       ├── maven-wrapper.jar
│   │   │       └── maven-wrapper.properties
│   │   ├── README.adoc
│   │   ├── mvnw
│   │   ├── mvnw.cmd
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── io/
│   │       │   │       └── spring/
│   │       │   │           ├── JpaApplication.java
│   │       │   │           ├── configuration/
│   │       │   │           │   ├── TaskRunComponent.java
│   │       │   │           │   ├── TaskRunOutput.java
│   │       │   │           │   ├── TaskRunRepository.java
│   │       │   │           │   └── package-info.java
│   │       │   │           └── package-info.java
│   │       │   └── resources/
│   │       │       ├── application-cloud.yml
│   │       │       └── application.yml
│   │       └── test/
│   │           ├── java/
│   │           │   └── io/
│   │           │       └── spring/
│   │           │           └── JpaApplicationTests.java
│   │           └── resources/
│   │               └── application.properties
│   ├── multiple-datasources/
│   │   ├── .mvn/
│   │   │   └── wrapper/
│   │   │       ├── maven-wrapper.jar
│   │   │       └── maven-wrapper.properties
│   │   ├── README.adoc
│   │   ├── mvnw
│   │   ├── mvnw.cmd
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── io/
│   │       │   │       └── spring/
│   │       │   │           ├── MultipleDataSourcesApplication.java
│   │       │   │           ├── configuration/
│   │       │   │           │   ├── CustomTaskConfigurer.java
│   │       │   │           │   ├── EmbeddedDataSourceConfiguration.java
│   │       │   │           │   ├── ExternalDataSourceConfiguration.java
│   │       │   │           │   └── package-info.java
│   │       │   │           ├── package-info.java
│   │       │   │           └── task/
│   │       │   │               ├── SampleCommandLineRunner.java
│   │       │   │               └── package-info.java
│   │       │   └── resources/
│   │       │       └── application.properties
│   │       └── test/
│   │           ├── java/
│   │           │   └── io/
│   │           │       └── spring/
│   │           │           ├── MultiDataSourcesApplicationTests.java
│   │           │           └── MultiDataSourcesExternalApplicationTests.java
│   │           └── resources/
│   │               └── application.properties
│   ├── pom.xml
│   ├── single-step-batch-job/
│   │   ├── .mvn/
│   │   │   └── wrapper/
│   │   │       ├── maven-wrapper.jar
│   │   │       └── maven-wrapper.properties
│   │   ├── README.adoc
│   │   ├── mvnw
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── io/
│   │       │   │       └── spring/
│   │       │   │           ├── SingleStepBatchJobApplication.java
│   │       │   │           └── package-info.java
│   │       │   └── resources/
│   │       │       ├── application-amqpreader.properties
│   │       │       ├── application-amqpwriter.properties
│   │       │       ├── application-ffreader.properties
│   │       │       ├── application-ffwriter.properties
│   │       │       ├── application-jdbcreader.properties
│   │       │       ├── application-jdbcwriter.properties
│   │       │       ├── application-kafkareader.properties
│   │       │       ├── application-kafkawriter.properties
│   │       │       ├── application.properties
│   │       │       └── test.txt
│   │       └── test/
│   │           ├── java/
│   │           │   └── io/
│   │           │       └── spring/
│   │           │           └── BatchJobApplicationTests.java
│   │           └── resources/
│   │               ├── schema-h2.sql
│   │               ├── test.txt
│   │               └── testresult.txt
│   ├── task-events/
│   │   ├── .mvn/
│   │   │   └── wrapper/
│   │   │       ├── maven-wrapper.jar
│   │   │       └── maven-wrapper.properties
│   │   ├── README.adoc
│   │   ├── mvnw
│   │   ├── mvnw.cmd
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── io/
│   │           │       └── spring/
│   │           │           ├── TaskEventsApplication.java
│   │           │           └── package-info.java
│   │           └── resources/
│   │               └── application.properties
│   ├── task-observations/
│   │   ├── .gitignore
│   │   ├── .mvn/
│   │   │   └── wrapper/
│   │   │       ├── maven-wrapper.jar
│   │   │       └── maven-wrapper.properties
│   │   ├── README.adoc
│   │   ├── mvnw
│   │   ├── mvnw.cmd
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── io/
│   │       │   │       └── spring/
│   │       │   │           └── taskobservations/
│   │       │   │               ├── ObservationConfiguration.java
│   │       │   │               ├── TaskObservationsApplication.java
│   │       │   │               └── package-info.java
│   │       │   └── resources/
│   │       │       └── application.properties
│   │       └── test/
│   │           └── java/
│   │               └── io/
│   │                   └── spring/
│   │                       └── taskobservations/
│   │                           └── TaskObservationsApplicationTests.java
│   └── timestamp/
│       ├── README.adoc
│       ├── pom.xml
│       └── src/
│           ├── main/
│           │   ├── java/
│           │   │   └── org/
│           │   │       └── springframework/
│           │   │           └── cloud/
│           │   │               └── task/
│           │   │                   └── timestamp/
│           │   │                       ├── TaskApplication.java
│           │   │                       ├── TimestampTaskProperties.java
│           │   │                       └── package-info.java
│           │   └── resources/
│           │       └── application.properties
│           └── test/
│               ├── java/
│               │   └── org/
│               │       └── springframework/
│               │           └── cloud/
│               │               └── task/
│               │                   └── timestamp/
│               │                       ├── TaskApplicationTests.java
│               │                       └── TimestampTaskPropertiesTests.java
│               └── resources/
│                   └── application.properties
├── spring-cloud-task-stream/
│   ├── .mvn/
│   │   └── wrapper/
│   │       ├── maven-wrapper.jar
│   │       └── maven-wrapper.properties
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── org/
│       │   │       └── springframework/
│       │   │           └── cloud/
│       │   │               └── task/
│       │   │                   ├── batch/
│       │   │                   │   └── listener/
│       │   │                   │       ├── BatchEventAutoConfiguration.java
│       │   │                   │       ├── EventEmittingChunkListener.java
│       │   │                   │       ├── EventEmittingItemProcessListener.java
│       │   │                   │       ├── EventEmittingItemReadListener.java
│       │   │                   │       ├── EventEmittingItemWriteListener.java
│       │   │                   │       ├── EventEmittingJobExecutionListener.java
│       │   │                   │       ├── EventEmittingSkipListener.java
│       │   │                   │       ├── EventEmittingStepExecutionListener.java
│       │   │                   │       ├── package-info.java
│       │   │                   │       └── support/
│       │   │                   │           ├── BatchJobHeaders.java
│       │   │                   │           ├── ExitStatus.java
│       │   │                   │           ├── JobExecutionEvent.java
│       │   │                   │           ├── JobInstanceEvent.java
│       │   │                   │           ├── JobParameterEvent.java
│       │   │                   │           ├── JobParametersEvent.java
│       │   │                   │           ├── MessagePublisher.java
│       │   │                   │           ├── StepExecutionEvent.java
│       │   │                   │           ├── TaskBatchEventListenerBeanPostProcessor.java
│       │   │                   │           ├── TaskEventProperties.java
│       │   │                   │           └── package-info.java
│       │   │                   └── listener/
│       │   │                       ├── TaskEventAutoConfiguration.java
│       │   │                       └── package-info.java
│       │   └── resources/
│       │       ├── META-INF/
│       │       │   ├── additional-spring-configuration-metadata.json
│       │       │   └── spring/
│       │       │       └── org.springframework.boot.autoconfigure.AutoConfiguration.imports
│       │       └── org/
│       │           └── springframework/
│       │               └── cloud/
│       │                   └── task/
│       │                       └── application.properties
│       └── test/
│           └── java/
│               └── org/
│                   └── springframework/
│                       └── cloud/
│                           └── task/
│                               ├── batch/
│                               │   └── listener/
│                               │       ├── EventListenerTests.java
│                               │       ├── JobExecutionEventTests.java
│                               │       ├── JobInstanceEventTests.java
│                               │       ├── JobParameterEventTests.java
│                               │       ├── JobParametersEventTests.java
│                               │       ├── StepExecutionEventTests.java
│                               │       ├── TaskBatchEventListenerBeanPostProcessorTests.java
│                               │       └── support/
│                               │           └── TaskBatchEventListenerBeanPostProcessorRuntimeHintTests.java
│                               └── listener/
│                                   └── TaskEventTests.java
└── src/
    └── checkstyle/
        └── checkstyle-suppressions.xml

================================================
FILE CONTENTS
================================================

================================================
FILE: .editorconfig
================================================
# EditorConfig is awesome: https://EditorConfig.org

# top-most EditorConfig file
root = true

[*]
indent_style = tab
indent_size = 4
end_of_line = lf
insert_final_newline = true

[*.yml]
indent_style = space
indent_size = 2


================================================
FILE: .github/dco.yml
================================================
require:
  members: false


================================================
FILE: .github/workflows/ci-maven-main.yml
================================================
name: CI PRs

on:
  push:
    branches:
      - main
  pull_request:
    branches:
      - main

jobs:
  build:
    runs-on: ubuntu-latest
    name: CI PR Build
    steps:
      - uses: actions/checkout@v2
      - uses: actions/setup-java@v2
        with:
          distribution: adopt
          java-version: 17
      - run: mvn "-Dmaven.repo.local=.m2" -U -B package -s .settings.xml


================================================
FILE: .github/workflows/ci.yaml
================================================
name: Spring Cloud Task CI Job

on:
  push:
    branches:
      - main
      - 4.3.x

  # Scheduled builds run daily at midnight UTC
  schedule:
    - cron: '0 0 * * *'

  # Manual trigger with optional branch override
  workflow_dispatch:
    inputs:
      branches:
        description: "Which branch should be built (can be a comma-separated list of branches)"
        required: true
        default: 'main'
        type: string

jobs:
  deploy:
    uses: spring-cloud/spring-cloud-github-actions/.github/workflows/deploy.yml@main
    with:
      branches: ${{ inputs.branches }}
    secrets:
      ARTIFACTORY_USERNAME: ${{ secrets.ARTIFACTORY_USERNAME }}
      ARTIFACTORY_PASSWORD: ${{ secrets.ARTIFACTORY_PASSWORD }}
      COMMERCIAL_ARTIFACTORY_USERNAME: ${{ secrets.COMMERCIAL_ARTIFACTORY_USERNAME }}
      COMMERCIAL_ARTIFACTORY_PASSWORD: ${{ secrets.COMMERCIAL_ARTIFACTORY_PASSWORD }}
      DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}
      DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }}


================================================
FILE: .github/workflows/deploy-docs.yml
================================================
name: Deploy Docs
on:
  push:
    branches-ignore: [ gh-pages ]
    tags: '**'
  repository_dispatch:
    types: request-build-reference # legacy
  #schedule:
  #- cron: '0 10 * * *' # Once per day at 10am UTC
  workflow_dispatch:
permissions:
  actions: write
jobs:
  build:
    runs-on: ubuntu-latest
    # if: github.repository_owner == 'spring-cloud'
    steps:
      - name: Checkout
        uses: actions/checkout@v3
        with:
          ref: docs-build
          fetch-depth: 1
      - name: Dispatch (partial build)
        if: github.ref_type == 'branch'
        env:
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        run: gh workflow run deploy-docs.yml -r $(git rev-parse --abbrev-ref HEAD) -f build-refname=${{ github.ref_name }}
      - name: Dispatch (full build)
        if: github.ref_type == 'tag'
        env:
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        run: gh workflow run deploy-docs.yml -r $(git rev-parse --abbrev-ref HEAD)


================================================
FILE: .gitignore
================================================
*~
.#*
*#
*.sw*
_site/
.factorypath
.gradletasknamecache
.DS_Store
/application.yml
/application.properties
asciidoctor.css
atlassian-ide-plugin.xml
bin/
build/
dump.rdb
out
spring-shell.log
target/
test-output
result.txt
.flattened-pom.xml

# Eclipse artifacts, including WTP generated manifests
.classpath
.project
.settings/
.springBeans
spring-*/src/main/java/META-INF/MANIFEST.MF

# IDEA artifacts and output dirs
*.iml
*.ipr
*.iws
.idea/*

# Github Actions
.m2

node
node_modules
build
/package.json
package-lock.json


================================================
FILE: .mvn/jvm.config
================================================
-Xmx1024m -XX:CICompilerCount=1 -XX:TieredStopAtLevel=1 -Djava.security.egd=file:/dev/./urandom


================================================
FILE: .mvn/maven.config
================================================
-DaltSnapshotDeploymentRepository=repo.spring.io::default::https://repo.spring.io/libs-snapshot-local
-P spring


================================================
FILE: .mvn/wrapper/maven-wrapper.properties
================================================
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.
distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.1/apache-maven-3.9.1-bin.zip
wrapperUrl=https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar


================================================
FILE: .settings.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!--
  ~ /*
  ~  * Copyright 2016-2019 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.
  ~  * You may obtain a copy of the License at
  ~  *
  ~  *      https://www.apache.org/licenses/LICENSE-2.0
  ~  *
  ~  * Unless required by applicable law or agreed to in writing, software
  ~  * distributed under the License is distributed on an "AS IS" BASIS,
  ~  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  ~  * See the License for the specific language governing permissions and
  ~  * limitations under the License.
  ~  */
  -->

<settings>
	<servers>
		<server>
			<id>repo.spring.io</id>
			<username>${env.CI_DEPLOY_USERNAME}</username>
			<password>${env.CI_DEPLOY_PASSWORD}</password>
		</server>
	</servers>
	<profiles>
		<profile>
			<!--
				N.B. this profile is only here to support users and IDEs that do not use Maven 3.3.
				It isn't needed on the command line if you use the wrapper script (mvnw) or if you use
				a native Maven with the right version. Eclipse users should points their Maven tooling to
				this settings file, or copy the profile into their ~/.m2/settings.xml.
			-->
			<id>spring</id>
			<activation>
				<activeByDefault>true</activeByDefault>
			</activation>
			<repositories>
				<repository>
					<id>spring-snapshots</id>
					<name>Spring Snapshots</name>
					<url>https://repo.spring.io/snapshot</url>
					<snapshots>
						<enabled>true</enabled>
					</snapshots>
				</repository>
				<repository>
					<id>spring-milestones</id>
					<name>Spring Milestones</name>
					<url>https://repo.spring.io/milestone</url>
					<snapshots>
						<enabled>false</enabled>
					</snapshots>
				</repository>
				<repository>
					<id>spring-releases</id>
					<name>Spring Releases</name>
					<url>https://repo.spring.io/release</url>
					<snapshots>
						<enabled>false</enabled>
					</snapshots>
				</repository>
			</repositories>
			<pluginRepositories>
				<pluginRepository>
					<id>spring-snapshots</id>
					<name>Spring Snapshots</name>
					<url>https://repo.spring.io/snapshot</url>
					<snapshots>
						<enabled>true</enabled>
					</snapshots>
				</pluginRepository>
				<pluginRepository>
					<id>spring-milestones</id>
					<name>Spring Milestones</name>
					<url>https://repo.spring.io/milestone</url>
					<snapshots>
						<enabled>false</enabled>
					</snapshots>
				</pluginRepository>
			</pluginRepositories>
		</profile>
	</profiles>
	<pluginGroups>
		<pluginGroup>io.spring.javaformat</pluginGroup>
	</pluginGroups>
</settings>


================================================
FILE: .springformat
================================================


================================================
FILE: CONTRIBUTING.adoc
================================================
= Contributing to Spring Cloud Task

:github: https://github.com/spring-cloud/spring-cloud-task

Spring Cloud Task is released under the Apache 2.0 license. If you would like to contribute something, or want to hack on the code this document should help you get started.


== Using GitHub Issues
We use GitHub issues to track bugs and enhancements.
If you have a general usage question please ask on https://stackoverflow.com[Stack Overflow].
The Spring Cloud Task team and the broader community monitor the https://stackoverflow.com/tags/spring-cloud-Task[`spring-cloud-task`] tag.

If you are reporting a bug, please help to speed up problem diagnosis by providing as much information as possible.
Ideally, that would include a small sample project that reproduces the problem.



== Reporting Security Vulnerabilities
If you think you have found a security vulnerability in Spring Cloud Task please *DO NOT* disclose it publicly until we've had a chance to fix it.
Please don't report security vulnerabilities using GitHub issues, instead head over to https://spring.io/security-policy and learn how to disclose them responsibly.



== Developer Certificate of Origin
All commits must include a **Signed-off-by** trailer at the end of each commit message to indicate that the contributor agrees to the Developer Certificate of Origin.
For additional details, please refer to the blog post https://spring.io/blog/2025/01/06/hello-dco-goodbye-cla-simplifying-contributions-to-spring[Hello DCO, Goodbye CLA: Simplifying Contributions to Spring].


=== Code Conventions and Housekeeping

None of the following guidelines is essential for a pull request, but they all help your fellow developers understand and work with your code.
They can also be added after the original pull request but before a merge.

* Use the Spring Framework code format conventions. If you use Eclipse, you can import formatter settings by using the `eclipse-code-formatter.xml` file from the https://github.com/spring-cloud/spring-cloud-build/blob/master/spring-cloud-dependencies-parent/eclipse-code-formatter.xml[Spring Cloud Build] project.
If you use IntelliJ, you can use the https://plugins.jetbrains.com/plugin/6546[Eclipse Code Formatter Plugin] to import the same file.
* Make sure all new `.java` files have a simple Javadoc class comment with at least an  `@author` tag identifying you, and preferably at least a paragraph describing the class's purpose.
* Add the ASF license header comment to all new `.java` files (to do so, copy it from existing files in the project).
* Add yourself as an `@author` to the .java files that you modify substantially (more than cosmetic changes).
* Add some Javadocs and, if you change the namespace, some XSD doc elements.
* A few unit tests would help a lot as well. Someone has to do it, and your fellow developers appreciate the effort.
* If no one else uses your branch, rebase it against the current master (or other target branch in the main project).
* When writing a commit message, follow https://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html[these conventions].
If you fix an existing issue, add `Fixes gh-XXXX` (where XXXX is the issue number) at the end of the commit message.


================================================
FILE: LICENSE
================================================
                                 Apache License
                           Version 2.0, January 2004
                        https://www.apache.org/licenses/

   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

   1. Definitions.

      "License" shall mean the terms and conditions for use, reproduction,
      and distribution as defined by Sections 1 through 9 of this document.

      "Licensor" shall mean the copyright owner or entity authorized by
      the copyright owner that is granting the License.

      "Legal Entity" shall mean the union of the acting entity and all
      other entities that control, are controlled by, or are under common
      control with that entity. For the purposes of this definition,
      "control" means (i) the power, direct or indirect, to cause the
      direction or management of such entity, whether by contract or
      otherwise, or (ii) ownership of fifty percent (50%) or more of the
      outstanding shares, or (iii) beneficial ownership of such entity.

      "You" (or "Your") shall mean an individual or Legal Entity
      exercising permissions granted by this License.

      "Source" form shall mean the preferred form for making modifications,
      including but not limited to software source code, documentation
      source, and configuration files.

      "Object" form shall mean any form resulting from mechanical
      transformation or translation of a Source form, including but
      not limited to compiled object code, generated documentation,
      and conversions to other media types.

      "Work" shall mean the work of authorship, whether in Source or
      Object form, made available under the License, as indicated by a
      copyright notice that is included in or attached to the work
      (an example is provided in the Appendix below).

      "Derivative Works" shall mean any work, whether in Source or Object
      form, that is based on (or derived from) the Work and for which the
      editorial revisions, annotations, elaborations, or other modifications
      represent, as a whole, an original work of authorship. For the purposes
      of this License, Derivative Works shall not include works that remain
      separable from, or merely link (or bind by name) to the interfaces of,
      the Work and Derivative Works thereof.

      "Contribution" shall mean any work of authorship, including
      the original version of the Work and any modifications or additions
      to that Work or Derivative Works thereof, that is intentionally
      submitted to Licensor for inclusion in the Work by the copyright owner
      or by an individual or Legal Entity authorized to submit on behalf of
      the copyright owner. For the purposes of this definition, "submitted"
      means any form of electronic, verbal, or written communication sent
      to the Licensor or its representatives, including but not limited to
      communication on electronic mailing lists, source code control systems,
      and issue tracking systems that are managed by, or on behalf of, the
      Licensor for the purpose of discussing and improving the Work, but
      excluding communication that is conspicuously marked or otherwise
      designated in writing by the copyright owner as "Not a Contribution."

      "Contributor" shall mean Licensor and any individual or Legal Entity
      on behalf of whom a Contribution has been received by Licensor and
      subsequently incorporated within the Work.

   2. Grant of Copyright License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      copyright license to reproduce, prepare Derivative Works of,
      publicly display, publicly perform, sublicense, and distribute the
      Work and such Derivative Works in Source or Object form.

   3. Grant of Patent License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      (except as stated in this section) patent license to make, have made,
      use, offer to sell, sell, import, and otherwise transfer the Work,
      where such license applies only to those patent claims licensable
      by such Contributor that are necessarily infringed by their
      Contribution(s) alone or by combination of their Contribution(s)
      with the Work to which such Contribution(s) was submitted. If You
      institute patent litigation against any entity (including a
      cross-claim or counterclaim in a lawsuit) alleging that the Work
      or a Contribution incorporated within the Work constitutes direct
      or contributory patent infringement, then any patent licenses
      granted to You under this License for that Work shall terminate
      as of the date such litigation is filed.

   4. Redistribution. You may reproduce and distribute copies of the
      Work or Derivative Works thereof in any medium, with or without
      modifications, and in Source or Object form, provided that You
      meet the following conditions:

      (a) You must give any other recipients of the Work or
          Derivative Works a copy of this License; and

      (b) You must cause any modified files to carry prominent notices
          stating that You changed the files; and

      (c) You must retain, in the Source form of any Derivative Works
          that You distribute, all copyright, patent, trademark, and
          attribution notices from the Source form of the Work,
          excluding those notices that do not pertain to any part of
          the Derivative Works; and

      (d) If the Work includes a "NOTICE" text file as part of its
          distribution, then any Derivative Works that You distribute must
          include a readable copy of the attribution notices contained
          within such NOTICE file, excluding those notices that do not
          pertain to any part of the Derivative Works, in at least one
          of the following places: within a NOTICE text file distributed
          as part of the Derivative Works; within the Source form or
          documentation, if provided along with the Derivative Works; or,
          within a display generated by the Derivative Works, if and
          wherever such third-party notices normally appear. The contents
          of the NOTICE file are for informational purposes only and
          do not modify the License. You may add Your own attribution
          notices within Derivative Works that You distribute, alongside
          or as an addendum to the NOTICE text from the Work, provided
          that such additional attribution notices cannot be construed
          as modifying the License.

      You may add Your own copyright statement to Your modifications and
      may provide additional or different license terms and conditions
      for use, reproduction, or distribution of Your modifications, or
      for any such Derivative Works as a whole, provided Your use,
      reproduction, and distribution of the Work otherwise complies with
      the conditions stated in this License.

   5. Submission of Contributions. Unless You explicitly state otherwise,
      any Contribution intentionally submitted for inclusion in the Work
      by You to the Licensor shall be under the terms and conditions of
      this License, without any additional terms or conditions.
      Notwithstanding the above, nothing herein shall supersede or modify
      the terms of any separate license agreement you may have executed
      with Licensor regarding such Contributions.

   6. Trademarks. This License does not grant permission to use the trade
      names, trademarks, service marks, or product names of the Licensor,
      except as required for reasonable and customary use in describing the
      origin of the Work and reproducing the content of the NOTICE file.

   7. Disclaimer of Warranty. Unless required by applicable law or
      agreed to in writing, Licensor provides the Work (and each
      Contributor provides its Contributions) on an "AS IS" BASIS,
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
      implied, including, without limitation, any warranties or conditions
      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
      PARTICULAR PURPOSE. You are solely responsible for determining the
      appropriateness of using or redistributing the Work and assume any
      risks associated with Your exercise of permissions under this License.

   8. Limitation of Liability. In no event and under no legal theory,
      whether in tort (including negligence), contract, or otherwise,
      unless required by applicable law (such as deliberate and grossly
      negligent acts) or agreed to in writing, shall any Contributor be
      liable to You for damages, including any direct, indirect, special,
      incidental, or consequential damages of any character arising as a
      result of this License or out of the use or inability to use the
      Work (including but not limited to damages for loss of goodwill,
      work stoppage, computer failure or malfunction, or any and all
      other commercial damages or losses), even if such Contributor
      has been advised of the possibility of such damages.

   9. Accepting Warranty or Additional Liability. While redistributing
      the Work or Derivative Works thereof, You may choose to offer,
      and charge a fee for, acceptance of support, warranty, indemnity,
      or other liability obligations and/or rights consistent with this
      License. However, in accepting such obligations, You may act only
      on Your own behalf and on Your sole responsibility, not on behalf
      of any other Contributor, and only if You agree to indemnify,
      defend, and hold each Contributor harmless for any liability
      incurred by, or claims asserted against, such Contributor by reason
      of your accepting any such warranty or additional liability.

   END OF TERMS AND CONDITIONS

   APPENDIX: How to apply the Apache License to your work.

      To apply the Apache License to your work, attach the following
      boilerplate notice, with the fields enclosed by brackets "{}"
      replaced with your own identifying information. (Don't include
      the brackets!)  The text should be enclosed in the appropriate
      comment syntax for the file format. We also recommend that a
      file or class name and description of purpose be included on the
      same "printed page" as the copyright notice for easier
      identification within third-party archives.

   Copyright {yyyy} {name of copyright owner}

   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

       https://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.



================================================
FILE: README.adoc
================================================
////
DO NOT EDIT THIS FILE. IT WAS GENERATED.
Manual changes to this file will be lost when it is generated again.
Edit the files in the src/main/asciidoc/ directory instead.
////


[[spring-cloud-task]]
= Spring Cloud Task

Is a project centered around the idea of processing on demand.  A user is able to develop
a “task” that can be deployed, executed and removed on demand, yet the result of the
process persists beyond the life of the task for future reporting.


[[requirements:]]
== Requirements:

* Java 17 or Above

[[build-main-project:]]
== Build Main Project:

[source,shell,indent=2]
----
$ ./mvnw clean install
----

[[example:]]
== Example:

[source,java,indent=2]
----
@SpringBootApplication
@EnableTask
public class MyApp {

    @Bean
    public MyTaskApplication myTask() {
        return new MyTaskApplication();
    }

    public static void main(String[] args) {
        SpringApplication.run(MyApp.class);
    }

    public static class MyTaskApplication implements ApplicationRunner {

        @Override
        public void run(ApplicationArguments args) throws Exception {
            System.out.println("Hello World");
        }
    }
}
----

[[code-of-conduct]]
== Code of Conduct
This project adheres to the Contributor Covenant link:CODE_OF_CONDUCT.adoc[code of conduct]. By participating, you  are expected to uphold this code. Please report unacceptable behavior to spring-code-of-conduct@pivotal.io.

[[building-the-project]]
== Building the Project

This project requires that you invoke the Javadoc engine from the Maven command line. You can do so by appending `javadoc:aggregate` to the rest of your Maven command.
For example, to build the entire project, you could use `mvn clean install -DskipTests -P docs`.


================================================
FILE: docs/antora-playbook.yml
================================================
antora:
  extensions:
    - require: '@springio/antora-extensions'
      root_component_name: 'cloud-task'
site:
  title: Spring Cloud Task
  url: https://docs.spring.io/spring-cloud-task/reference/
content:
  sources:
    - url: ./..
      branches: HEAD
      start_path: docs
      worktrees: true
asciidoc:
  attributes:
    page-stackoverflow-url: https://stackoverflow.com/tags/spring-cloud-task
    page-pagination: ''
    hide-uri-scheme: '@'
    tabs-sync-option: '@'
    chomp: 'all'
  extensions:
    - '@asciidoctor/tabs'
    - '@springio/asciidoctor-extensions'
  sourcemap: true
urls:
  latest_version_segment: ''
runtime:
  log:
    failure_level: warn
    format: pretty
ui:
  bundle:
    url: https://github.com/spring-io/antora-ui-spring/releases/download/v0.4.15/ui-bundle.zip


================================================
FILE: docs/antora.yml
================================================
name: cloud-task
version: true
title: spring-cloud-task
nav:
  - modules/ROOT/nav.adoc
ext:
  collector:
    run:
      command: ./mvnw --no-transfer-progress -B process-resources -Pdocs -pl docs -Dantora-maven-plugin.phase=none -Dgenerate-docs.phase=none -Dgenerate-readme.phase=none -Dgenerate-cloud-resources.phase=none -Dmaven-dependency-plugin-for-docs.phase=none -Dmaven-dependency-plugin-for-docs-classes.phase=none -DskipTests -DdisableConfigurationProperties
      local: true
    scan:
      dir: ./target/classes/antora-resources/


================================================
FILE: docs/modules/ROOT/nav.adoc
================================================
* xref:index.adoc[Introduction]
* xref:getting-started.adoc[]
* xref:features.adoc[]
* xref:batch.adoc[]
* xref:batch-starter.adoc[]
* xref:stream.adoc[]
* xref:appendix.adoc[]
** xref:appendix-task-repository-schema.adoc[]
** xref:appendix-building-the-documentation.adoc[]
** xref:observability.adoc[]


================================================
FILE: docs/modules/ROOT/pages/_attributes.adoc
================================================
:doctype: book
:idprefix:
:idseparator: -
:tabsize: 4
:numbered:
:sectanchors:
:sectnums:
:icons: font
:hide-uri-scheme:
:docinfo: shared,private

:sc-ext: java
:project-full-name: Spring Cloud Task

// project-specific attributes
:spring-cloud-task-repo: snapshot
:github-tag: master
:spring-cloud-task-docs-version: current
:spring-cloud-task-docs: https://docs.spring.io/spring-cloud-task/docs/{spring-cloud-task-docs-version}/reference
:spring-cloud-task-docs-current: https://docs.spring.io/spring-cloud-task/reference/
:github-repo: spring-cloud/spring-cloud-task
:github-raw: https://raw.github.com/{github-repo}/{github-tag}
:github-code: https://github.com/{github-repo}/tree/{github-tag}
:github-wiki: https://github.com/{github-repo}/wiki
:github-master-code: https://github.com/{github-repo}/tree/master
:sc-ext: java
:sc-spring-boot: {github-code}/spring-boot/src/main/java/org/springframework/boot
:dc-ext: html
:dc-root: https://docs.spring.io/spring-cloud-task/docs/{spring-cloud-dataflow-docs-version}/api
:dc-spring-boot: {dc-root}/org/springframework/boot
:dependency-management-plugin: https://github.com/spring-gradle-plugins/dependency-management-plugin
:dependency-management-plugin-documentation: {dependency-management-plugin}/blob/master/README.md
:spring-boot-maven-plugin-site: https://docs.spring.io/spring-boot/docs/{spring-boot-docs-version}/maven-plugin
:spring-reference: https://docs.spring.io/spring/docs/{spring-docs-version}/spring-framework-reference/htmlsingle
:spring-security-reference: https://docs.spring.io/spring-security/site/docs/{spring-security-docs-version}/reference/htmlsingle
:spring-javadoc: https://docs.spring.io/spring/docs/{spring-docs-version}/javadoc-api/org/springframework
:spring-amqp-javadoc: https://docs.spring.io/spring-amqp/docs/current/api/org/springframework/amqp
:spring-data-javadoc: https://docs.spring.io/spring-data/jpa/docs/current/api/org/springframework/data/jpa
:spring-data-commons-javadoc: https://docs.spring.io/spring-data/commons/docs/current/api/org/springframework/data
:spring-data-mongo-javadoc: https://docs.spring.io/spring-data/mongodb/docs/current/api/org/springframework/data/mongodb
:spring-data-rest-javadoc: https://docs.spring.io/spring-data/rest/docs/current/api/org/springframework/data/rest
:gradle-userguide: https://www.gradle.org/docs/current/userguide
:propdeps-plugin: https://github.com/spring-projects/gradle-plugins/tree/master/propdeps-plugin
:ant-manual: https://ant.apache.org/manual
:attributes: allow-uri-read


================================================
FILE: docs/modules/ROOT/pages/appendix-building-the-documentation.adoc
================================================

[[appendix-building-the-documentation]]
= Building This Documentation
:page-section-summary-toc: 1

This project uses Maven to generate this documentation. To generate it for yourself,
run the following command: `$ mvn clean install -DskipTests -P docs`.


================================================
FILE: docs/modules/ROOT/pages/appendix-task-repository-schema.adoc
================================================
[[appendix-task-repository-schema]]
= Task Repository Schema

[[partintro]]
--
This appendix provides an ERD for the database schema used in the task repository.
--

image::task_schema.png[]

[[table-information]]
== Table Information
--

.TASK_EXECUTION
Stores the task execution information.
[width="80%", cols="1,1,1,1,10", options="header"]
|=========================================================
|Column Name |Required |Type |Field Length |Notes

|TASK_EXECUTION_ID |TRUE |BIGINT | X |
Spring Cloud Task Framework at app startup establishes the next available id as obtained from the `TASK_SEQ`. Or if the record is created outside of task then the value must be populated at record creation time.

|START_TIME |FALSE | DATETIME(6) | X | Spring Cloud Task Framework at app startup establishes the value.

|END_TIME |FALSE | DATETIME(6) | X | Spring Cloud Task Framework at app exit establishes the value.

|TASK_NAME |FALSE | VARCHAR | 100 | Spring Cloud Task Framework at app startup will set this to "Application" unless user establish the name using the `spring.application.name`.

|EXIT_CODE |FALSE | INTEGER | X | Follows Spring Boot defaults unless overridden by the user as discussed https://docs.spring.io/spring-cloud-task/docs/current/reference/#features-lifecycle-exit-codes[here].

|EXIT_MESSAGE |FALSE | VARCHAR | 2500 | User Defined as discussed https://docs.spring.io/spring-cloud-task/docs/current/reference/#features-task-execution-listener-exit-messages[here].

|ERROR_MESSAGE |FALSE | VARCHAR | 2500 | Spring Cloud Task Framework at app exit establishes the value.

|LAST_UPDATED |TRUE | TIMESTAMP | X | Spring Cloud Task Framework at app startup establishes the value. Or if the record is created outside of task then the value must be populated at record creation time.

|EXTERNAL_EXECUTION_ID |FALSE | VARCHAR | 250 | If the `spring.cloud.task.external-execution-id` property is set then Spring Cloud Task Framework at app startup will set this to the value specified.   More information can be found xref:features.adoc#features-external_task_id[here]

|PARENT_TASK_EXECUTION_ID |FALSE |BIGINT | X | If the `spring.cloud.task.parent-execution-id` property is set then Spring Cloud Task Framework at app startup will set this to the value specified.   More information can be found xref:features.adoc#features-parent_task_id[here]

|=========================================================

.TASK_EXECUTION_PARAMS
Stores the parameters used for a task execution
[width="80%", cols="1,1,1,1", options="header"]
|=========================================================
|Column Name |Required |Type |Field Length
|TASK_EXECUTION_ID |TRUE |BIGINT | X 

|TASK_PARAM |FALSE | VARCHAR | 2500 

|=========================================================

.TASK_TASK_BATCH
Used to link the task execution to the batch execution.
[width="80%", cols="1,1,1,1", options="header"]
|=========================================================
|Column Name |Required |Type |Field Length

|TASK_EXECUTION_ID |TRUE |BIGINT | X 

|JOB_EXECUTION_ID |TRUE | BIGINT | X 

|=========================================================


.TASK_LOCK
Used for the `single-instance-enabled` feature discussed xref:features.adoc#features-single-instance-enabled[here].
[width="80%", cols="1,1,1,1,10", options="header"]
|=========================================================
|Column Name |Required |Type | Field Length |Notes

|LOCK_KEY |TRUE |CHAR | 36 | UUID for the this lock

|REGION |TRUE | VARCHAR  | 100 | User can establish a group of locks using this field.

|CLIENT_ID |TRUE | CHAR  | 36 | The task execution id that contains the name of the app to lock.

|CREATED_DATE |TRUE | DATETIME  | X | The date that the entry was created

|=========================================================


NOTE: The DDL for setting up tables for each database type can be found https://github.com/spring-cloud/spring-cloud-task/tree/master/spring-cloud-task-core/src/main/resources/org/springframework/cloud/task[here].
--

[[sql-server]]
== SQL Server
By default Spring Cloud Task uses a sequence table for determining the `TASK_EXECUTION_ID` for the `TASK_EXECUTION` table.
However, when launching multiple tasks simultaneously while using SQL Server, this can cause a deadlock to occur on the `TASK_SEQ` table.
The resolution is to drop the `TASK_EXECUTION_SEQ` table and create a sequence using the same name.   For example:
```
DROP TABLE TASK_SEQ;

CREATE SEQUENCE [DBO].[TASK_SEQ] AS BIGINT
 START WITH 1
 INCREMENT BY 1;
```
NOTE: Set the `START WITH`  to a higher value than your current execution id.


================================================
FILE: docs/modules/ROOT/pages/appendix.adoc
================================================

[[appendix]]
= Appendices
:page-section-summary-toc: 1



ifndef::train-docs[]
endif::[]



================================================
FILE: docs/modules/ROOT/pages/batch-starter.adoc
================================================

[[batch-job-starter]]
= Single Step Batch Job Starter

[[partintro]]
--
This section goes into how to develop a Spring Batch `Job` with a single `Step` by using the
starter included in Spring Cloud Task. This starter lets you use configuration
to define an `ItemReader`, an `ItemWriter`, or a full single-step Spring Batch `Job`.
For more about Spring Batch and its capabilities, see the
https://spring.io/projects/spring-batch[Spring Batch documentation].
--

To obtain the starter for Maven, add the following to your build:

[source,xml]
----
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-single-step-batch-job</artifactId>
    <version>2.3.0</version>
</dependency>
----

To obtain the starter for Gradle, add the following to your build:

[source,groovy]
----
compile "org.springframework.cloud:spring-cloud-starter-single-step-batch-job:2.3.0"
----

[[job-definition]]
== Defining a Job

You can use the starter to define as little as an `ItemReader` or an `ItemWriter` or as much as a full `Job`.
In this section, we define which properties are required to be defined to configure a
`Job`.

[[job-definition-properties]]
=== Properties

To begin, the starter provides a set of properties that let you configure the basics of a Job with one Step:

.Job Properties
|===
| Property | Type | Default Value | Description

| `spring.batch.job.jobName`
| `String`
| `null`
| The name of the job.

| `spring.batch.job.stepName`
| `String`
| `null`
| The name of the step.

| `spring.batch.job.chunkSize`
| `Integer`
| `null`
| The number of items to be processed per transaction.
|===

With the above properties configured, you have a job with a single, chunk-based step.
This chunk-based step reads, processes, and writes `Map<String, Object>` instances as the
items. However, the step does not yet do anything. You need to configure an `ItemReader`, an
optional `ItemProcessor`, and an `ItemWriter` to give it something to do. To configure one
of these, you can either use properties and configure one of the options that has provided
autoconfiguration or you can configure your own with the standard Spring configuration
mechanisms.

NOTE: If you configure your own, the input and output types must match the others in the step.
The `ItemReader` implementations and `ItemWriter` implementations in this starter all use
a `Map<String, Object>` as the input and the output item.

[[item-readers]]
== Autoconfiguration for ItemReader Implementations

This starter provides autoconfiguration for four different `ItemReader` implementations:
`AmqpItemReader`, `FlatFileItemReader`, `JdbcCursorItemReader`, and `KafkaItemReader`.
In this section, we outline how to configure each of these by using the provided
autoconfiguration.

[[amqpitemreader]]
=== AmqpItemReader

You can read from a queue or topic with AMQP by using the `AmqpItemReader`. The
autoconfiguration for this `ItemReader` implementation is dependent upon two sets of
configuration. The first is the configuration of an `AmqpTemplate`. You can either
configure this yourself or use the autoconfiguration provided by Spring Boot. See the
https://docs.spring.io/spring-boot/docs/3.0.x/reference/htmlsingle/#messaging.amqp.rabbitmq[Spring Boot AMQP documentation].
Once you have configured the `AmqpTemplate`, you can enable the batch capabilities to support it
by setting the following properties:

.`AmqpItemReader` Properties
|===
| Property | Type | Default Value | Description

| `spring.batch.job.amqpitemreader.enabled`
| `boolean`
| `false`
| If `true`, the autoconfiguration will execute.

| `spring.batch.job.amqpitemreader.jsonConverterEnabled`
| `boolean`
| `true`
| Indicates if the `Jackson2JsonMessageConverter` should be registered to parse messages.
|===

For more information, see the https://docs.spring.io/spring-batch/docs/4.3.x/api/org/springframework/batch/item/amqp/AmqpItemReader.html[`AmqpItemReader` documentation].

[[flatfileitemreader]]
=== FlatFileItemReader

`FlatFileItemReader` lets you read from flat files (such as CSVs
and other file formats). To read from a file, you can provide some components
yourself through normal Spring configuration (`LineTokenizer`, `RecordSeparatorPolicy`,
`FieldSetMapper`, `LineMapper`, or `SkippedLinesCallback`). You can also use the
following properties to configure the reader:

.`FlatFileItemReader` Properties
|===
| Property | Type | Default Value | Description

| `spring.batch.job.flatfileitemreader.saveState`
| `boolean`
| `true`
| Determines if the state should be saved for restarts.

| `spring.batch.job.flatfileitemreader.name`
| `String`
| `null`
| Name used to provide unique keys in the `ExecutionContext`.

| `spring.batch.job.flatfileitemreader.maxItemcount`
| `int`
| `Integer.MAX_VALUE`
| Maximum number of items to be read from the file.

| `spring.batch.job.flatfileitemreader.currentItemCount`
| `int`
| 0
| Number of items that have already been read. Used on restarts.

| `spring.batch.job.flatfileitemreader.comments`
| `List<String>`
| empty List
| A list of Strings that indicate commented lines (lines to be ignored) in the file.

| `spring.batch.job.flatfileitemreader.resource`
| `Resource`
| `null`
| The resource to be read.

| `spring.batch.job.flatfileitemreader.strict`
| `boolean`
| `true`
| If set to `true`, the reader throws an exception if the resource is not found.

| `spring.batch.job.flatfileitemreader.encoding`
| `String`
| `FlatFileItemReader.DEFAULT_CHARSET`
| Encoding to be used when reading the file.

| `spring.batch.job.flatfileitemreader.linesToSkip`
| `int`
| 0
| Indicates the number of lines to skip at the start of a file.

| `spring.batch.job.flatfileitemreader.delimited`
| `boolean`
| `false`
| Indicates whether the file is a delimited file (CSV and other formats). Only one of this property or `spring.batch.job.flatfileitemreader.fixedLength` can be `true` at the same time.

| `spring.batch.job.flatfileitemreader.delimiter`
| `String`
| `DelimitedLineTokenizer.DELIMITER_COMMA`
| If reading a delimited file, indicates the delimiter to parse on.

| `spring.batch.job.flatfileitemreader.quoteCharacter`
| `char`
| `DelimitedLineTokenizer.DEFAULT_QUOTE_CHARACTER`
| Used to determine the character used to quote values.

| `spring.batch.job.flatfileitemreader.includedFields`
| `List<Integer>`
| empty list
| A list of indices to determine which fields in a record to include in the item.

| `spring.batch.job.flatfileitemreader.fixedLength`
| `boolean`
| `false`
| Indicates if a file's records are parsed by column numbers. Only one of this property or `spring.batch.job.flatfileitemreader.delimited` can be `true` at the same time.

| `spring.batch.job.flatfileitemreader.ranges`
| `List<Range>`
| empty list
| List of column ranges by which to parse a fixed width record. See the https://docs.spring.io/spring-batch/docs/4.3.x/api/org/springframework/batch/item/file/transform/Range.html[Range documentation].

| `spring.batch.job.flatfileitemreader.names`
| `String []`
| `null`
| List of names for each field parsed from a record. These names are the keys in the `Map<String, Object>` in the items returned from this `ItemReader`.

| `spring.batch.job.flatfileitemreader.parsingStrict`
| `boolean`
| `true`
| If set to `true`, the mapping fails if the fields cannot be mapped.
|===

See the https://docs.spring.io/spring-batch/docs/4.3.x/api/org/springframework/batch/item/file/FlatFileItemReader.html[`FlatFileItemReader` documentation].

[[jdbcCursorItemReader]]
=== JdbcCursorItemReader

The `JdbcCursorItemReader` runs a query against a relational database and iterates over
the resulting cursor (`ResultSet`) to provide the resulting items. This autoconfiguration
lets you provide a `PreparedStatementSetter`, a `RowMapper`, or both. You
can also use the following properties to configure a `JdbcCursorItemReader`:

.`JdbcCursorItemReader` Properties
|===
| Property | Type | Default Value | Description

| `spring.batch.job.jdbccursoritemreader.saveState`
| `boolean`
| `true`
| Determines whether the state should be saved for restarts.

| `spring.batch.job.jdbccursoritemreader.name`
| `String`
| `null`
| Name used to provide unique keys in the `ExecutionContext`.

| `spring.batch.job.jdbccursoritemreader.maxItemcount`
| `int`
| `Integer.MAX_VALUE`
| Maximum number of items to be read from the file.

| `spring.batch.job.jdbccursoritemreader.currentItemCount`
| `int`
| 0
| Number of items that have already been read. Used on restarts.

| `spring.batch.job.jdbccursoritemreader.fetchSize`
| `int`
|
| A hint to the driver to indicate how many records to retrieve per call to the database system. For best performance, you usually want to set it to match the chunk size.

| `spring.batch.job.jdbccursoritemreader.maxRows`
| `int`
|
| Maximum number of items to read from the database.

| `spring.batch.job.jdbccursoritemreader.queryTimeout`
| `int`
|
| Number of milliseconds for the query to timeout.

| `spring.batch.job.jdbccursoritemreader.ignoreWarnings`
| `boolean`
| `true`
| Determines whether the reader should ignore SQL warnings when processing.

| `spring.batch.job.jdbccursoritemreader.verifyCursorPosition`
| `boolean`
| `true`
| Indicates whether the cursor's position should be verified after each read to verify that the `RowMapper` did not advance the cursor.

| `spring.batch.job.jdbccursoritemreader.driverSupportsAbsolute`
| `boolean`
| `false`
| Indicates whether the driver supports absolute positioning of a cursor.

| `spring.batch.job.jdbccursoritemreader.useSharedExtendedConnection`
| `boolean`
| `false`
| Indicates whether the connection is shared with other processing (and is therefore part of a transaction).

| `spring.batch.job.jdbccursoritemreader.sql`
| `String`
| `null`
| SQL query from which to read.
|===

You can also specify JDBC DataSource specifically for the reader by using the following properties:
.`JdbcCursorItemReader` Properties
|===
| Property | Type | Default Value | Description

| `spring.batch.job.jdbccursoritemreader.datasource.enable`
| `boolean`
| `false`
| Determines whether `JdbcCursorItemReader` `DataSource` should be enabled.

| `jdbccursoritemreader.datasource.url`
| `String`
| `null`
| JDBC URL of the database.

| `jdbccursoritemreader.datasource.username`
| `String`
| `null`
| Login username of the database.

| `jdbccursoritemreader.datasource.password`
| `String`
| `null`
| Login password of the database.

| `jdbccursoritemreader.datasource.driver-class-name`
| `String`
| `null`
| Fully qualified name of the JDBC driver.
|===

NOTE: The default `DataSource` will be used by the `JDBCCursorItemReader` if the `jdbccursoritemreader_datasource` is not specified.

See the https://docs.spring.io/spring-batch/docs/4.3.x/api/org/springframework/batch/item/database/JdbcCursorItemReader.html[`JdbcCursorItemReader` documentation].

[[kafkaItemReader]]
=== KafkaItemReader

Ingesting a partition of data from a Kafka topic is useful and exactly what the
`KafkaItemReader` can do. To configure a `KafkaItemReader`, two pieces
of configuration are required. First, configuring Kafka with Spring Boot's Kafka
autoconfiguration is required (see the
https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#messaging.kafka.additional-properties[Spring Boot Kafka documentation]).
Once you have configured the Kafka properties from Spring Boot, you can configure the `KafkaItemReader`
itself by setting the following properties:

.`KafkaItemReader` Properties
|===
| Property | Type | Default Value | Description

| `spring.batch.job.kafkaitemreader.name`
| `String`
| `null`
| Name used to provide unique keys in the `ExecutionContext`.

| `spring.batch.job.kafkaitemreader.topic`
| `String`
| `null`
| Name of the topic from which to read.

| `spring.batch.job.kafkaitemreader.partitions`
| `List<Integer>`
| empty list
| List of partition indices from which to read.

| `spring.batch.job.kafkaitemreader.pollTimeOutInSeconds`
| `long`
| 30
| Timeout for the `poll()` operations.

| `spring.batch.job.kafkaitemreader.saveState`
| `boolean`
| `true`
| Determines whether the state should be saved for restarts.
|===

See the https://docs.spring.io/spring-batch/docs/4.3.x/api/org/springframework/batch/item/kafka/KafkaItemReader.html[`KafkaItemReader` documentation].

[[nativeCompilation]]
=== Native Compilation
The advantage of Single Step Batch Processing is that it lets you dynamically select which reader and writer beans to use at runtime when you use the JVM.
However, when you use native compilation, you must determine the reader and writer at build time instead of runtime.
The following example does so:

[source,xml]
<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <executions>
        <execution>
            <id>process-aot</id>
            <goals>
                <goal>process-aot</goal>
            </goals>
            <configuration>
                <jvmArguments>
                    -Dspring.batch.job.flatfileitemreader.name=fooReader
                    -Dspring.batch.job.flatfileitemwriter.name=fooWriter
                </jvmArguments>
            </configuration>
        </execution>
    </executions>
</plugin>

[[item-processors]]
== ItemProcessor Configuration

The single-step batch job autoconfiguration accepts an `ItemProcessor` if one
is available within the `ApplicationContext`. If one is found of the correct type
(`ItemProcessor<Map<String, Object>, Map<String, Object>>`), it is autowired
into the step.

[[item-writers]]
== Autoconfiguration for ItemWriter implementations

This starter provides autoconfiguration for `ItemWriter` implementations that
match the supported `ItemReader` implementations: `AmqpItemWriter`,
`FlatFileItemWriter`, `JdbcItemWriter`, and `KafkaItemWriter`. This section
covers how to use autoconfiguration to configure a supported `ItemWriter`.

[[amqpitemwriter]]
=== AmqpItemWriter

To write to a RabbitMQ queue, you need two sets of configuration. First, you need an
`AmqpTemplate`. The easiest way to get this is by using Spring Boot's
RabbitMQ autoconfiguration. See the https://docs.spring.io/spring-boot/docs/3.0.x/reference/htmlsingle/#messaging.amqp.rabbitmq[Spring Boot AMQP documentation].

Once you have configured the `AmqpTemplate`, you can configure the `AmqpItemWriter` by setting the
following properties:

.`AmqpItemWriter` Properties
|===
| Property | Type | Default Value | Description

| `spring.batch.job.amqpitemwriter.enabled`
| `boolean`
| `false`
| If `true`, the autoconfiguration runs.

| `spring.batch.job.amqpitemwriter.jsonConverterEnabled`
| `boolean`
| `true`
| Indicates whether `Jackson2JsonMessageConverter` should be registered to convert messages.
|===

[[flatfileitemwriter]]
=== FlatFileItemWriter

To write a file as the output of the step, you can configure `FlatFileItemWriter`.
Autoconfiguration accepts components that have been explicitly configured (such as `LineAggregator`,
`FieldExtractor`, `FlatFileHeaderCallback`, or a `FlatFileFooterCallback`) and
components that have been configured by setting the following properties specified:

.`FlatFileItemWriter` Properties
|===
| Property | Type | Default Value | Description

| `spring.batch.job.flatfileitemwriter.resource`
| `Resource`
| `null`
| The resource to be read.

| `spring.batch.job.flatfileitemwriter.delimited`
| `boolean`
| `false`
| Indicates whether the output file is a delimited file. If `true`, `spring.batch.job.flatfileitemwriter.formatted` must be `false`.

| `spring.batch.job.flatfileitemwriter.formatted`
| `boolean`
| `false`
| Indicates whether the output file a formatted file. If `true`, `spring.batch.job.flatfileitemwriter.delimited` must be `false`.

| `spring.batch.job.flatfileitemwriter.format`
| `String`
| `null`
| The format used to generate the output for a formatted file. The formatting is performed by using `String.format`.

| `spring.batch.job.flatfileitemwriter.locale`
| `Locale`
| `Locale.getDefault()`
| The `Locale` to be used when generating the file.

| `spring.batch.job.flatfileitemwriter.maximumLength`
| `int`
| 0
| Max length of the record. If 0, the size is unbounded.

| `spring.batch.job.flatfileitemwriter.minimumLength`
| `int`
| 0
| The minimum record length.

| `spring.batch.job.flatfileitemwriter.delimiter`
| `String`
| `,`
| The `String` used to delimit fields in a delimited file.

| `spring.batch.job.flatfileitemwriter.encoding`
| `String`
| `FlatFileItemReader.DEFAULT_CHARSET`
| Encoding to use when writing the file.

| `spring.batch.job.flatfileitemwriter.forceSync`
| `boolean`
| `false`
| Indicates whether a file should be force-synced to the disk on flush.

| `spring.batch.job.flatfileitemwriter.names`
| `String []`
| `null`
| List of names for each field parsed from a record. These names are the keys in the `Map<String, Object>` for the items received by this `ItemWriter`.

| `spring.batch.job.flatfileitemwriter.append`
| `boolean`
| `false`
| Indicates whether a file should be appended to if the output file is found.

| `spring.batch.job.flatfileitemwriter.lineSeparator`
| `String`
| `FlatFileItemWriter.DEFAULT_LINE_SEPARATOR`
| What `String` to use to separate lines in the output file.

| `spring.batch.job.flatfileitemwriter.name`
| `String`
| `null`
| Name used to provide unique keys in the `ExecutionContext`.

| `spring.batch.job.flatfileitemwriter.saveState`
| `boolean`
| `true`
| Determines whether the state should be saved for restarts.

| `spring.batch.job.flatfileitemwriter.shouldDeleteIfEmpty`
| `boolean`
| `false`
| If set to `true`, an empty file (there is no output) is deleted when the job completes.

| `spring.batch.job.flatfileitemwriter.shouldDeleteIfExists`
| `boolean`
| `true`
| If set to `true` and a file is found where the output file should be, it is deleted before the step begins.

| `spring.batch.job.flatfileitemwriter.transactional`
| `boolean`
| `FlatFileItemWriter.DEFAULT_TRANSACTIONAL`
| Indicates whether the reader is a transactional queue (indicating that the items read are returned to the queue upon a failure).
|===

See the https://docs.spring.io/spring-batch/docs/4.3.x/api/org/springframework/batch/item/file/FlatFileItemWriter.html[`FlatFileItemWriter` documentation].

[[jdbcitemwriter]]
=== JdbcBatchItemWriter

To write the output of a step to a relational database, this starter provides the ability
to autoconfigure a `JdbcBatchItemWriter`. The autoconfiguration lets you provide your
own `ItemPreparedStatementSetter` or `ItemSqlParameterSourceProvider` and
configuration options by setting the following properties:

.`JdbcBatchItemWriter` Properties
|===
| Property | Type | Default Value | Description

| `spring.batch.job.jdbcbatchitemwriter.name`
| `String`
| `null`
| Name used to provide unique keys in the `ExecutionContext`.

| `spring.batch.job.jdbcbatchitemwriter.sql`
| `String`
| `null`
| The SQL used to insert each item.

| `spring.batch.job.jdbcbatchitemwriter.assertUpdates`
| `boolean`
| `true`
| Whether to verify that every insert results in the update of at least one record.
|===

You can also specify JDBC DataSource specifically for the writer by using the following properties:
.`JdbcBatchItemWriter` Properties
|===
| Property | Type | Default Value | Description

| `spring.batch.job.jdbcbatchitemwriter.datasource.enable`
| `boolean`
| `false`
| Determines whether `JdbcCursorItemReader` `DataSource` should be enabled.

| `jdbcbatchitemwriter.datasource.url`
| `String`
| `null`
| JDBC URL of the database.

| `jdbcbatchitemwriter.datasource.username`
| `String`
| `null`
| Login username of the database.

| `jdbcbatchitemwriter.datasource.password`
| `String`
| `null`
| Login password of the database.

| `jdbcbatchitemreader.datasource.driver-class-name`
| `String`
| `null`
| Fully qualified name of the JDBC driver.
|===

NOTE: The default `DataSource` will be used by the `JdbcBatchItemWriter` if the `jdbcbatchitemwriter_datasource` is not specified.

See the https://docs.spring.io/spring-batch/docs/4.3.x/api/org/springframework/batch/item/database/JdbcBatchItemWriter.html[`JdbcBatchItemWriter` documentation].

[[kafkaitemwriter]]
=== KafkaItemWriter

To write step output to a Kafka topic, you need `KafkaItemWriter`. This starter
provides autoconfiguration for a `KafkaItemWriter` by using facilities from two places.
The first is Spring Boot's Kafka autoconfiguration. (See the https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#messaging.kafka.additional-properties[Spring Boot Kafka documentation].)
Second, this starter lets you configure two properties on the writer.

.`KafkaItemWriter` Properties
|===
| Property | Type | Default Value | Description

| `spring.batch.job.kafkaitemwriter.topic`
| `String`
| `null`
| The Kafka topic to which to write.

| `spring.batch.job.kafkaitemwriter.delete`
| `boolean`
| `false`
| Whether the items being passed to the writer are all to be sent as delete events to the topic.
|===

For more about the configuration options for the `KafkaItemWriter`, see the  https://docs.spring.io/spring-batch/docs/4.3.x/api/org/springframework/batch/item/kafka/KafkaItemWriter.html[`KafkaItemWiter` documentation].

[[spring-aot]]
=== Spring AOT
When using Spring AOT with Single Step Batch Starter you must set the reader and
writer name properties at compile time (unless you create a bean(s) for the reader and or writer).
To do this you must include the name of the reader and writer that you wish to use as
and argument or environment variable in the boot maven plugin or gradle plugin.   For example if
you wish to enable the `FlatFileItemReader` and `FlatFileItemWriter` in Maven it would look like:

```
    <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        <executions>
            <execution>
            <id>process-aot</id>
            <goals>
                <goal>process-aot</goal>
            </goals>
            </execution>
        </executions>
        <configuration>
            <arguments>
                <argument>--spring.batch.job.flatfileitemreader.name=foobar</argument>
                <argument>--spring.batch.job.flatfileitemwriter.name=fooWriter</argument>
            </arguments>
        </configuration>
    </plugin>
```


================================================
FILE: docs/modules/ROOT/pages/batch.adoc
================================================

[[batch]]
= Batch

[[partintro]]
--
This section goes into more detail about Spring Cloud Task's integration with Spring
Batch. Tracking the association between a job execution and the task in which it was
executed.

--

[[batch-association]]
== Associating a Job Execution to the Task in which It Was Executed

Spring Boot provides facilities for the execution of batch jobs within a Spring Boot Uber-jar.
Spring Boot's support of this functionality lets a developer execute multiple batch jobs
within that execution. Spring Cloud Task provides the ability to associate the execution
of a job (a job execution) with a task's execution so that one can be traced back to the
other.

Spring Cloud Task achieves this functionality by using the `TaskBatchExecutionListener`.
By default,
this listener is auto configured in any context that has both a Spring Batch Job
configured (by having a bean of type `Job` defined in the context) and the
`spring-cloud-task-batch` jar on the classpath. The listener is injected into all jobs
that meet those conditions.

[[batch-association-override]]
=== Overriding the TaskBatchExecutionListener

To prevent the listener from being injected into any batch jobs within the current
context, you can disable the autoconfiguration by using standard Spring Boot mechanisms.

To only have the listener injected into particular jobs within the context, override the
`batchTaskExecutionListenerBeanPostProcessor` and provide a list of job bean IDs, as shown
in the following example:

[source,java]
----
public static TaskBatchExecutionListenerBeanPostProcessor batchTaskExecutionListenerBeanPostProcessor() {
	TaskBatchExecutionListenerBeanPostProcessor postProcessor =
		new TaskBatchExecutionListenerBeanPostProcessor();

	postProcessor.setJobNames(Arrays.asList(new String[] {"job1", "job2"}));

	return postProcessor;
}
----

NOTE: You can find a sample batch application in the samples module of the Spring Cloud
Task Project,
https://github.com/spring-cloud/spring-cloud-task/tree/master/spring-cloud-task-samples/batch-job[here].

[[batch-informational-messages]]
== Batch Informational Messages

Spring Cloud Task provides the ability for batch jobs to emit informational messages. The
"`xref:stream.adoc#stream-integration-batch-events[Spring Batch Events]`" section covers this feature in detail.

[[batch-failures-and-tasks]]
== Batch Job Exit Codes

As discussed xref:features.adoc#features-lifecycle-exit-codes[earlier], Spring Cloud Task
applications support the ability to record the exit code of a task execution. However, in
cases where you run a Spring Batch Job within a task, regardless of how the Batch Job
Execution completes, the result of the task is always zero when using the default
Batch/Boot behavior. Keep in mind that a task is a boot application and that the exit code
returned from the task is the same as a boot application.
To override this behavior and allow the task to return an exit code other than zero when a
batch job returns an
https://docs.spring.io/spring-batch/current/reference/html/step.html#batchStatusVsExitStatus[BatchStatus]
of `FAILED`, set `spring.cloud.task.batch.fail-on-job-failure` to `true`. Then the exit code
can be 1 (the default) or be based on the
https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-spring-application.html#boot-features-application-exit[specified
`ExitCodeGenerator`])

This functionality uses a new `ApplicationRunner` that replaces the one provided by Spring
Boot. By default, it is configured with the same order. However, if you want to customize
the order in which the `ApplicationRunner` is run, you can set its order by setting the
`spring.cloud.task.batch.applicationRunnerOrder` property. To have your task return the
exit code based on the result of the batch job execution, you need to write your own
`CommandLineRunner`.
//TODO Great place for a example showing how a custom CommandLineRunner


================================================
FILE: docs/modules/ROOT/pages/configprops.adoc
================================================
[[configuration-properties]]
= Configuration Properties

Below you can find a list of configuration properties.

include::partial$_configprops.adoc[]


================================================
FILE: docs/modules/ROOT/pages/features.adoc
================================================

[[features]]
= Features

[[partintro]]
--
This section goes into more detail about Spring Cloud Task, including how to use it, how
to configure it, and the appropriate extension points.
--

[[features-lifecycle]]
== The lifecycle of a Spring Cloud Task

In most cases, the modern cloud environment is designed around the execution of processes
that are not expected to end. If they do end, they are typically restarted. While most
platforms do have some way to run a process that is not restarted when it ends, the
results of that run are typically not maintained in a consumable way. Spring Cloud
Task offers the ability to execute short-lived processes in an environment and record the
results. Doing so allows for a microservices architecture around short-lived processes as
well as longer running services through the integration of tasks by messages.

While this functionality is useful in a cloud environment, the same issues can arise in a
traditional deployment model as well. When running Spring Boot applications with a
scheduler such as cron, it can be useful to be able to monitor the results of the
application after its completion.

Spring Cloud Task takes the approach that a Spring Boot application can have a start and
an end and still be successful. Batch applications are one example of how processes that
are expected to end (and that are often short-lived) can be helpful.

Spring Cloud Task records the lifecycle events of a given task. Most long-running
processes, typified by most web applications, do not save their lifecycle events. The
tasks at the heart of Spring Cloud Task do.

The lifecycle consists of a single task execution. This is a physical execution of a
Spring Boot application configured to be a task (that is, it has the Sprint Cloud Task dependencies).

At the beginning of a task, before any `CommandLineRunner` or `ApplicationRunner`
implementations have been run, an entry in the `TaskRepository` that records the start
event is created. This event is triggered through `SmartLifecycle#start` being triggered
by the Spring Framework. This indicates to the system that all beans are ready for use and
comes before running any of the `CommandLineRunner` or `ApplicationRunner` implementations
provided by Spring Boot.

NOTE: The recording of a task only occurs upon the successful bootstrapping of an
`ApplicationContext`. If the context fails to bootstrap at all, the task's run is not
recorded.

Upon completion of all of the `*Runner#run` calls from Spring Boot or the failure of an
`ApplicationContext` (indicated by an `ApplicationFailedEvent`), the task execution is
updated in the repository with the results.

NOTE: If the application requires the `ApplicationContext` to be closed at the
completion of a task (all `*Runner#run` methods have been called and the task
repository has been updated), set the property `spring.cloud.task.closecontextEnabled`
to true.

[[features-task-execution-details]]
=== The TaskExecution

The information stored in the `TaskRepository` is modeled in the `TaskExecution` class and
consists of the following information:

|===
|Field |Description

|`executionid`
|The unique ID for the task's run.

|`exitCode`
|The exit code generated from an `ExitCodeExceptionMapper` implementation. If there is no
exit code generated but an `ApplicationFailedEvent` is thrown, 1 is set.  Otherwise, it is
assumed to be 0.

|`taskName`
|The name for the task, as determined by the configured `TaskNameResolver`.

|`startTime`
|The time the task was started, as indicated by the `SmartLifecycle#start` call.

|`endTime`
|The time the task was completed, as indicated by the `ApplicationReadyEvent`.

|`exitMessage`
|Any information available at the time of exit. This can programmatically be set by a
`TaskExecutionListener`.

|`errorMessage`
|If an exception is the cause of the end of the task (as indicated by an
`ApplicationFailedEvent`), the stack trace for that exception is stored here.

|`arguments`
|A `List` of the string command line arguments as they were passed into the executable
boot application.
|===

[[features-lifecycle-exit-codes]]
=== Mapping Exit Codes

When a task completes, it tries to return an exit code to the OS. If we take a look
at our xref:getting-started.adoc#getting-started-developing-first-task[original example], we can see that we are
not controlling that aspect of our application. So, if an exception is thrown, the JVM
returns a code that may or may not be of any use to you in debugging.

Consequently, Spring Boot provides an interface, `ExitCodeExceptionMapper`, that lets you
map uncaught exceptions to exit codes. Doing so lets you indicate, at the level of exit
codes, what went wrong. Also, by mapping exit codes in this manner, Spring Cloud Task
records the returned exit code.

If the task terminates with a SIG-INT or a SIG-TERM, the exit code is zero unless
otherwise specified within the code.

NOTE: While the task is running, the exit code is stored as a null in the repository.
Once the task completes, the appropriate exit code is stored based on the guidelines described
earlier in this section.

[[features-configuration]]
== Configuration

Spring Cloud Task provides a ready-to-use configuration, as defined in the
`DefaultTaskConfigurer` and `SimpleTaskConfiguration` classes. This section walks through
the defaults and how to customize Spring Cloud Task for your needs.

[[features-data-source]]
=== DataSource

Spring Cloud Task uses a datasource for storing the results of task executions. By
default, we provide an in-memory instance of H2 to provide a simple method of
bootstrapping development. However, in a production environment, you probably want to
configure your own `DataSource`.

If your application uses only a single `DataSource` and that serves as both your business
schema and the task repository, all you need to do is provide any `DataSource` (the
easiest way to do so is through Spring Boot's configuration conventions).  This
`DataSource` is automatically used by Spring Cloud Task for the repository.

If your application uses more than one `DataSource`, you need to configure the task
repository with the appropriate `DataSource`. This customization can be done through an
implementation of  `TaskConfigurer`.

[[features-table-prefix]]
=== Table Prefix
One modifiable property of `TaskRepository` is the table prefix for the task tables. By
default, they are all prefaced with `TASK_`. `TASK_EXECUTION` and `TASK_EXECUTION_PARAMS`
are two examples. However, there are potential reasons to modify this prefix. If the
schema name needs to be prepended to the table names or if more than one set of task
tables is needed within the same schema, you must change the table prefix. You can do so
by setting the `spring.cloud.task.tablePrefix` to the prefix you need, as follows:

`spring.cloud.task.tablePrefix=yourPrefix`

By using the `spring.cloud.task.tablePrefix`, a user assumes the responsibility to
create the task tables that meet both the criteria for the task table schema but
with modifications that are required for a user's business needs.
You can utilize the Spring Cloud Task Schema DDL as a guide when creating your own Task DDL as seen
https://github.com/spring-cloud/spring-cloud-task/tree/master/spring-cloud-task-core/src/main/resources/org/springframework/cloud/task[here].


[[features-table-initialization]]
=== Enable/Disable table initialization
In cases where you are creating the task tables and do not wish for Spring Cloud Task to
create them at task startup, set the `spring.cloud.task.initialize-enabled` property to
`false`, as follows:

`spring.cloud.task.initialize-enabled=false`

It defaults to `true`.

NOTE: The property `spring.cloud.task.initialize.enable` has been deprecated.

[[features-generated_task_id]]
=== Externally Generated Task ID

In some cases, you may want to allow for the time difference between when a task is
requested and when the infrastructure actually launches it. Spring Cloud Task lets you
create a `TaskExecution` when the task is requested. Then pass the execution ID of the
generated `TaskExecution` to the task so that it can update the `TaskExecution` through
the task's lifecycle.

A `TaskExecution` can be created by calling the `createTaskExecution` method on an
implementation of the `TaskRepository` that references the datastore that holds
the `TaskExecution` objects.

In order to configure your Task to use a generated `TaskExecutionId`, add the
following property:

`spring.cloud.task.executionid=yourtaskId`

[[features-external_task_id]]
=== External Task Id

Spring Cloud Task lets you store an external task ID for each
`TaskExecution`.  In order to configure your Task to use a generated `TaskExecutionId`, add the
following property:

`spring.cloud.task.external-execution-id=<externalTaskId>`

[[features-parent_task_id]]
=== Parent Task Id

Spring Cloud Task lets you store a parent task ID for each `TaskExecution`. An example of
this would be a task that executes another task or tasks and you want to record which task
launched each of the child tasks. In order to configure your Task to set a parent
`TaskExecutionId` add the following property on the child task:

`spring.cloud.task.parent-execution-id=<parentExecutionTaskId>`

[[features-task-configurer]]
=== TaskConfigurer

The `TaskConfigurer` is a strategy interface that lets you customize the way components of
Spring Cloud Task are configured. By default, we provide the `DefaultTaskConfigurer` that
provides logical defaults: `Map`-based in-memory components (useful for development if no
`DataSource` is provided) and JDBC based components (useful if there is a `DataSource`
available).

The `TaskConfigurer` lets you configure three main components:

|===
|Component |Description |Default (provided by `DefaultTaskConfigurer`)

|`TaskRepository`
|The implementation of the `TaskRepository` to be used.
|`SimpleTaskRepository`

|`TaskExplorer`
|The implementation of the `TaskExplorer` (a component for read-only access to the task
repository) to be used.
|`SimpleTaskExplorer`

|`PlatformTransactionManager`
|A transaction manager to be used when running updates for tasks.
|`JdbcTransactionManager` if a `DataSource` is used.
`ResourcelessTransactionManager` if it is not.
|===

You can customize any of the components described in the preceding table by creating a
custom implementation of the `TaskConfigurer` interface. Typically, extending the
`DefaultTaskConfigurer` (which is provided if a `TaskConfigurer` is not found) and
overriding the required getter is sufficient. However, implementing your own from scratch
may be required.

NOTE: Users should not directly use getter methods from a `TaskConfigurer` directly
unless they are using it to supply implementations to be exposed as Spring Beans.

[[features-task-execution-listener]]
=== Task Execution Listener

`TaskExecutionListener` lets you register listeners for specific events that occur during
the task lifecycle. To do so, create a class that implements the
`TaskExecutionListener` interface. The class that implements the `TaskExecutionListener`
interface is notified of the following events:

* `onTaskStartup`: Prior to storing the `TaskExecution` into the `TaskRepository`.
* `onTaskEnd`: Prior to updating the `TaskExecution` entry in the `TaskRepository` and
marking the final state of the task.
* `onTaskFailed`: Prior to the `onTaskEnd` method being invoked when an unhandled
exception is thrown by the task.

Spring Cloud Task also lets you add `TaskExecution` Listeners to methods within a bean
by using the following method annotations:

* `@BeforeTask`: Prior to the storing the `TaskExecution` into the `TaskRepository`
* `@AfterTask`: Prior to the updating of the `TaskExecution` entry in the `TaskRepository`
marking the final state of the task.
* `@FailedTask`: Prior to the `@AfterTask` method being invoked when an unhandled
exception is thrown by the task.

The following example shows the three annotations in use:

[source,java]
----
 public class MyBean {

	@BeforeTask
	public void methodA(TaskExecution taskExecution) {
	}

	@AfterTask
	public void methodB(TaskExecution taskExecution) {
	}

	@FailedTask
	public void methodC(TaskExecution taskExecution, Throwable throwable) {
	}
}
----

NOTE: Inserting an `ApplicationListener` earlier in the chain than `TaskLifecycleListener` exists may cause unexpected effects.

[[features-task-execution-listener-Exceptions]]
==== Exceptions Thrown by Task Execution Listener
If an exception is thrown by a `TaskExecutionListener` event handler, all listener
processing for that event handler stops.  For example, if three `onTaskStartup` listeners
have started and the first `onTaskStartup` event handler throws an exception, the other
two `onTaskStartup` methods are not called. However, the other event handlers (`onTaskEnd`
and `onTaskFailed`) for the `TaskExecutionListeners` are called.

The exit code returned when a exception is thrown by a `TaskExecutionListener`
event handler is the exit code that was reported by the
https://docs.spring.io/spring-boot/docs/current/api/org/springframework/boot/ExitCodeEvent.html[ExitCodeEvent].
If no `ExitCodeEvent` is emitted, the Exception thrown is evaluated to see
if it is of type
https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-application-exit[ExitCodeGenerator].
If so, it returns the exit code from  the `ExitCodeGenerator`. Otherwise, `1`
is returned.

In the case that an exception is thrown in an `onTaskStartup` method, the exit code for the application will be `1`.
If an exception is thrown in either a `onTaskEnd` or `onTaskFailed`
method, the exit code for the application will be the one established using the rules enumerated above.

NOTE: In the case of an exception being thrown in a `onTaskStartup`, `onTaskEnd`, or `onTaskFailed`
you can not override the exit code for the application using `ExitCodeExceptionMapper`.



[[features-task-execution-listener-exit-messages]]
==== Exit Messages

You can set the exit message for a task programmatically by using a
`TaskExecutionListener`. This is done by setting the `TaskExecution's` `exitMessage`,
which then gets passed into the `TaskExecutionListener`. The following example shows
a method that is annotated with the `@AfterTask` `ExecutionListener` :

[source,java]
@AfterTask
public void afterMe(TaskExecution taskExecution) {
    taskExecution.setExitMessage("AFTER EXIT MESSAGE");
}

An `ExitMessage` can be set at any of the listener events (`onTaskStartup`,
`onTaskFailed`, and `onTaskEnd`). The order of precedence for the three listeners follows:

. `onTaskEnd`
. `onTaskFailed`
. `onTaskStartup`

For example, if you set an `exitMessage` for the `onTaskStartup` and `onTaskFailed`
listeners and the task ends without failing, the `exitMessage` from the `onTaskStartup`
is stored in the repository. Otherwise, if a failure occurs, the `exitMessage` from
the `onTaskFailed` is stored. Also if you set the `exitMessage` with an
`onTaskEnd` listener, the `exitMessage` from the `onTaskEnd` supersedes
the exit messages from both the `onTaskStartup` and `onTaskFailed`.

[[features-single-instance-enabled]]
=== Restricting Spring Cloud Task Instances

Spring Cloud Task lets you establish that only one task with a given task name can be run
at a time. To do so, you need to establish the <<features-task-name, task name>> and set
`spring.cloud.task.single-instance-enabled=true` for each task execution. While the first
task execution is running, any other time you try to run a task with the same
<<features-task-name, task name>> and `spring.cloud.task.single-instance-enabled=true`, the
task fails with the following error message: `Task with name "application" is already
running.` The default value for `spring.cloud.task.single-instance-enabled` is `false`. The
following example shows how to set `spring.cloud.task.single-instance-enabled` to `true`:

`spring.cloud.task.single-instance-enabled=true or false`

To use this feature, you must add the following Spring Integration dependencies to your
application:

[source,xml]
<dependency>
    <groupId>org.springframework.integration</groupId>
    <artifactId>spring-integration-core</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.integration</groupId>
    <artifactId>spring-integration-jdbc</artifactId>
</dependency>

NOTE: The exit code for the application will be 1 if the task fails because this feature
is enabled and another task is running with the same task name.

[[single-instance-usage-for-spring-aot-and-native-compilation]]
==== Single Instance Usage for Spring AOT And Native Compilation
To use Spring Cloud Task's single-instance feature when creating a natively compiled app, you need to enable the feature at build time.
To do so, add the process-aot execution and set `spring.cloud.task.single-step-instance-enabled=true` as a JVM argument, as follows:
[source,xml]
<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <executions>
        <execution>
            <id>process-aot</id>
            <goals>
                <goal>process-aot</goal>
            </goals>
            <configuration>
                <jvmArguments>
                    -Dspring.cloud.task.single-instance-enabled=true
                </jvmArguments>
            </configuration>
        </execution>
    </executions>
</plugin>

[[enabling-observations-for-applicationrunner-and-commandlinerunner]]
=== Enabling  Observations for ApplicationRunner and CommandLineRunner


To Enable Task Observations for `ApplicationRunner` or `CommandLineRunner` set `spring.cloud.task.observation.enabled` to true.

An example task application with observations enables using the `SimpleMeterRegistry` can be found https://github.com/spring-cloud/spring-cloud-task/tree/main/spring-cloud-task-samples/task-observations[here].

[[disabling-spring-cloud-task-auto-configuration]]
=== Disabling Spring Cloud Task Auto Configuration

In cases where Spring Cloud Task should not be autoconfigured for an implementation, you can disable Task's auto configuration.
This can be done either by adding the following annotation to your Task application:
```
@EnableAutoConfiguration(exclude={SimpleTaskAutoConfiguration.class})
```
You may also disable Task auto configuration by setting the `spring.cloud.task.autoconfiguration.enabled` property to `false`.

[[closing-the-context]]
=== Closing the Context
If the application requires the `ApplicationContext` to be closed at the
completion of a task (all `*Runner#run` methods have been called and the task
repository has been updated), set the property `spring.cloud.task.closecontextEnabled`
to `true`.

Another case to close the context is when the Task Execution completes however the application does not terminate.
In these cases the context is held open because a thread has been allocated
(for example: if you are using a TaskExecutor). In these cases
set the `spring.cloud.task.closecontextEnabled` property to `true` when launching your task.
This will close the application's context once the task is complete.
Thus allowing the application to terminate.

[[enable-task-metrics]]
=== Enable Task Metrics
Spring Cloud Task integrates with Micrometer and creates observations for the Tasks it executes.
To enable Task Observability integration, you must add `spring-boot-starter-actuator`, your preferred registry implementation (if you want to publish metrics), and micrometer-tracing (if you want to publish tracing data) to your task application.
An example maven set of dependencies to enable task observability and metrics using Influx would be:

[source,xml]
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
    <groupId>io.micrometer</groupId>
    <artifactId>micrometer-registry-influx</artifactId>
    <scope>runtime</scope>
</dependency>

[[spring-task-and-spring-cloud-task]]
=== Spring Task and Spring Cloud Task Properties

The term `task` is frequently used word in the industry. In one such example Spring Boot offers the `spring.task` while Spring Cloud Task offers the `spring.cloud.task` properties.
This has caused some confusion in the past that these two groups of properties are directly related.   However, they represent 2 different set of features offered in the Spring ecosystem.

* `spring.task` refers to the properties that configure the `ThreadPoolTaskScheduler`.
* `spring.cloud.task` refers to the properties that configure features of Spring Cloud Task.


================================================
FILE: docs/modules/ROOT/pages/getting-started.adoc
================================================

[[getting-started]]
= Getting started

[[partintro]]
--
If you are just getting started with Spring Cloud Task, you should read this section.
Here, we answer the basic "`what?`", "`how?`", and "`why?`" questions. We start with a
gentle introduction to Spring Cloud Task. We then build a Spring Cloud Task application,
discussing some core principles as we go.
--

[[getting-started-introducing-spring-cloud-task]]
== Introducing Spring Cloud Task

Spring Cloud Task makes it easy to create short-lived microservices. It provides
capabilities that let short-lived JVM processes be executed on demand in a production
environment.

[[getting-started-system-requirements]]
== System Requirements

You need to have Java installed (Java 17 or better).

[[database-requirements]]
=== Database Requirements

Spring Cloud Task uses a relational database to store the results of an executed task.
While you can begin developing a task without a database (the status of the task is logged
as part of the task repository's updates), for production environments, you want to
use a supported database. Spring Cloud Task currently supports the following databases:

* DB2
* H2
* HSQLDB
* MySql
* Oracle
* Postgres
* SqlServer

[[getting-started-developing-first-task]]
== Developing Your First Spring Cloud Task Application

A good place to start is with a simple "`Hello, World!`" application, so we create the
Spring Cloud Task equivalent to highlight the features of the framework. Most IDEs have
good support for Apache Maven, so we use it as the build tool for this project.

NOTE: The spring.io web site contains many https://spring.io/guides[“`Getting Started`”
guides] that use Spring Boot. If you need to solve a specific problem, check there first.
You can shortcut the following steps by going to the
https://start.spring.io/[Spring Initializr] and creating a new project. Doing so
automatically generates a new project structure so that you can start coding right away.
We recommend experimenting with the Spring Initializr to become familiar with it.

[[getting-started-creating-project]]
=== Creating the Spring Task Project using Spring Initializr
Now we can create and test an application that prints `Hello, World!` to the console.

To do so:

. Visit the link:https://start.spring.io/[Spring Initialzr] site.
.. Create a new Maven project with a *Group* name of `io.spring.demo` and an *Artifact* name of `helloworld`.
.. In the Dependencies text box, type `task` and then select the `Task` dependency with the `Spring Cloud` label.
.. In the Dependencies text box, type `h2` and then select the `H2` dependency with the `SQL` label.
.. Click the *Generate Project* button
. Unzip the helloworld.zip file and import the project into your favorite IDE.

[[getting-started-writing-the-code]]
=== Writing the Code

To finish our application, we need to update the generated `HelloworldApplication` with the following contents so that it launches a Task.
[source,java]
----
package io.spring.demo.helloworld;

import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.task.configuration.EnableTask;
import org.springframework.context.annotation.Bean;

@SpringBootApplication
@EnableTask
public class HelloworldApplication {

	@Bean
	public ApplicationRunner applicationRunner() {
		return new HelloWorldApplicationRunner();
	}

	public static void main(String[] args) {
		SpringApplication.run(HelloworldApplication.class, args);
	}

	public static class HelloWorldApplicationRunner implements ApplicationRunner {

		@Override
		public void run(ApplicationArguments args) throws Exception {
			System.out.println("Hello, World!");

		}
	}
}
----

While it may seem small, quite a bit is going on. For more about Spring
Boot specifics, see the
https://docs.spring.io/spring-boot/docs/current/reference/html/[Spring Boot reference documentation].

Now we can open the `application.properties` file in `src/main/resources`.
We need to configure two properties in `application.properties`:

* `application.name`: To set the application name (which is translated to the task name)
* `logging.level`: To set the logging for Spring Cloud Task to `DEBUG` in order to
get a view of what is going on.

The following example shows how to do both:


[source]
----
logging.level.org.springframework.cloud.task=DEBUG
spring.application.name=helloWorld
----

[[getting-started-at-task]]
==== Task Auto Configuration

When including Spring Cloud Task Starter dependency, Task auto configures all beans to bootstrap it's functionality.
Part of this configuration registers the `TaskRepository` and the infrastructure for its use.

In our demo, the `TaskRepository` uses an embedded H2 database to record the results
of a task. This H2 embedded database is not a practical solution for a production environment, since
the H2 DB goes away once the task ends. However, for a quick getting-started
experience, we can use this in our example as well as echoing to the logs what is being updated
in that repository. In the xref:features.adoc#features-configuration[Configuration] section (later in this
documentation), we cover how to customize the configuration of the pieces provided by
Spring Cloud Task.

When our sample application runs, Spring Boot launches our `HelloWorldApplicationRunner`
and outputs our "`Hello, World!`" message to standard out. The `TaskLifecycleListener`
records the start of the task and the end of the task in the repository.

[[getting-started-main-method]]
==== The main method

The main method serves as the entry point to any java application.  Our main method
delegates to Spring Boot's https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-spring-application.html[SpringApplication] class.

[[getting-started-clr]]
==== The ApplicationRunner

Spring includes many ways to bootstrap an application's logic. Spring Boot provides
a convenient method of doing so in an organized manner through its `*Runner` interfaces
(`CommandLineRunner` or `ApplicationRunner`). A well behaved task can bootstrap any
logic by using one of these two runners.

The lifecycle of a task is considered from before the `*Runner#run` methods are executed
to once they are all complete. Spring Boot lets an application use multiple
`*Runner` implementations, as does Spring Cloud Task.

NOTE: Any processing bootstrapped from mechanisms other than a `CommandLineRunner` or
`ApplicationRunner` (by using `InitializingBean#afterPropertiesSet` for example) is not
 recorded by Spring Cloud Task.

[[getting-started-running-the-example]]
=== Running the Example

At this point, our application should work.  Since this application is Spring Boot-based,
we can run it from the command line by using `$ ./mvnw spring-boot:run` from the root
of our application, as shown (with its output) in the following example:

[source]
----
$ mvn clean spring-boot:run
....... . . .
....... . . . (Maven log output here)
....... . . .

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::                (v3.3.0)

2024-01-04T10:07:01.102-06:00  INFO 18248 --- [helloWorld] [           main] i.s.d.helloworld.HelloworldApplication   : Starting HelloworldApplication using Java 21.0.1 with PID 18248 (/Users/dashaun/fun/dashaun/spring-cloud-task/helloworld/target/classes started by dashaun in /Users/dashaun/fun/dashaun/spring-cloud-task/helloworld)
2024-01-04T10:07:01.103-06:00  INFO 18248 --- [helloWorld] [           main] i.s.d.helloworld.HelloworldApplication   : No active profile set, falling back to 1 default profile: "default"
2024-01-04T10:07:01.526-06:00  INFO 18248 --- [helloWorld] [           main] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Starting...
2024-01-04T10:07:01.626-06:00  INFO 18248 --- [helloWorld] [           main] com.zaxxer.hikari.pool.HikariPool        : HikariPool-1 - Added connection conn0: url=jdbc:h2:mem:3ad913f8-59ce-4785-bf8e-d6335dff6856 user=SA
2024-01-04T10:07:01.627-06:00  INFO 18248 --- [helloWorld] [           main] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Start completed.
2024-01-04T10:07:01.633-06:00 DEBUG 18248 --- [helloWorld] [           main] o.s.c.t.c.SimpleTaskAutoConfiguration    : Using org.springframework.cloud.task.configuration.DefaultTaskConfigurer TaskConfigurer
2024-01-04T10:07:01.633-06:00 DEBUG 18248 --- [helloWorld] [           main] o.s.c.t.c.DefaultTaskConfigurer          : No EntityManager was found, using DataSourceTransactionManager
2024-01-04T10:07:01.639-06:00 DEBUG 18248 --- [helloWorld] [           main] o.s.c.t.r.s.TaskRepositoryInitializer    : Initializing task schema for h2 database
2024-01-04T10:07:01.772-06:00 DEBUG 18248 --- [helloWorld] [           main] o.s.c.t.r.support.SimpleTaskRepository   : Creating: TaskExecution{executionId=0, parentExecutionId=null, exitCode=null, taskName='helloWorld', startTime=2024-01-04T10:07:01.757268, endTime=null, exitMessage='null', externalExecutionId='null', errorMessage='null', arguments=[]}
2024-01-04T10:07:01.785-06:00  INFO 18248 --- [helloWorld] [           main] i.s.d.helloworld.HelloworldApplication   : Started HelloworldApplication in 0.853 seconds (process running for 1.029)
Hello, World!
2024-01-04T10:07:01.794-06:00 DEBUG 18248 --- [helloWorld] [           main] o.s.c.t.r.support.SimpleTaskRepository   : Updating: TaskExecution with executionId=1 with the following {exitCode=0, endTime=2024-01-04T10:07:01.787112, exitMessage='null', errorMessage='null'}
2024-01-04T10:07:01.799-06:00  INFO 18248 --- [helloWorld] [ionShutdownHook] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Shutdown initiated...
2024-01-04T10:07:01.806-06:00  INFO 18248 --- [helloWorld] [ionShutdownHook] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Shutdown completed.

....... . . .
....... . . . (Maven log output here)
....... . . .
----

The preceding output has three lines that are of interest to us here:

* `SimpleTaskRepository` logged the creation of the entry in the `TaskRepository`.
* The execution of our `ApplicationRunner`, demonstrated by the "`Hello, World!`" output.
* `SimpleTaskRepository` logs the completion of the task in the `TaskRepository`.

NOTE: A simple task application can be found in the samples module of the Spring Cloud
Task Project
https://github.com/spring-cloud/spring-cloud-task/tree/master/spring-cloud-task-samples/timestamp[here].


================================================
FILE: docs/modules/ROOT/pages/index.adoc
================================================
[[spring-cloud-task-reference-guide]]
= Spring Cloud Task Reference Guide

Michael Minella, Glenn Renfro, Jay Bryant

:page-section-summary-toc: 1

include::preface.adoc[leveloffset=1]

// ======================================================================================

Version {project-version}

(C) 2009-2022 VMware, Inc. All rights reserved.

Copies of this document may be made for your own use and for distribution to
others, provided that you do not charge any fee for such copies and further
provided that each copy contains this Copyright Notice, whether distributed in
print or electronically.








// ======================================================================================


================================================
FILE: docs/modules/ROOT/pages/observability.adoc
================================================
[[observability]]
= Observability

== Observability metadata

include::partial$_metrics.adoc[]

include::partial$_spans.adoc[]


================================================
FILE: docs/modules/ROOT/pages/preface.adoc
================================================
[[preface]]
= Preface

[[task-documentation-about]]

This section provides a brief overview of the Spring Cloud Task reference documentation.
Think of it as a map for the rest of the document. You can read this reference guide in a
linear fashion or you can skip sections if something does not interest you.

[[about-the-documentation]]
== About the documentation
The Spring Cloud Task reference guide is available in https://docs.spring.io/spring-cloud-task/docs/current/reference[html].
The latest copy is available at
https://docs.spring.io/spring-cloud-task/reference/.

Copies of this document may be made for your own use and for distribution to others,
provided that you do not charge any fee for such copies and further provided that each
copy contains this Copyright Notice, whether distributed in print or electronically.

[[task-documentation-getting-help]]
== Getting help
Having trouble with Spring Cloud Task? We would like to help!

* Ask a question. We monitor https://stackoverflow.com[stackoverflow.com] for questions
tagged with https://stackoverflow.com/tags/spring-cloud-task[`spring-cloud-task`].
* Report bugs with Spring Cloud Task at
https://github.com/spring-cloud/spring-cloud-task/issues.

NOTE: All of Spring Cloud Task is open source, including the documentation. If you find
a problem with the docs or if you just want to improve them, please {github-code}[get
involved].

[[task-documentation-first-steps]]
== First Steps
If you are just getting started with Spring Cloud Task or with 'Spring' in general, we
suggesting reading the xref:getting-started.adoc[Getting started] chapter.

To get started from scratch, read the following sections:

* xref:getting-started.adoc#getting-started-introducing-spring-cloud-task[Introducing Spring Cloud Task]
* xref:getting-started.adoc#getting-started-system-requirements[System Requirements] +

To follow the tutorial, read
xref:getting-started.adoc#getting-started-developing-first-task[Developing Your First Spring Cloud Task Application] +
To run your example, read
xref:getting-started.adoc#getting-started-running-the-example[Running the Example]


================================================
FILE: docs/modules/ROOT/pages/stream.adoc
================================================
[[stream-integration]]
= Spring Cloud Stream Integration

[[partintro]]
--
A task by itself can be useful, but integration of a task into a larger ecosystem lets it
be useful for more complex processing and orchestration. This section
covers the integration options for Spring Cloud Task with Spring Cloud Stream.
--

[[stream-integration-events]]
== Spring Cloud Task Events

Spring Cloud Task provides the ability to emit events through a Spring Cloud Stream
channel when the task is run through a Spring Cloud Stream channel. A task listener is
used to publish the `TaskExecution` on a message channel named `task-events`. This feature
is autowired into any task that has `spring-cloud-stream`, `spring-cloud-stream-<binder>`,
and a defined task on its classpath.

NOTE: To disable the event emitting listener, set the `spring.cloud.task.events.enabled`
property to `false`.

With the appropriate classpath defined, the following task emits the `TaskExecution` as an
event on the `task-events` channel (at both the start and the end of the task):

[source, java]
----
@SpringBootApplication
public class TaskEventsApplication {

	public static void main(String[] args) {
		SpringApplication.run(TaskEventsApplication.class, args);
	}

	@Configuration
	public static class TaskConfiguration {

		@Bean
		public ApplicationRunner applicationRunner() {
			return new ApplicationRunner() {
				@Override
				public void run(ApplicationArguments args) {
					System.out.println("The ApplicationRunner was executed");
				}
			};
		}
	}
}
----

NOTE: A binder implementation is also required to be on the classpath.

NOTE: A sample task event application can be found in the samples module
of the Spring Cloud Task Project,
https://github.com/spring-cloud/spring-cloud-task/tree/master/spring-cloud-task-samples/task-events[here].

[[stream-integration-disable-task-events]]
=== Disabling Specific Task Events

To disable task events, you can set the `spring.cloud.task.events.enabled` property to
`false`.

[[stream-integration-batch-events]]
== Spring Batch Events

When executing a Spring Batch job through a task, Spring Cloud Task can be configured to
emit informational messages based on the Spring Batch listeners available in Spring Batch.
Specifically, the following Spring Batch listeners are autoconfigured into each batch job
and emit messages on the associated Spring Cloud Stream channels when run through Spring
Cloud Task:

* `JobExecutionListener` listens for `job-execution-events`
* `StepExecutionListener` listens for `step-execution-events`
* `ChunkListener` listens for `chunk-events`
* `ItemReadListener` listens for `item-read-events`
* `ItemProcessListener` listens for `item-process-events`
* `ItemWriteListener` listens for `item-write-events`
* `SkipListener` listens for `skip-events`

These listeners are autoconfigured into any `AbstractJob` when the appropriate
beans (a `Job` and a `TaskLifecycleListener`) exist in the context. Configuration to
listen to these events is handled the same way binding to any other Spring
Cloud Stream channel is done.  Our task (the one running the batch job) serves as a
`Source`, with the listening applications serving as either a `Processor` or a `Sink`.

An example could be to have an application listening to the `job-execution-events` channel
for the start and stop of a job. To configure the listening application, you would
configure the input to be `job-execution-events` as follows:

`spring.cloud.stream.bindings.input.destination=job-execution-events`

NOTE: A binder implementation is also required to be on the classpath.

NOTE: A sample batch event application can be found in the samples module
of the Spring Cloud Task Project,
https://github.com/spring-cloud/spring-cloud-task/tree/master/spring-cloud-task-samples/batch-events[here].

[[sending-batch-events-to-different-channels]]
=== Sending Batch Events to Different Channels

One of the options that Spring Cloud Task offers for batch events is the ability to alter
the channel to which a specific listener can emit its messages. To do so, use the
following configuration:
`spring.cloud.stream.bindings.<the channel>.destination=<new destination>`. For example,
if `StepExecutionListener` needs to emit its messages to another channel called
`my-step-execution-events` instead of the default `step-execution-events`, you can add the
following configuration:

`spring.cloud.task.batch.events.step-execution-events-binding-name=my-step-execution-events`

[[disabling-batch-events]]
=== Disabling Batch Events
To disable the listener functionality for all batch events, use the following
configuration:

`spring.cloud.task.batch.events.enabled=false`

To disable a specific batch event, use the following configuration:

`spring.cloud.task.batch.events.<batch event listener>.enabled=false`:

The following listing shows individual listeners that you can disable:

[source,bash]
----
spring.cloud.task.batch.events.job-execution.enabled=false
spring.cloud.task.batch.events.step-execution.enabled=false
spring.cloud.task.batch.events.chunk.enabled=false
spring.cloud.task.batch.events.item-read.enabled=false
spring.cloud.task.batch.events.item-process.enabled=false
spring.cloud.task.batch.events.item-write.enabled=false
spring.cloud.task.batch.events.skip.enabled=false
----

[[emit-order-for-batch-events]]
=== Emit Order for Batch Events
By default, batch events have `Ordered.LOWEST_PRECEDENCE`. To change this value (for
example, to 5 ), use the following configuration:

[source,bash]
----
spring.cloud.task.batch.events.job-execution-order=5
spring.cloud.task.batch.events.step-execution-order=5
spring.cloud.task.batch.events.chunk-order=5
spring.cloud.task.batch.events.item-read-order=5
spring.cloud.task.batch.events.item-process-order=5
spring.cloud.task.batch.events.item-write-order=5
spring.cloud.task.batch.events.skip-order=5
----


================================================
FILE: docs/modules/ROOT/partials/_configprops.adoc
================================================
|===
|Name | Default | Description

|spring.cloud.task.batch.application-runner-order | `+++0+++` | The order for the {@code ApplicationRunner} used to run batch jobs when {@code spring.cloud.task.batch.fail-on-job-failure=true}. Defaults to 0 (same as the {@link org.springframework.boot.batch.autoconfigure.JobLauncherApplicationRunner}).
|spring.cloud.task.batch.command-line-runner-order |  | 
|spring.cloud.task.batch.events.chunk-event-binding-name | `+++chunk-events+++` | 
|spring.cloud.task.batch.events.chunk-order |  | Establishes the default {@link Ordered} precedence for {@link org.springframework.batch.core.ChunkListener}.
|spring.cloud.task.batch.events.chunk.enabled | `+++true+++` | This property is used to determine if a task should listen for batch chunk events.
|spring.cloud.task.batch.events.enabled | `+++true+++` | This property is used to determine if a task should listen for batch events.
|spring.cloud.task.batch.events.item-process-event-binding-name | `+++item-process-events+++` | 
|spring.cloud.task.batch.events.item-process-order |  | Establishes the default {@link Ordered} precedence for {@link org.springframework.batch.core.ItemProcessListener}.
|spring.cloud.task.batch.events.item-process.enabled | `+++true+++` | This property is used to determine if a task should listen for batch item processed events.
|spring.cloud.task.batch.events.item-read-event-binding-name | `+++item-read-events+++` | 
|spring.cloud.task.batch.events.item-read-order |  | Establishes the default {@link Ordered} precedence for {@link org.springframework.batch.core.ItemReadListener}.
|spring.cloud.task.batch.events.item-read.enabled | `+++true+++` | This property is used to determine if a task should listen for batch item read events.
|spring.cloud.task.batch.events.item-write-event-binding-name | `+++item-write-events+++` | 
|spring.cloud.task.batch.events.item-write-order |  | Establishes the default {@link Ordered} precedence for {@link org.springframework.batch.core.ItemWriteListener}.
|spring.cloud.task.batch.events.item-write.enabled | `+++true+++` | This property is used to determine if a task should listen for batch item write events.
|spring.cloud.task.batch.events.job-execution-event-binding-name | `+++job-execution-events+++` | 
|spring.cloud.task.batch.events.job-execution-order |  | Establishes the default {@link Ordered} precedence for {@link org.springframework.batch.core.JobExecutionListener}.
|spring.cloud.task.batch.events.job-execution.enabled | `+++true+++` | This property is used to determine if a task should listen for batch job execution events.
|spring.cloud.task.batch.events.skip-event-binding-name | `+++skip-events+++` | 
|spring.cloud.task.batch.events.skip-order |  | Establishes the default {@link Ordered} precedence for {@link org.springframework.batch.core.SkipListener}.
|spring.cloud.task.batch.events.skip.enabled | `+++true+++` | This property is used to determine if a task should listen for batch skip events.
|spring.cloud.task.batch.events.step-execution-event-binding-name | `+++step-execution-events+++` | 
|spring.cloud.task.batch.events.step-execution-order |  | Establishes the default {@link Ordered} precedence for {@link org.springframework.batch.core.StepExecutionListener}.
|spring.cloud.task.batch.events.step-execution.enabled | `+++true+++` | This property is used to determine if a task should listen for batch step execution events.
|spring.cloud.task.batch.events.task-event-binding-name | `+++task-events+++` | 
|spring.cloud.task.batch.fail-on-job-failure | `+++false+++` | This property is used to determine if a task app should return with a non zero exit code if a batch job fails.
|spring.cloud.task.batch.fail-on-job-failure-poll-interval | `+++5000+++` | Fixed delay in milliseconds that Spring Cloud Task will wait when checking if {@link org.springframework.batch.core.JobExecution}s have completed, when spring.cloud.task.batch.failOnJobFailure is set to true. Defaults to 5000.
|spring.cloud.task.batch.job-names |  | Comma-separated list of job names to execute on startup (for instance, `job1,job2`). By default, all Jobs found in the context are executed. @deprecated use spring.batch.job.name instead of spring.cloud.task.batch.jobNames.
|spring.cloud.task.batch.listener.enabled | `+++true+++` | This property is used to determine if a task will be linked to the batch jobs that are run.
|spring.cloud.task.closecontext-enabled | `+++false+++` | When set to true the context is closed at the end of the task. Else the context remains open.
|spring.cloud.task.events.enabled | `+++true+++` | This property is used to determine if a task app should emit task events.
|spring.cloud.task.executionid |  | An id that will be used by the task when updating the task execution.
|spring.cloud.task.external-execution-id |  | An id that can be associated with a task.
|spring.cloud.task.initialize-enabled |  | If set to true then tables are initialized. If set to false tables are not initialized. Defaults to null. The requirement for it to be defaulted to null is so that we can support the <code>spring.cloud.task.initialize.enable</code> until it is removed.
|spring.cloud.task.parent-execution-id |  | The id of the parent task execution id that launched this task execution. Defaults to null if task execution had no parent.
|spring.cloud.task.single-instance-enabled | `+++false+++` | This property is used to determine if a task will execute if another task with the same app name is running.
|spring.cloud.task.single-instance-lock-check-interval | `+++500+++` | Declares the time (in millis) that a task execution will wait between checks. Default time is: 500 millis.
|spring.cloud.task.single-instance-lock-ttl |  | Declares the maximum amount of time (in millis) that a task execution can hold a lock to prevent another task from executing with a specific task name when the single-instance-enabled is set to true. Default time is: Integer.MAX_VALUE.
|spring.cloud.task.table-prefix | `+++TASK_+++` | The prefix to append to the table names created by Spring Cloud Task.
|spring.cloud.task.transaction-manager | `+++springCloudTaskTransactionManager+++` | This property is used to specify the transaction manager for TaskRepository. By default, a dedicated transaction manager is created by spring.

|===

================================================
FILE: docs/modules/ROOT/partials/_conventions.adoc
================================================
[[observability-conventions]]
=== Observability - Conventions

Below you can find a list of all `GlobalObservationConvention` and `ObservationConvention` declared by this project.

.ObservationConvention implementations
|===
|ObservationConvention Class Name | Applicable ObservationContext Class Name
|`org.springframework.cloud.task.listener.DefaultTaskExecutionObservationConvention`|`TaskExecutionObservationContext`
|`org.springframework.cloud.task.listener.TaskExecutionObservationConvention`|`TaskExecutionObservationContext`
|`org.springframework.cloud.task.configuration.observation.DefaultTaskObservationConvention`|`TaskObservationContext`
|`org.springframework.cloud.task.configuration.observation.TaskObservationConvention`|`TaskObservationContext`
|===


================================================
FILE: docs/modules/ROOT/partials/_metrics.adoc
================================================
[[observability-metrics]]
=== Observability - Metrics

Below you can find a list of all metrics declared by this project.

[[observability-metrics-task-active]]
==== Task Active

____
Metrics created around a task execution.
____


**Metric name** `spring.cloud.task` (defined by convention class `org.springframework.cloud.task.listener.DefaultTaskExecutionObservationConvention`). **Type** `timer`.

**Metric name** `spring.cloud.task.active` (defined by convention class `org.springframework.cloud.task.listener.DefaultTaskExecutionObservationConvention`). **Type** `long task timer`.


IMPORTANT: KeyValues that are added after starting the Observation might be missing from the *.active metrics.


IMPORTANT: Micrometer internally uses `nanoseconds` for the baseunit. However, each backend determines the actual baseunit. (i.e. Prometheus uses seconds)


Fully qualified name of the enclosing class `org.springframework.cloud.task.listener.TaskExecutionObservation`.

IMPORTANT: All tags must be prefixed with `spring.cloud.task` prefix!

.Low cardinality Keys
[cols="a,a"]
|===
|Name | Description
|`spring.cloud.task.cf.app.id` _(required)_|App id for CF cloud.
|`spring.cloud.task.cf.app.name` _(required)_|App name for CF cloud.
|`spring.cloud.task.cf.app.version` _(required)_|App version for CF cloud.
|`spring.cloud.task.cf.instance.index` _(required)_|Instance index for CF cloud.
|`spring.cloud.task.cf.org.name` _(required)_|Organization Name for CF cloud.
|`spring.cloud.task.cf.space.id` _(required)_|Space id for CF cloud.
|`spring.cloud.task.cf.space.name` _(required)_|Space name for CF cloud.
|`spring.cloud.task.execution.id` _(required)_|Task execution id.
|`spring.cloud.task.exit.code` _(required)_|Task exit code.
|`spring.cloud.task.external.execution.id` _(required)_|External execution id for task.
|`spring.cloud.task.name` _(required)_|Task name measurement.
|`spring.cloud.task.parent.execution.id` _(required)_|Task parent execution id.
|`spring.cloud.task.status` _(required)_|task status. Can be either success or failure.
|===



[[observability-metrics-task-runner-observation]]
==== Task Runner Observation

____
Observation created when a task runner is executed.
____


**Metric name** `spring.cloud.task.runner` (defined by convention class `org.springframework.cloud.task.configuration.observation.DefaultTaskObservationConvention`). **Type** `timer`.

**Metric name** `spring.cloud.task.runner.active` (defined by convention class `org.springframework.cloud.task.configuration.observation.DefaultTaskObservationConvention`). **Type** `long task timer`.


IMPORTANT: KeyValues that are added after starting the Observation might be missing from the *.active metrics.


IMPORTANT: Micrometer internally uses `nanoseconds` for the baseunit. However, each backend determines the actual baseunit. (i.e. Prometheus uses seconds)


Fully qualified name of the enclosing class `org.springframework.cloud.task.configuration.observation.TaskDocumentedObservation`.

IMPORTANT: All tags must be prefixed with `spring.cloud.task` prefix!

.Low cardinality Keys
[cols="a,a"]
|===
|Name | Description
|`spring.cloud.task.runner.bean-name` _(required)_|Name of the bean that was executed by Spring Cloud Task.
|===






================================================
FILE: docs/modules/ROOT/partials/_spans.adoc
================================================
[[observability-spans]]
=== Observability - Spans

Below you can find a list of all spans declared by this project.

[[observability-spans-task-active]]
==== Task Active Span

> Metrics created around a task execution.

**Span name** `spring.cloud.task` (defined by convention class `org.springframework.cloud.task.listener.DefaultTaskExecutionObservationConvention`).

Fully qualified name of the enclosing class `org.springframework.cloud.task.listener.TaskExecutionObservation`.

IMPORTANT: All tags must be prefixed with `spring.cloud.task` prefix!

.Tag Keys
|===
|Name | Description
|`spring.cloud.task.cf.app.id` _(required)_|App id for CF cloud.
|`spring.cloud.task.cf.app.name` _(required)_|App name for CF cloud.
|`spring.cloud.task.cf.app.version` _(required)_|App version for CF cloud.
|`spring.cloud.task.cf.instance.index` _(required)_|Instance index for CF cloud.
|`spring.cloud.task.cf.org.name` _(required)_|Organization Name for CF cloud.
|`spring.cloud.task.cf.space.id` _(required)_|Space id for CF cloud.
|`spring.cloud.task.cf.space.name` _(required)_|Space name for CF cloud.
|`spring.cloud.task.execution.id` _(required)_|Task execution id.
|`spring.cloud.task.exit.code` _(required)_|Task exit code.
|`spring.cloud.task.external.execution.id` _(required)_|External execution id for task.
|`spring.cloud.task.name` _(required)_|Task name measurement.
|`spring.cloud.task.parent.execution.id` _(required)_|Task parent execution id.
|`spring.cloud.task.status` _(required)_|task status. Can be either success or failure.
|===



[[observability-spans-task-runner-observation]]
==== Task Runner Observation Span

> Observation created when a task runner is executed.

**Span name** `spring.cloud.task.runner` (defined by convention class `org.springframework.cloud.task.configuration.observation.DefaultTaskObservationConvention`).

Fully qualified name of the enclosing class `org.springframework.cloud.task.configuration.observation.TaskDocumentedObservation`.

IMPORTANT: All tags must be prefixed with `spring.cloud.task` prefix!

.Tag Keys
|===
|Name | Description
|`spring.cloud.task.runner.bean-name` _(required)_|Name of the bean that was executed by Spring Cloud Task.
|===






================================================
FILE: docs/package.json
================================================
{
	"dependencies": {
		"antora": "3.2.0-alpha.9",
		"@antora/atlas-extension": "1.0.0-alpha.5",
		"@antora/collector-extension": "1.0.2",
		"@asciidoctor/tabs": "1.0.0-beta.6",
		"@springio/antora-extensions": "1.14.7",
		"@springio/asciidoctor-extensions": "1.0.0-alpha.17"
	}
}


================================================
FILE: docs/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
		 xmlns="http://maven.apache.org/POM/4.0.0"
		 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-task-docs</artifactId>
	<parent>
		<groupId>org.springframework.cloud</groupId>
		<artifactId>spring-cloud-task-parent</artifactId>
		<version>5.0.2-SNAPSHOT</version>
	</parent>
	<packaging>jar</packaging>
	<name>Spring Cloud Task Docs</name>
	<description>Spring Cloud Task Docs</description>
	<properties>
		<docs.main>spring-cloud-task</docs.main>
		<main.basedir>${basedir}/..</main.basedir>
		<configprops.inclusionPattern>spring.cloud.*</configprops.inclusionPattern>
		<!-- Don't upload docs jar to central / repo.spring.io -->
		<maven-deploy-plugin-default.phase>none</maven-deploy-plugin-default.phase>

		<!-- Observability -->
		<micrometer-docs-generator.version>1.0.2</micrometer-docs-generator.version>
		<micrometer-docs-generator.inputPath>${maven.multiModuleProjectDirectory}/spring-cloud-task-core/</micrometer-docs-generator.inputPath>
		<micrometer-docs-generator.inclusionPattern>.*</micrometer-docs-generator.inclusionPattern>
		<micrometer-docs-generator.outputPath>${maven.multiModuleProjectDirectory}/docs/modules/ROOT/partials/</micrometer-docs-generator.outputPath>
	</properties>
	<build>
		<sourceDirectory>src/main/asciidoc</sourceDirectory>
	</build>
	<profiles>
		<profile>
			<id>enable-configuration-properties</id>
			<activation>
				<property>
					<name>!disableConfigurationProperties</name>
				</property>
			</activation>
			<dependencies>
				<dependency>
					<groupId>${project.groupId}</groupId>
					<artifactId>spring-cloud-starter-single-step-batch-job</artifactId>
					<version>${project.version}</version>
				</dependency>
				<dependency>
					<groupId>${project.groupId}</groupId>
					<artifactId>spring-cloud-starter-task</artifactId>
					<version>${project.version}</version>
				</dependency>
			</dependencies>
		</profile>
		<profile>
			<id>docs</id>
			<build>
				<resources>
					<resource>
						<directory>src/main/antora/resources/antora-resources</directory>
						<filtering>true</filtering>
					</resource>
				</resources>
				<plugins>
					<plugin>
						<groupId>pl.project13.maven</groupId>
						<artifactId>git-commit-id-plugin</artifactId>
					</plugin>
					<plugin>
						<groupId>org.apache.maven.plugins</groupId>
						<artifactId>maven-dependency-plugin</artifactId>
					</plugin>
					<plugin>
						<groupId>org.codehaus.mojo</groupId>
						<artifactId>exec-maven-plugin</artifactId>
						<!-- TODO: Remove this execution if you have no observability -->
						<executions>
							<execution>
								<id>generate-observability-docs</id>
								<phase>${generate-docs.phase}</phase>
								<goals>
									<goal>java</goal>
								</goals>
								<configuration>
									<mainClass>io.micrometer.docs.DocsGeneratorCommand</mainClass>
									<includePluginDependencies>true</includePluginDependencies>
									<arguments>
										<argument>${micrometer-docs-generator.inputPath}</argument>
										<argument>${micrometer-docs-generator.inclusionPattern}</argument>
										<argument>${micrometer-docs-generator.outputPath}</argument>
									</arguments>
								</configuration>
							</execution>
						</executions>
						<dependencies>
							<dependency>
								<groupId>io.micrometer</groupId>
								<artifactId>micrometer-docs-generator</artifactId>
								<version>${micrometer-docs-generator.version}</version>
								<type>jar</type>
							</dependency>
						</dependencies>
					</plugin>
					<plugin>
						<groupId>io.spring.maven.antora</groupId>
						<artifactId>antora-component-version-maven-plugin</artifactId>
					</plugin>
					<plugin>
						<groupId>org.antora</groupId>
						<artifactId>antora-maven-plugin</artifactId>
					</plugin>
					<plugin>
						<groupId>org.apache.maven.plugins</groupId>
						<artifactId>maven-antrun-plugin</artifactId>
						<executions>
							<execution>
								<id>copying-javadocs</id>
								<phase>prepare-package</phase>
								<goals>
									<goal>run</goal>
								</goals>
								<configuration>
									<target>
										<mkdir dir="${project.basedir}/target/generated-docs/apidocs"/>
									</target>
									<target>
										<copy todir="${project.basedir}/target/generated-docs/apidocs">
											<fileset dir="${maven.multiModuleProjectDirectory}/target/reports/apidocs"/>
										</copy>
									</target>
								</configuration>
							</execution>
						</executions>
					</plugin>
					<plugin>
						<artifactId>maven-deploy-plugin</artifactId>
					</plugin>
				</plugins>
			</build>
		</profile>
	</profiles>
</project>


================================================
FILE: docs/src/main/antora/resources/antora-resources/antora.yml
================================================
version: @antora-component.version@
prerelease: @antora-component.prerelease@

asciidoc:
  attributes:
    attribute-missing: 'warn'
    chomp: 'all'
    project-root: @maven.multiModuleProjectDirectory@
    github-repo: @docs.main@
    github-raw: https://raw.githubusercontent.com/spring-cloud/@docs.main@/@github-tag@
    github-code: https://github.com/spring-cloud/@docs.main@/tree/@github-tag@
    github-issues: https://github.com/spring-cloud/@docs.main@/issues/
    github-wiki: https://github.com/spring-cloud/@docs.main@/wiki
    spring-cloud-version: @project.version@
    github-tag: @github-tag@
    version-type: @version-type@
    docs-url: https://docs.spring.io/@docs.main@/docs/@project.version@
    raw-docs-url: https://raw.githubusercontent.com/spring-cloud/@docs.main@/@github-tag@
    project-version: @project.version@
    project-name: @docs.main@


================================================
FILE: docs/src/main/asciidoc/.gitignore
================================================
*.html
*.css


================================================
FILE: docs/src/main/asciidoc/Guardfile
================================================
require 'asciidoctor'
require 'erb'

guard 'shell' do
	watch(/.*\.adoc$/) {|m|
		Asciidoctor.render_file('index.adoc', \
			  :in_place => true, \
			  :safe => Asciidoctor::SafeMode::UNSAFE, \
			  :attributes => {\
				  'source-highlighter' => 'prettify', \
				  'icons' => 'font', \
				  'linkcss' => 'true', \
				  'copycss' => 'true', \
				  'doctype' => 'book'})
	}
end

guard 'livereload' do
	watch(%r{^.+\.(css|js|html)$})
end


================================================
FILE: docs/src/main/asciidoc/README.adoc
================================================
[[spring-cloud-task]]
= Spring Cloud Task

Is a project centered around the idea of processing on demand.  A user is able to develop
a “task” that can be deployed, executed and removed on demand, yet the result of the
process persists beyond the life of the task for future reporting.


[[requirements:]]
== Requirements:

* Java 17 or Above

[[build-main-project:]]
== Build Main Project:

[source,shell,indent=2]
----
$ ./mvnw clean install
----

[[example:]]
== Example:

[source,java,indent=2]
----
@SpringBootApplication
@EnableTask
public class MyApp {

	@Bean
	public MyTaskApplication myTask() {
		return new MyTaskApplication();
	}

	public static void main(String[] args) {
		SpringApplication.run(MyApp.class);
	}

	public static class MyTaskApplication implements ApplicationRunner {

		@Override
		public void run(ApplicationArguments args) throws Exception {
			System.out.println("Hello World");
		}
	}
}
----

[[code-of-conduct]]
== Code of Conduct
This project adheres to the Contributor Covenant link:CODE_OF_CONDUCT.adoc[code of conduct]. By participating, you  are expected to uphold this code. Please report unacceptable behavior to spring-code-of-conduct@pivotal.io.

[[building-the-project]]
== Building the Project

This project requires that you invoke the Javadoc engine from the Maven command line. You can do so by appending `javadoc:aggregate` to the rest of your Maven command.
For example, to build the entire project, you could use `mvn clean install -DskipTests -P docs`.


================================================
FILE: docs/src/main/asciidoc/index.htmladoc
================================================
include::spring-cloud-task.adoc[]


================================================
FILE: docs/src/main/asciidoc/index.htmlsingleadoc
================================================
= Spring Cloud Task Reference Guide
Michael Minella, Glenn Renfro, Jay Bryant

include::_attributes.adoc[]

// ======================================================================================

(C) 2009-2020 VMware, Inc. All rights reserved.

Copies of this document may be made for your own use and for distribution to
others, provided that you do not charge any fee for such copies and further
provided that each copy contains this Copyright Notice, whether distributed in
print or electronically.

include::preface.adoc[leveloffset=+1]

include::getting-started.adoc[leveloffset=+1]

include::features.adoc[leveloffset=+1]

include::batch.adoc[leveloffset=+1]

include::batch-starter.adoc[leveloffset=+1]

include::stream.adoc[leveloffset=+1]

include::appendix.adoc[leveloffset=+1]

// ======================================================================================


================================================
FILE: docs/src/main/asciidoc/index.pdfadoc
================================================
include::spring-cloud-task.pdfadoc[]


================================================
FILE: docs/src/main/asciidoc/sagan-index.adoc
================================================
Spring Cloud Task allows a user to develop and run short lived microservices using Spring Cloud and run them locally, in the cloud, even on Spring Cloud Data Flow. Just add `@EnableTask` and run your app as a Spring Boot app (single application context).
If you are new to Spring Cloud Task, take a look at our https://docs.spring.io/spring-cloud-task/docs/2.0.0.RELEASE/reference/htmlsingle/#getting-started[Getting Started] docs.  


================================================
FILE: docs/src/main/asciidoc/spring-cloud-task.epubadoc
================================================
= Spring Cloud Task Reference Guide
Michael Minella, Glenn Renfro, Jay Bryant

include::_attributes.adoc[]

// ======================================================================================

(C) 2009-2022 VMware, Inc. All rights reserved.

Copies of this document may be made for your own use and for distribution to
others, provided that you do not charge any fee for such copies and further
provided that each copy contains this Copyright Notice, whether distributed in
print or electronically.

include::preface.adoc[leveloffset=+1]

include::getting-started.adoc[leveloffset=+1]

include::features.adoc[leveloffset=+1]

include::batch.adoc[leveloffset=+1]

include::batch-starter.adoc[leveloffset=+1]

include::stream.adoc[leveloffset=+1]

include::appendix.adoc[leveloffset=+1]

// ======================================================================================


================================================
FILE: docs/src/main/asciidoc/spring-cloud-task.htmlsingleadoc
================================================
= Spring Cloud Task Reference Guide
Michael Minella, Glenn Renfro, Jay Bryant

include::_attributes.adoc[]

// ======================================================================================

(C) 2009-2020 VMware, Inc. All rights reserved.

Copies of this document may be made for your own use and for distribution to
others, provided that you do not charge any fee for such copies and further
provided that each copy contains this Copyright Notice, whether distributed in
print or electronically.

include::preface.adoc[leveloffset=+1]

include::getting-started.adoc[leveloffset=+1]

include::features.adoc[leveloffset=+1]

include::batch.adoc[leveloffset=+1]

include::batch-starter.adoc[leveloffset=+1]

include::stream.adoc[leveloffset=+1]

include::appendix.adoc[leveloffset=+1]

// ======================================================================================


================================================
FILE: docs/src/main/asciidoc/spring-cloud-task.pdfadoc
================================================
= Spring Cloud Task Reference Guide
Michael Minella, Glenn Renfro, Jay Bryant

include::_attributes.adoc[]

// ======================================================================================

(C) 2009-2022 VMware, Inc. All rights reserved.

Copies of this document may be made for your own use and for distribution to
others, provided that you do not charge any fee for such copies and further
provided that each copy contains this Copyright Notice, whether distributed in
print or electronically.

include::preface.adoc[leveloffset=+1]

include::getting-started.adoc[leveloffset=+1]

include::features.adoc[leveloffset=+1]

include::batch.adoc[leveloffset=+1]

include::batch-starter.adoc[leveloffset=+1]

include::stream.adoc[leveloffset=+1]

include::appendix.adoc[leveloffset=+1]

// ======================================================================================


================================================
FILE: docs/src/main/javadoc/spring-javadoc.css
================================================
/* Javadoc style sheet */
/*
Overall document style
*/
@import url('resources/fonts/dejavu.css');

body {
	background-color: #ffffff;
	color: #353833;
	font-family: 'DejaVu Sans', Arial, Helvetica, sans-serif;
	font-size: 14px;
	margin: 0;
}

a:link, a:visited {
	text-decoration: none;
	color: #4A6782;
}

a:hover, a:focus {
	text-decoration: none;
	color: #bb7a2a;
}

a:active {
	text-decoration: none;
	color: #4A6782;
}

a[name] {
	color: #353833;
}

a[name]:hover {
	text-decoration: none;
	color: #353833;
}

pre {
	font-family: 'DejaVu Sans Mono', monospace;
	font-size: 14px;
}

h1 {
	font-size: 20px;
}

h2 {
	font-size: 18px;
}

h3 {
	font-size: 16px;
	font-style: italic;
}

h4 {
	font-size: 13px;
}

h5 {
	font-size: 12px;
}

h6 {
	font-size: 11px;
}

ul {
	list-style-type: disc;
}

code, tt {
	font-family: 'DejaVu Sans Mono', monospace;
	font-size: 14px;
	padding-top: 4px;
	margin-top: 8px;
	line-height: 1.4em;
}

dt code {
	font-family: 'DejaVu Sans Mono', monospace;
	font-size: 14px;
	padding-top: 4px;
}

table tr td dt code {
	font-family: 'DejaVu Sans Mono', monospace;
	font-size: 14px;
	vertical-align: top;
	padding-top: 4px;
}

sup {
	font-size: 8px;
}

/*
Document title and Copyright styles
*/
.clear {
	clear: both;
	height: 0px;
	overflow: hidden;
}

.aboutLanguage {
	float: right;
	padding: 0px 21px;
	font-size: 11px;
	z-index: 200;
	margin-top: -9px;
}

.legalCopy {
	margin-left: .5em;
}

.bar a, .bar a:link, .bar a:visited, .bar a:active {
	color: #FFFFFF;
	text-decoration: none;
}

.bar a:hover, .bar a:focus {
	color: #bb7a2a;
}

.tab {
	background-color: #0066FF;
	color: #ffffff;
	padding: 8px;
	width: 5em;
	font-weight: bold;
}

/*
Navigation bar styles
*/
.bar {
	background-color: #4D7A97;
	color: #FFFFFF;
	padding: .8em .5em .4em .8em;
	height: auto; /*height:1.8em;*/
	font-size: 11px;
	margin: 0;
}

.topNav {
	background-color: #4D7A97;
	color: #FFFFFF;
	float: left;
	padding: 0;
	width: 100%;
	clear: right;
	height: 2.8em;
	padding-top: 10px;
	overflow: hidden;
	font-size: 12px;
}

.bottomNav {
	margin-top: 10px;
	background-color: #4D7A97;
	color: #FFFFFF;
	float: left;
	padding: 0;
	width: 100%;
	clear: right;
	height: 2.8em;
	padding-top: 10px;
	overflow: hidden;
	font-size: 12px;
}

.subNav {
	background-color: #dee3e9;
	float: left;
	width: 100%;
	overflow: hidden;
	font-size: 12px;
}

.subNav div {
	clear: left;
	float: left;
	padding: 0 0 5px 6px;
	text-transform: uppercase;
}

ul.navList, ul.subNavList {
	float: left;
	margin: 0 25px 0 0;
	padding: 0;
}

ul.navList li {
	list-style: none;
	float: left;
	padding: 5px 6px;
	text-transform: uppercase;
}

ul.subNavList li {
	list-style: none;
	float: left;
}

.topNav a:link, .topNav a:active, .topNav a:visited, .bottomNav a:link, .bottomNav a:active, .bottomNav a:visited {
	color: #FFFFFF;
	text-decoration: none;
	text-transform: uppercase;
}

.topNav a:hover, .bottomNav a:hover {
	text-decoration: none;
	color: #bb7a2a;
	text-transform: uppercase;
}

.navBarCell1Rev {
	background-color: #F8981D;
	color: #253441;
	margin: auto 5px;
}

.skipNav {
	position: absolute;
	top: auto;
	left: -9999px;
	overflow: hidden;
}

/*
Page header and footer styles
*/
.header, .footer {
	clear: both;
	margin: 0 20px;
	padding: 5px 0 0 0;
}

.indexHeader {
	margin: 10px;
	position: relative;
}

.indexHeader span {
	margin-right: 15px;
}

.indexHeader h1 {
	font-size: 13px;
}

.title {
	color: #2c4557;
	margin: 10px 0;
}

.subTitle {
	margin: 5px 0 0 0;
}

.header ul {
	margin: 0 0 15px 0;
	padding: 0;
}

.footer ul {
	margin: 20px 0 5px 0;
}

.header ul li, .footer ul li {
	list-style: none;
	font-size: 13px;
}

/*
Heading styles
*/
div.details ul.blockList ul.blockList ul.blockList li.blockList h4, div.details ul.blockList ul.blockList ul.blockListLast li.blockList h4 {
	background-color: #dee3e9;
	border: 1px solid #d0d9e0;
	margin: 0 0 6px -8px;
	padding: 7px 5px;
}

ul.blockList ul.blockList ul.blockList li.blockList h3 {
	background-color: #dee3e9;
	border: 1px solid #d0d9e0;
	margin: 0 0 6px -8px;
	padding: 7px 5px;
}

ul.blockList ul.blockList li.blockList h3 {
	padding: 0;
	margin: 15px 0;
}

ul.blockList li.blockList h2 {
	padding: 0px 0 20px 0;
}

/*
Page layout container styles
*/
.contentContainer, .sourceContainer, .classUseContainer, .serializedFormContainer, .constantValuesContainer {
	clear: both;
	padding: 10px 20px;
	position: relative;
}

.indexContainer {
	margin: 10px;
	position: relative;
	font-size: 12px;
}

.indexContainer h2 {
	font-size: 13px;
	padding: 0 0 3px 0;
}

.indexContainer ul {
	margin: 0;
	padding: 0;
}

.indexContainer ul li {
	list-style: none;
	padding-top: 2px;
}

.contentContainer .description dl dt, .contentContainer .details dl dt, .serializedFormContainer dl dt {
	font-size: 12px;
	font-weight: bold;
	margin: 10px 0 0 0;
	color: #4E4E4E;
}

.contentContainer .description dl dd, .contentContainer .details dl dd, .serializedFormContainer dl dd {
	margin: 5px 0 10px 0px;
	font-size: 14px;
	font-family: 'DejaVu Sans Mono', monospace;
}

.serializedFormContainer dl.nameValue dt {
	margin-left: 1px;
	font-size: 1.1em;
	display: inline;
	font-weight: bold;
}

.serializedFormContainer dl.nameValue dd {
	margin: 0 0 0 1px;
	font-size: 1.1em;
	display: inline;
}

/*
List styles
*/
ul.horizontal li {
	display: inline;
	font-size: 0.9em;
}

ul.inheritance {
	margin: 0;
	padding: 0;
}

ul.inheritance li {
	display: inline;
	list-style: none;
}

ul.inheritance li ul.inheritance {
	margin-left: 15px;
	padding-left: 15px;
	padding-top: 1px;
}

ul.blockList, ul.blockListLast {
	margin: 10px 0 10px 0;
	padding: 0;
}

ul.blockList li.blockList, ul.blockListLast li.blockList {
	list-style: none;
	margin-bottom: 15px;
	line-height: 1.4;
}

ul.blockList ul.blockList li.blockList, ul.blockList ul.blockListLast li.blockList {
	padding: 0px 20px 5px 10px;
	border: 1px solid #ededed;
	background-color: #f8f8f8;
}

ul.blockList ul.blockList ul.blockList li.blockList, ul.blockList ul.blockList ul.blockListLast li.blockList {
	padding: 0 0 5px 8px;
	background-color: #ffffff;
	border: none;
}

ul.blockList ul.blockList ul.blockList ul.blockList li.blockList {
	margin-left: 0;
	padding-left: 0;
	padding-bottom: 15px;
	border: none;
}

ul.blockList ul.blockList ul.blockList ul.blockList li.blockListLast {
	list-style: none;
	border-bottom: none;
	padding-bottom: 0;
}

table tr td dl, table tr td dl dt, table tr td dl dd {
	margin-top: 0;
	margin-bottom: 1px;
}

/*
Table styles
*/
.overviewSummary, .memberSummary, .typeSummary, .useSummary, .constantsSummary, .deprecatedSummary {
	width: 100%;
	border-left: 1px solid #EEE;
	border-right: 1px solid #EEE;
	border-bottom: 1px solid #EEE;
}

.overviewSummary, .memberSummary {
	padding: 0px;
}

.overviewSummary caption, .memberSummary caption, .typeSummary caption,
.useSummary caption, .constantsSummary caption, .deprecatedSummary caption {
	position: relative;
	text-align: left;
	background-repeat: no-repeat;
	color: #253441;
	font-weight: bold;
	clear: none;
	overflow: hidden;
	padding: 0px;
	padding-top: 10px;
	padding-left: 1px;
	margin: 0px;
	white-space: pre;
}

.overviewSummary caption a:link, .memberSummary caption a:link, .typeSummary caption a:link,
.useSummary caption a:link, .constantsSummary caption a:link, .deprecatedSummary caption a:link,
.overviewSummary caption a:hover, .memberSummary caption a:hover, .typeSummary caption a:hover,
.useSummary caption a:hover, .constantsSummary caption a:hover, .deprecatedSummary caption a:hover,
.overviewSummary caption a:active, .memberSummary caption a:active, .typeSummary caption a:active,
.useSummary caption a:active, .constantsSummary caption a:active, .deprecatedSummary caption a:active,
.overviewSummary caption a:visited, .memberSummary caption a:visited, .typeSummary caption a:visited,
.useSummary caption a:visited, .constantsSummary caption a:visited, .deprecatedSummary caption a:visited {
	color: #FFFFFF;
}

.overviewSummary caption span, .memberSummary caption span, .typeSummary caption span,
.useSummary caption span, .constantsSummary caption span, .deprecatedSummary caption span {
	white-space: nowrap;
	padding-top: 5px;
	padding-left: 12px;
	padding-right: 12px;
	padding-bottom: 7px;
	display: inline-block;
	float: left;
	background-color: #F8981D;
	border: none;
	height: 16px;
}

.memberSummary caption span.activeTableTab span {
	white-space: nowrap;
	padding-top: 5px;
	padding-left: 12px;
	padding-right: 12px;
	margin-right: 3px;
	display: inline-block;
	float: left;
	background-color: #F8981D;
	height: 16px;
}

.memberSummary caption span.tableTab span {
	white-space: nowrap;
	padding-top: 5px;
	padding-left: 12px;
	padding-right: 12px;
	margin-right: 3px;
	display: inline-block;
	float: left;
	background-color: #4D7A97;
	height: 16px;
}

.memberSummary caption span.tableTab, .memberSummary caption span.activeTableTab {
	padding-top: 0px;
	padding-left: 0px;
	padding-right: 0px;
	background-image: none;
	float: none;
	display: inline;
}

.overviewSummary .tabEnd, .memberSummary .tabEnd, .typeSummary .tabEnd,
.useSummary .tabEnd, .constantsSummary .tabEnd, .deprecatedSummary .tabEnd {
	display: none;
	width: 5px;
	position: relative;
	float: left;
	background-color: #F8981D;
}

.memberSummary .activeTableTab .tabEnd {
	display: none;
	width: 5px;
	margin-right: 3px;
	position: relative;
	float: left;
	background-color: #F8981D;
}

.memberSummary .tableTab .tabEnd {
	display: none;
	width: 5px;
	margin-right: 3px;
	position: relative;
	background-color: #4D7A97;
	float: left;

}

.overviewSummary td, .memberSummary td, .typeSummary td,
.useSummary td, .constantsSummary td, .deprecatedSummary td {
	text-align: left;
	padding: 0px 0px 12px 10px;
	width: 100%;
}

th.colOne, th.colFirst, th.colLast, .useSummary th, .constantsSummary th,
td.colOne, td.colFirst, td.colLast, .useSummary td, .constantsSummary td {
	vertical-align: top;
	padding-right: 0px;
	padding-top: 8px;
	padding-bottom: 3px;
}

th.colFirst, th.colLast, th.colOne, .constantsSummary th {
	background: #dee3e9;
	text-align: left;
	padding: 8px 3px 3px 7px;
}

td.colFirst, th.colFirst {
	white-space: nowrap;
	font-size: 13px;
}

td.colLast, th.colLast {
	font-size: 13px;
}

td.colOne, th.colOne {
	font-size: 13px;
}

.overviewSummary td.colFirst, .overviewSummary th.colFirst,
.overviewSummary td.colOne, .overviewSummary th.colOne,
.memberSummary td.colFirst, .memberSummary th.colFirst,
.memberSummary td.colOne, .memberSummary th.colOne,
.typeSummary td.colFirst {
	width: 25%;
	vertical-align: top;
}

td.colOne a:link, td.colOne a:active, td.colOne a:visited, td.colOne a:hover, td.colFirst a:link, td.colFirst a:active, td.colFirst a:visited, td.colFirst a:hover, td.colLast a:link, td.colLast a:active, td.colLast a:visited, td.colLast a:hover, .constantValuesContainer td a:link, .constantValuesContainer td a:active, .constantValuesContainer td a:visited, .constantValuesContainer td a:hover {
	font-weight: bold;
}

.tableSubHeadingColor {
	background-color: #EEEEFF;
}

.altColor {
	background-color: #FFFFFF;
}

.rowColor {
	background-color: #EEEEEF;
}

/*
Content styles
*/
.description pre {
	margin-top: 0;
}

.deprecatedContent {
	margin: 0;
	padding: 10px 0;
}

.docSummary {
	padding: 0;
}

ul.blockList ul.blockList ul.blockList li.blockList h3 {
	font-style: normal;
}

div.block {
	font-size: 14px;
	font-family: 'DejaVu Serif', Georgia, "Times New Roman", Times, serif;
}

td.colLast div {
	padding-top: 0px;
}


td.colLast a {
	padding-bottom: 3px;
}

/*
Formatting effect styles
*/
.sourceLineNo {
	color: green;
	padding: 0 30px 0 0;
}

h1.hidden {
	visibility: hidden;
	overflow: hidden;
	font-size: 10px;
}

.block {
	display: block;
	margin: 3px 10px 2px 0px;
	color: #474747;
}

.deprecatedLabel, .descfrmTypeLabel, .memberNameLabel, .memberNameLink,
.overrideSpecifyLabel, .packageHierarchyLabel, .paramLabel, .returnLabel,
.seeLabel, .simpleTagLabel, .throwsLabel, .typeNameLabel, .typeNameLink {
	font-weight: bold;
}

.deprecationComment, .emphasizedPhrase, .interfaceName {
	font-style: italic;
}

div.block div.block span.deprecationComment, div.block div.block span.emphasizedPhrase,
div.block div.block span.interfaceName {
	font-style: normal;
}

div.contentContainer ul.blockList li.blockList h2 {
	padding-bottom: 0px;
}


/*
Spring
*/

pre.code {
	background-color: #F8F8F8;
	border: 1px solid #CCCCCC;
	border-radius: 3px 3px 3px 3px;
	overflow: auto;
	padding: 10px;
	margin: 4px 20px 2px 0px;
}

pre.code code, pre.code code * {
	font-size: 1em;
}

pre.code code, pre.code code * {
	padding: 0 !important;
	margin: 0 !important;
}



================================================
FILE: mvnw
================================================
#!/bin/sh
# ----------------------------------------------------------------------------
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#    http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.
# ----------------------------------------------------------------------------

# ----------------------------------------------------------------------------
# Apache Maven Wrapper startup batch script, version 3.2.0
#
# Required ENV vars:
# ------------------
#   JAVA_HOME - location of a JDK home dir
#
# Optional ENV vars
# -----------------
#   MAVEN_OPTS - parameters passed to the Java VM when running Maven
#     e.g. to debug Maven itself, use
#       set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
#   MAVEN_SKIP_RC - flag to disable loading of mavenrc files
# ----------------------------------------------------------------------------

if [ -z "$MAVEN_SKIP_RC" ] ; then

  if [ -f /usr/local/etc/mavenrc ] ; then
    . /usr/local/etc/mavenrc
  fi

  if [ -f /etc/mavenrc ] ; then
    . /etc/mavenrc
  fi

  if [ -f "$HOME/.mavenrc" ] ; then
    . "$HOME/.mavenrc"
  fi

fi

# OS specific support.  $var _must_ be set to either true or false.
cygwin=false;
darwin=false;
mingw=false
case "$(uname)" in
  CYGWIN*) cygwin=true ;;
  MINGW*) mingw=true;;
  Darwin*) darwin=true
    # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home
    # See https://developer.apple.com/library/mac/qa/qa1170/_index.html
    if [ -z "$JAVA_HOME" ]; then
      if [ -x "/usr/libexec/java_home" ]; then
        JAVA_HOME="$(/usr/libexec/java_home)"; export JAVA_HOME
      else
        JAVA_HOME="/Library/Java/Home"; export JAVA_HOME
      fi
    fi
    ;;
esac

if [ -z "$JAVA_HOME" ] ; then
  if [ -r /etc/gentoo-release ] ; then
    JAVA_HOME=$(java-config --jre-home)
  fi
fi

# For Cygwin, ensure paths are in UNIX format before anything is touched
if $cygwin ; then
  [ -n "$JAVA_HOME" ] &&
    JAVA_HOME=$(cygpath --unix "$JAVA_HOME")
  [ -n "$CLASSPATH" ] &&
    CLASSPATH=$(cygpath --path --unix "$CLASSPATH")
fi

# For Mingw, ensure paths are in UNIX format before anything is touched
if $mingw ; then
  [ -n "$JAVA_HOME" ] && [ -d "$JAVA_HOME" ] &&
    JAVA_HOME="$(cd "$JAVA_HOME" || (echo "cannot cd into $JAVA_HOME."; exit 1); pwd)"
fi

if [ -z "$JAVA_HOME" ]; then
  javaExecutable="$(which javac)"
  if [ -n "$javaExecutable" ] && ! [ "$(expr "\"$javaExecutable\"" : '\([^ ]*\)')" = "no" ]; then
    # readlink(1) is not available as standard on Solaris 10.
    readLink=$(which readlink)
    if [ ! "$(expr "$readLink" : '\([^ ]*\)')" = "no" ]; then
      if $darwin ; then
        javaHome="$(dirname "\"$javaExecutable\"")"
        javaExecutable="$(cd "\"$javaHome\"" && pwd -P)/javac"
      else
        javaExecutable="$(readlink -f "\"$javaExecutable\"")"
      fi
      javaHome="$(dirname "\"$javaExecutable\"")"
      javaHome=$(expr "$javaHome" : '\(.*\)/bin')
      JAVA_HOME="$javaHome"
      export JAVA_HOME
    fi
  fi
fi

if [ -z "$JAVACMD" ] ; then
  if [ -n "$JAVA_HOME"  ] ; then
    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
      # IBM's JDK on AIX uses strange locations for the executables
      JAVACMD="$JAVA_HOME/jre/sh/java"
    else
      JAVACMD="$JAVA_HOME/bin/java"
    fi
  else
    JAVACMD="$(\unset -f command 2>/dev/null; \command -v java)"
  fi
fi

if [ ! -x "$JAVACMD" ] ; then
  echo "Error: JAVA_HOME is not defined correctly." >&2
  echo "  We cannot execute $JAVACMD" >&2
  exit 1
fi

if [ -z "$JAVA_HOME" ] ; then
  echo "Warning: JAVA_HOME environment variable is not set."
fi

# traverses directory structure from process work directory to filesystem root
# first directory with .mvn subdirectory is considered project base directory
find_maven_basedir() {
  if [ -z "$1" ]
  then
    echo "Path not specified to find_maven_basedir"
    return 1
  fi

  basedir="$1"
  wdir="$1"
  while [ "$wdir" != '/' ] ; do
    if [ -d "$wdir"/.mvn ] ; then
      basedir=$wdir
      break
    fi
    # workaround for JBEAP-8937 (on Solaris 10/Sparc)
    if [ -d "${wdir}" ]; then
      wdir=$(cd "$wdir/.." || exit 1; pwd)
    fi
    # end of workaround
  done
  printf '%s' "$(cd "$basedir" || exit 1; pwd)"
}

# concatenates all lines of a file
concat_lines() {
  if [ -f "$1" ]; then
    # Remove \r in case we run on Windows within Git Bash
    # and check out the repository with auto CRLF management
    # enabled. Otherwise, we may read lines that are delimited with
    # \r\n and produce $'-Xarg\r' rather than -Xarg due to word
    # splitting rules.
    tr -s '\r\n' ' ' < "$1"
  fi
}

log() {
  if [ "$MVNW_VERBOSE" = true ]; then
    printf '%s\n' "$1"
  fi
}

BASE_DIR=$(find_maven_basedir "$(dirname "$0")")
if [ -z "$BASE_DIR" ]; then
  exit 1;
fi

MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"}; export MAVEN_PROJECTBASEDIR
log "$MAVEN_PROJECTBASEDIR"

##########################################################################################
# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
# This allows using the maven wrapper in projects that prohibit checking in binary data.
##########################################################################################
wrapperJarPath="$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar"
if [ -r "$wrapperJarPath" ]; then
    log "Found $wrapperJarPath"
else
    log "Couldn't find $wrapperJarPath, downloading it ..."

    if [ -n "$MVNW_REPOURL" ]; then
      wrapperUrl="$MVNW_REPOURL/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar"
    else
      wrapperUrl="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar"
    fi
    while IFS="=" read -r key value; do
      # Remove '\r' from value to allow usage on windows as IFS does not consider '\r' as a separator ( considers space, tab, new line ('\n'), and custom '=' )
      safeValue=$(echo "$value" | tr -d '\r')
      case "$key" in (wrapperUrl) wrapperUrl="$safeValue"; break ;;
      esac
    done < "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.properties"
    log "Downloading from: $wrapperUrl"

    if $cygwin; then
      wrapperJarPath=$(cygpath --path --windows "$wrapperJarPath")
    fi

    if command -v wget > /dev/null; then
        log "Found wget ... using wget"
        [ "$MVNW_VERBOSE" = true ] && QUIET="" || QUIET="--quiet"
        if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
            wget $QUIET "$wrapperUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath"
        else
            wget $QUIET --http-user="$MVNW_USERNAME" --http-password="$MVNW_PASSWORD" "$wrapperUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath"
        fi
    elif command -v curl > /dev/null; then
        log "Found curl ... using curl"
        [ "$MVNW_VERBOSE" = true ] && QUIET="" || QUIET="--silent"
        if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
            curl $QUIET -o "$wrapperJarPath" "$wrapperUrl" -f -L || rm -f "$wrapperJarPath"
        else
            curl $QUIET --user "$MVNW_USERNAME:$MVNW_PASSWORD" -o "$wrapperJarPath" "$wrapperUrl" -f -L || rm -f "$wrapperJarPath"
        fi
    else
        log "Falling back to using Java to download"
        javaSource="$MAVEN_PROJECTBASEDIR/.mvn/wrapper/MavenWrapperDownloader.java"
        javaClass="$MAVEN_PROJECTBASEDIR/.mvn/wrapper/MavenWrapperDownloader.class"
        # For Cygwin, switch paths to Windows format before running javac
        if $cygwin; then
          javaSource=$(cygpath --path --windows "$javaSource")
          javaClass=$(cygpath --path --windows "$javaClass")
        fi
        if [ -e "$javaSource" ]; then
            if [ ! -e "$javaClass" ]; then
                log " - Compiling MavenWrapperDownloader.java ..."
                ("$JAVA_HOME/bin/javac" "$javaSource")
            fi
            if [ -e "$javaClass" ]; then
                log " - Running MavenWrapperDownloader.java ..."
                ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$wrapperUrl" "$wrapperJarPath") || rm -f "$wrapperJarPath"
            fi
        fi
    fi
fi
##########################################################################################
# End of extension
##########################################################################################

# If specified, validate the SHA-256 sum of the Maven wrapper jar file
wrapperSha256Sum=""
while IFS="=" read -r key value; do
  case "$key" in (wrapperSha256Sum) wrapperSha256Sum=$value; break ;;
  esac
done < "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.properties"
if [ -n "$wrapperSha256Sum" ]; then
  wrapperSha256Result=false
  if command -v sha256sum > /dev/null; then
    if echo "$wrapperSha256Sum  $wrapperJarPath" | sha256sum -c > /dev/null 2>&1; then
      wrapperSha256Result=true
    fi
  elif command -v shasum > /dev/null; then
    if echo "$wrapperSha256Sum  $wrapperJarPath" | shasum -a 256 -c > /dev/null 2>&1; then
      wrapperSha256Result=true
    fi
  else
    echo "Checksum validation was requested but neither 'sha256sum' or 'shasum' are available."
    echo "Please install either command, or disable validation by removing 'wrapperSha256Sum' from your maven-wrapper.properties."
    exit 1
  fi
  if [ $wrapperSha256Result = false ]; then
    echo "Error: Failed to validate Maven wrapper SHA-256, your Maven wrapper might be compromised." >&2
    echo "Investigate or delete $wrapperJarPath to attempt a clean download." >&2
    echo "If you updated your Maven version, you need to update the specified wrapperSha256Sum property." >&2
    exit 1
  fi
fi

MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS"

# For Cygwin, switch paths to Windows format before running java
if $cygwin; then
  [ -n "$JAVA_HOME" ] &&
    JAVA_HOME=$(cygpath --path --windows "$JAVA_HOME")
  [ -n "$CLASSPATH" ] &&
    CLASSPATH=$(cygpath --path --windows "$CLASSPATH")
  [ -n "$MAVEN_PROJECTBASEDIR" ] &&
    MAVEN_PROJECTBASEDIR=$(cygpath --path --windows "$MAVEN_PROJECTBASEDIR")
fi

# Provide a "standardized" way to retrieve the CLI args that will
# work with both Windows and non-Windows executions.
MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $*"
export MAVEN_CMD_LINE_ARGS

WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain

# shellcheck disable=SC2086 # safe args
exec "$JAVACMD" \
  $MAVEN_OPTS \
  $MAVEN_DEBUG_OPTS \
  -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \
  "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \
  ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@"


================================================
FILE: mvnw.cmd
================================================
@REM ----------------------------------------------------------------------------
@REM Licensed to the Apache Software Foundation (ASF) under one
@REM or more contributor license agreements.  See the NOTICE file
@REM distributed with this work for additional information
@REM regarding copyright ownership.  The ASF licenses this file
@REM to you under the Apache License, Version 2.0 (the
@REM "License"); you may not use this file except in compliance
@REM with the License.  You may obtain a copy of the License at
@REM
@REM    http://www.apache.org/licenses/LICENSE-2.0
@REM
@REM Unless required by applicable law or agreed to in writing,
@REM software distributed under the License is distributed on an
@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@REM KIND, either express or implied.  See the License for the
@REM specific language governing permissions and limitations
@REM under the License.
@REM ----------------------------------------------------------------------------

@REM ----------------------------------------------------------------------------
@REM Apache Maven Wrapper startup batch script, version 3.2.0
@REM
@REM Required ENV vars:
@REM JAVA_HOME - location of a JDK home dir
@REM
@REM Optional ENV vars
@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands
@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending
@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven
@REM     e.g. to debug Maven itself, use
@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files
@REM ----------------------------------------------------------------------------

@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on'
@echo off
@REM set title of command window
title %0
@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on'
@if "%MAVEN_BATCH_ECHO%" == "on"  echo %MAVEN_BATCH_ECHO%

@REM set %HOME% to equivalent of $HOME
if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%")

@REM Execute a user defined script before this one
if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre
@REM check for pre script, once with legacy .bat ending and once with .cmd ending
if exist "%USERPROFILE%\mavenrc_pre.bat" call "%USERPROFILE%\mavenrc_pre.bat" %*
if exist "%USERPROFILE%\mavenrc_pre.cmd" call "%USERPROFILE%\mavenrc_pre.cmd" %*
:skipRcPre

@setlocal

set ERROR_CODE=0

@REM To isolate internal variables from possible post scripts, we use another setlocal
@setlocal

@REM ==== START VALIDATION ====
if not "%JAVA_HOME%" == "" goto OkJHome

echo.
echo Error: JAVA_HOME not found in your environment. >&2
echo Please set the JAVA_HOME variable in your environment to match the >&2
echo location of your Java installation. >&2
echo.
goto error

:OkJHome
if exist "%JAVA_HOME%\bin\java.exe" goto init

echo.
echo Error: JAVA_HOME is set to an invalid directory. >&2
echo JAVA_HOME = "%JAVA_HOME%" >&2
echo Please set the JAVA_HOME variable in your environment to match the >&2
echo location of your Java installation. >&2
echo.
goto error

@REM ==== END VALIDATION ====

:init

@REM Find the project base dir, i.e. the directory that contains the folder ".mvn".
@REM Fallback to current working directory if not found.

set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR%
IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir

set EXEC_DIR=%CD%
set WDIR=%EXEC_DIR%
:findBaseDir
IF EXIST "%WDIR%"\.mvn goto baseDirFound
cd ..
IF "%WDIR%"=="%CD%" goto baseDirNotFound
set WDIR=%CD%
goto findBaseDir

:baseDirFound
set MAVEN_PROJECTBASEDIR=%WDIR%
cd "%EXEC_DIR%"
goto endDetectBaseDir

:baseDirNotFound
set MAVEN_PROJECTBASEDIR=%EXEC_DIR%
cd "%EXEC_DIR%"

:endDetectBaseDir

IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig

@setlocal EnableExtensions EnableDelayedExpansion
for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a
@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS%

:endReadAdditionalConfig

SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe"
set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar"
set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain

set WRAPPER_URL="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar"

FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO (
    IF "%%A"=="wrapperUrl" SET WRAPPER_URL=%%B
)

@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
@REM This allows using the maven wrapper in projects that prohibit checking in binary data.
if exist %WRAPPER_JAR% (
    if "%MVNW_VERBOSE%" == "true" (
        echo Found %WRAPPER_JAR%
    )
) else (
    if not "%MVNW_REPOURL%" == "" (
        SET WRAPPER_URL="%MVNW_REPOURL%/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar"
    )
    if "%MVNW_VERBOSE%" == "true" (
        echo Couldn't find %WRAPPER_JAR%, downloading it ...
        echo Downloading from: %WRAPPER_URL%
    )

    powershell -Command "&{"^
		"$webclient = new-object System.Net.WebClient;"^
		"if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^
		"$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^
		"}"^
		"[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%WRAPPER_URL%', '%WRAPPER_JAR%')"^
		"}"
    if "%MVNW_VERBOSE%" == "true" (
        echo Finished downloading %WRAPPER_JAR%
    )
)
@REM End of extension

@REM If specified, validate the SHA-256 sum of the Maven wrapper jar file
SET WRAPPER_SHA_256_SUM=""
FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO (
    IF "%%A"=="wrapperSha256Sum" SET WRAPPER_SHA_256_SUM=%%B
)
IF NOT %WRAPPER_SHA_256_SUM%=="" (
    powershell -Command "&{"^
       "$hash = (Get-FileHash \"%WRAPPER_JAR%\" -Algorithm SHA256).Hash.ToLower();"^
       "If('%WRAPPER_SHA_256_SUM%' -ne $hash){"^
       "  Write-Output 'Error: Failed to validate Maven wrapper SHA-256, your Maven wrapper might be compromised.';"^
       "  Write-Output 'Investigate or delete %WRAPPER_JAR% to attempt a clean download.';"^
       "  Write-Output 'If you updated your Maven version, you need to update the specified wrapperSha256Sum property.';"^
       "  exit 1;"^
       "}"^
       "}"
    if ERRORLEVEL 1 goto error
)

@REM Provide a "standardized" way to retrieve the CLI args that will
@REM work with both Windows and non-Windows executions.
set MAVEN_CMD_LINE_ARGS=%*

%MAVEN_JAVA_EXE% ^
  %JVM_CONFIG_MAVEN_PROPS% ^
  %MAVEN_OPTS% ^
  %MAVEN_DEBUG_OPTS% ^
  -classpath %WRAPPER_JAR% ^
  "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" ^
  %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %*
if ERRORLEVEL 1 goto error
goto end

:error
set ERROR_CODE=1

:end
@endlocal & set ERROR_CODE=%ERROR_CODE%

if not "%MAVEN_SKIP_RC%"=="" goto skipRcPost
@REM check for post script, once with legacy .bat ending and once with .cmd ending
if exist "%USERPROFILE%\mavenrc_post.bat" call "%USERPROFILE%\mavenrc_post.bat"
if exist "%USERPROFILE%\mavenrc_post.cmd" call "%USERPROFILE%\mavenrc_post.cmd"
:skipRcPost

@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on'
if "%MAVEN_BATCH_PAUSE%"=="on" pause

if "%MAVEN_TERMINATE_CMD%"=="on" exit %ERROR_CODE%

cmd /C exit /B %ERROR_CODE%


================================================
FILE: pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>

	<parent>
		<groupId>org.springframework.cloud</groupId>
		<artifactId>spring-cloud-build</artifactId>
		<version>5.0.2-SNAPSHOT</version>
		<relativePath />
	</parent>

	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-task-parent</artifactId>
	<version>5.0.2-SNAPSHOT</version>
	<packaging>pom</packaging>
	<name>Spring Cloud Task Build</name>
	<description>Spring Cloud Task Build</description>
	<url>https://cloud.spring.io/spring-cloud-task/</url>
	<organization>
		<name>VMware, Inc.</name>
		<url>https://www.spring.io</url>
	</organization>
	<licenses>
		<license>
			<name>Apache License, Version 2.0</name>
			<url>https://www.apache.org/licenses/LICENSE-2.0</url>
		</license>
	</licenses>
	<scm>
		<url>https://github.com/spring-cloud/spring-cloud-task</url>
	</scm>
	<developers>
		<developer>
			<id>mminella</id>
			<name>Michael Minella</name>
			<email>mminella at vmware.com</email>
			<organization>VMware, Inc.</organization>
			<organizationUrl>https://www.spring.io</organizationUrl>
			<roles>
				<role>Project Lead</role>
			</roles>
		</developer>
		<developer>
			<id>cppwfs</id>
			<name>Glenn Renfro</name>
			<email>grenfro at vmware</email>
			<organization>VMware, Inc.</organization>
			<organizationUrl>https://www.spring.io</organizationUrl>
		</developer>
	</developers>
	<prerequisites>
		<maven>3.2.1</maven>
	</prerequisites>

	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-task-dependencies</artifactId>
				<version>${project.version}</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-starter-stream-rabbit</artifactId>
				<version>${spring-cloud-stream-binder-rabbit.version}</version>
			</dependency>
			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-stream</artifactId>
				<version>${spring-cloud-stream.version}</version>
			</dependency>
		</dependencies>
	</dependencyManagement>

	<distributionManagement>
		<site>
			<id>spring-docs</id>
			<url>https://docs.spring.io/spring-cloud-release/docs/${pom.version}/reference/html/</url>
		</site>
		<downloadUrl>https://github.com/spring-cloud/spring-cloud-release</downloadUrl>
	</distributionManagement>

	<modules>
		<module>spring-cloud-task-dependencies</module>
		<module>spring-cloud-task-core</module>
		<module>spring-cloud-task-batch</module>
		<module>spring-cloud-task-stream</module>
		<module>spring-cloud-starter-task</module>
		<module>spring-cloud-task-samples</module>
		<module>spring-cloud-task-integration-tests</module>
		<module>docs</module>
		<module>spring-cloud-starter-single-step-batch-job</module>
	</modules>

	<properties>

		<spring-cloud-stream.version>5.0.2-SNAPSHOT</spring-cloud-stream.version>
		<spring-cloud-stream-binder-rabbit.version>${spring-cloud-stream.version}
		</spring-cloud-stream-binder-rabbit.version>
		<jakarta-ee-api.version>11.0.0</jakarta-ee-api.version>

		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<sonar.jacoco.reportPath>
			${project.build.directory}/coverage-reports/jacoco-ut.exec
		</sonar.jacoco.reportPath>
		<maven-checkstyle-plugin.failsOnError>true</maven-checkstyle-plugin.failsOnError>
		<maven-checkstyle-plugin.failsOnViolation>true
		</maven-checkstyle-plugin.failsOnViolation>
		<maven-checkstyle-plugin.includeTestSourceDirectory>true
		</maven-checkstyle-plugin.includeTestSourceDirectory>
		<java.version>17</java.version>
		<spring-javaformat-maven-plugin.version>0.0.40</spring-javaformat-maven-plugin.version>
	</properties>

	<build>
		<pluginManagement>
			<plugins>
				<plugin>
					<groupId>org.codehaus.mojo</groupId>
					<artifactId>flatten-maven-plugin</artifactId>
				</plugin>
			</plugins>
		</pluginManagement>
		<plugins>
			<plugin>
				<groupId>org.codehaus.mojo</groupId>
				<artifactId>flatten-maven-plugin</artifactId>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-surefire-plugin</artifactId>
				<configuration>
					<includes>
						<include>**/*Tests.java</include>
					</includes>
					<argLine>${surefireArgLine}</argLine>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<configuration>
					<source>17</source>
					<target>17</target>
					<testSource>17</testSource>
					<testTarget>17</testTarget>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-javadoc-plugin</artifactId>
				<configuration>
					<source>17</source>
					<doclint>all,-missing</doclint>
				</configuration>
				<executions>
					<execution>
						<id>attach-javadocs</id>
						<phase>prepare-package</phase>
						<goals>
							<goal>jar</goal>
						</goals>
					</execution>
					<execution>
						<id>aggregate</id>
						<phase>prepare-package</phase>
						<goals>
							<goal>aggregate</goal>
						</goals>
					</execution>
				</executions>

			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-source-plugin</artifactId>
				<executions>
					<execution>
						<id>attach-sources</id>
						<goals>
							<goal>jar</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
			<plugin>
				<groupId>org.jacoco</groupId>
				<artifactId>jacoco-maven-plugin</artifactId>
				<executions>
					<!--
						Prepares the property pointing to the JaCoCo runtime agent which
						is passed as VM argument when Maven the Surefire plugin is executed.
					-->
					<execution>
						<id>pre-unit-test</id>
						<goals>
							<goal>prepare-agent</goal>
						</goals>
						<configuration>
							<!-- Sets the path to the file which contains the execution data. -->
							<destFile>
								${project.build.directory}/coverage-reports/jacoco-ut.exec
							</destFile>
							<!--
								Sets the name of the property containing the settings
								for JaCoCo runtime agent.
							-->
							<propertyName>surefireArgLine</propertyName>
						</configuration>
					</execution>
					<!--
						Ensures that the code coverage report for unit tests is created after
						unit tests have been run.
					-->
					<execution>
						<id>post-unit-test</id>
						<phase>test</phase>
						<goals>
							<goal>report</goal>
						</goals>
						<configuration>
							<!-- Sets the path to the file which contains the execution data. -->
							<dataFile>
								${project.build.directory}/coverage-reports/jacoco-ut.exec
							</dataFile>
							<!-- Sets the output directory for the code coverage report. -->
							<outputDirectory>
								${project.reporting.outputDirectory}/jacoco-ut
							</outputDirectory>
						</configuration>
					</execution>
				</executions>
				<version>0.8.13</version>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-checkstyle-plugin</artifactId>
			</plugin>
			<plugin>
				<groupId>io.spring.javaformat</groupId>
				<artifactId>spring-javaformat-maven-plugin</artifactId>
				<version>${spring-javaformat-maven-plugin.version}</version>
				<executions>
					<execution>
						<phase>validate</phase>
						<inherited>true</inherited>
						<goals>
							<goal>validate</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
		</plugins>
	</build>


	<reporting>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-checkstyle-plugin</artifactId>
			</plugin>
		</plugins>
	</reporting>

	<profiles>
		<profile>
			<id>central</id>
			<build>
				<plugins>
					<plugin>
						<groupId>org.sonatype.central</groupId>
						<artifactId>central-publishing-maven-plugin</artifactId>
						<configuration>
							<excludeArtifacts>
								<artifact>spring-cloud-task-integration-tests</artifact>
							</excludeArtifacts>
						</configuration>
					</plugin>
				</plugins>
			</build>
		</profile>
		<profile>
			<id>spring</id>
			<repositories>
				<repository>
					<id>spring-snapshots</id>
					<name>Spring Snapshots</name>
					<url>https://repo.spring.io/snapshot</url>
					<snapshots>
						<enabled>true</enabled>
					</snapshots>
				</repository>
				<repository>
					<id>spring-milestones</id>
					<name>Spring Milestones</name>
					<url>https://repo.spring.io/milestone</url>
					<snapshots>
						<enabled>false</enabled>
					</snapshots>
				</repository>
				<repository>
					<id>spring-releases</id>
					<name>Spring Releases</name>
					<url>https://repo.spring.io/release</url>
					<snapshots>
						<enabled>false</enabled>
					</snapshots>
				</repository>
			</repositories>
			<pluginRepositories>
				<pluginRepository>
					<id>spring-snapshots</id>
					<name>Spring Snapshots</name>
					<url>https://repo.spring.io/snapshot</url>
					<snapshots>
						<enabled>true</enabled>
					</snapshots>
				</pluginRepository>
				<pluginRepository>
					<id>spring-milestones</id>
					<name>Spring Milestones</name>
					<url>https://repo.spring.io/milestone</url>
					<snapshots>
						<enabled>false</enabled>
					</snapshots>
				</pluginRepository>
				<pluginRepository>
					<id>spring-releases</id>
					<name>Spring Releases</name>
					<url>https://repo.spring.io/release</url>
					<snapshots>
						<enabled>false</enabled>
					</snapshots>
				</pluginRepository>
			</pluginRepositories>
		</profile>
		<profile>
			<id>withoutDockerTests</id>
			<build>
				<plugins>
					<plugin>
						<artifactId>maven-surefire-plugin</artifactId>
						<configuration>
							<excludedGroups>DockerRequired</excludedGroups>
						</configuration>
					</plugin>
				</plugins>
			</build>
		</profile>
	</profiles>
</project>


================================================
FILE: spring-cloud-starter-single-step-batch-job/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<parent>
		<artifactId>spring-cloud-task-parent</artifactId>
		<groupId>org.springframework.cloud</groupId>
		<version>5.0.2-SNAPSHOT</version>
	</parent>
	<modelVersion>4.0.0</modelVersion>

	<artifactId>spring-cloud-starter-single-step-batch-job</artifactId>
	<name>spring-cloud-starter-single-step-batch-job</name>

	<properties>
		<spring-cloud-commons.version>5.0.2-SNAPSHOT</spring-cloud-commons.version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-task-core</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-jdbc</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-batch</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.batch</groupId>
			<artifactId>spring-batch-infrastructure</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-configuration-processor</artifactId>
			<optional>true</optional>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-configuration-processor</artifactId>
			<optional>true</optional>
			<version>${spring-boot.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-jdbc</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.batch</groupId>
			<artifactId>spring-batch-test</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>com.h2database</groupId>
			<artifactId>h2</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-amqp</artifactId>
			<optional>true</optional>
		</dependency>
		<dependency>
			<groupId>org.springframework.amqp</groupId>
			<artifactId>spring-rabbit</artifactId>
		</dependency>
		<dependency>
			<groupId>org.testcontainers</groupId>
			<artifactId>testcontainers</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.testcontainers</groupId>
			<artifactId>testcontainers-rabbitmq</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>tools.jackson.core</groupId>
			<artifactId>jackson-core</artifactId>
		</dependency>
		<dependency>
			<groupId>tools.jackson.core</groupId>
			<artifactId>jackson-databind</artifactId>
		</dependency>
		<dependency>
			<groupId>org.junit.jupiter</groupId>
			<artifactId>junit-jupiter</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.junit.jupiter</groupId>
			<artifactId>junit-jupiter-engine</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.junit.jupiter</groupId>
			<artifactId>junit-jupiter-params</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.springframework.kafka</groupId>
			<artifactId>spring-kafka-test</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-kafka</artifactId>
		</dependency>
		<dependency>
			<groupId>org.junit.jupiter</groupId>
			<artifactId>junit-jupiter-api</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.junit.platform</groupId>
			<artifactId>junit-platform-launcher</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-test-support</artifactId>
			<version>${spring-cloud-commons.version}</version>
			<scope>test</scope>
		</dependency>
	</dependencies>


</project>


================================================
FILE: spring-cloud-starter-single-step-batch-job/src/main/java/org/springframework/cloud/task/batch/autoconfigure/RangeConverter.java
================================================
/*
 * Copyright 2020-present 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.
 * You may obtain a copy of the License at
 *
 *      https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.springframework.cloud.task.batch.autoconfigure;

import org.springframework.batch.infrastructure.item.file.transform.Range;
import org.springframework.core.convert.converter.Converter;

/**
 * Converter for taking properties of format {@code start-end} or {@code start} (where
 * start and end are both integers) and converting them into {@link Range} instances for
 * configuring a
 * {@link org.springframework.batch.infrastructure.item.file.FlatFileItemReader}.
 *
 * @author Michael Minella
 * @since 2.3
 */
public class RangeConverter implements Converter<String, Range> {

	@Override
	public Range convert(String source) {
		if (source == null) {
			return null;
		}

		String[] columns = source.split("-");

		if (columns.length == 1) {
			int start = Integer.parseInt(columns[0]);
			return new Range(start);
		}
		else if (columns.length == 2) {
			int start = Integer.parseInt(columns[0]);
			int end = Integer.parseInt(columns[1]);
			return new Range(start, end);
		}
		else {
			throw new IllegalArgumentException(String
				.format("%s is in an illegal format.  Ranges must be specified as startIndex-endIndex", source));
		}
	}

}


================================================
FILE: spring-cloud-starter-single-step-batch-job/src/main/java/org/springframework/cloud/task/batch/autoconfigure/SingleStepJobAutoConfiguration.java
================================================
/*
 * Copyright 2019-present 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.
 * You may obtain a copy of the License at
 *
 *      https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.springframework.cloud.task.batch.autoconfigure;

import java.util.Map;

import org.springframework.batch.core.job.Job;
import org.springframework.batch.core.job.builder.JobBuilder;
import org.springframework.batch.core.repository.JobRepository;
import org.springframework.batch.core.step.Step;
import org.springframework.batch.core.step.builder.SimpleStepBuilder;
import org.springframework.batch.core.step.builder.StepBuilder;
import org.springframework.batch.infrastructure.item.ItemProcessor;
import org.springframework.batch.infrastructure.item.ItemReader;
import org.springframework.batch.infrastructure.item.ItemWriter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.AutoConfiguration;
import org.springframework.boot.autoconfigure.AutoConfigureBefore;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.batch.autoconfigure.BatchAutoConfiguration;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.util.Assert;

/**
 * Autoconfiguration to create a single step Spring Batch Job.
 *
 * @author Michael Minella
 * @since 2.3
 */
@AutoConfiguration
@EnableConfigurationProperties(SingleStepJobProperties.class)
@AutoConfigureBefore(BatchAutoConfiguration.class)
public class SingleStepJobAutoConfiguration {

	private SingleStepJobProperties properties;

	@Autowired
	PlatformTransactionManager transactionManager;

	@Autowired
	JobRepository jobRepository;

	@Autowired(required = false)
	private ItemProcessor<Map<String, Object>, Map<String, Object>> itemProcessor;

	public SingleStepJobAutoConfiguration(SingleStepJobProperties properties, ApplicationContext context) {

		validateProperties(properties);
		this.properties = properties;
	}

	private void validateProperties(SingleStepJobProperties properties) {
		Assert.hasText(properties.getJobName(), "A job name is required");
		Assert.hasText(properties.getStepName(), "A step name is required");
		Assert.notNull(properties.getChunkSize(), "A chunk size is required");
		Assert.isTrue(properties.getChunkSize() > 0, "A chunk size greater than zero is required");
	}

	@Bean
	@ConditionalOnMissingBean
	@ConditionalOnProperty(prefix = "spring.batch.job", name = "job-name")
	public Job job(ItemReader<Map<String, Object>> itemReader, ItemWriter<Map<String, Object>> itemWriter) {

		SimpleStepBuilder<Map<String, Object>, Map<String, Object>> stepBuilder = new StepBuilder(
				this.properties.getStepName(), this.jobRepository)
			.<Map<String, Object>, Map<String, Object>>chunk(this.properties.getChunkSize(), this.transactionManager)
			.reader(itemReader);

		stepBuilder.processor(this.itemProcessor);

		Step step = stepBuilder.writer(itemWriter).build();

		return new JobBuilder(this.properties.getJobName(), this.jobRepository).start(step).build();
	}

}


================================================
FILE: spring-cloud-starter-single-step-batch-job/src/main/java/org/springframework/cloud/task/batch/autoconfigure/SingleStepJobProperties.java
================================================
/*
 * Copyright 2019-present 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.
 * You may obtain a copy of the License at
 *
 *      https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.springframework.cloud.task.batch.autoconfigure;

import org.springframework.boot.context.properties.ConfigurationProperties;

/**
 * Properties to configure the step and job level properties for a single step job.
 *
 * @author Michael Minella
 * @since 2.3
 */
@ConfigurationProperties(prefix = "spring.batch.job")
public class SingleStepJobProperties {

	/**
	 * Name of the step in the single step job.
	 */
	private String stepName;

	/**
	 * The number of items to process per transaction or chunk.
	 */
	private Integer chunkSize;

	/**
	 * The name of the job.
	 */
	private String jobName;

	/**
	 * Name of the step in the single step job.
	 * @return name
	 */
	public String getStepName() {
		return stepName;
	}

	/**
	 * Set the name of the step.
	 * @param stepName name
	 */
	public void setStepName(String stepName) {
		this.stepName = stepName;
	}

	/**
	 * The number of items to process per transaction/chunk.
	 * @return number of items
	 */
	public Integer getChunkSize() {
		return chunkSize;
	}

	/**
	 * Set the number of items within a transaction/chunk.
	 * @param chunkSize number of items
	 */
	public void setChunkSize(Integer chunkSize) {
		this.chunkSize = chunkSize;
	}

	/**
	 * The name of the job.
	 * @return name
	 */
	public String getJobName() {
		return jobName;
	}

	/**
	 * Set the name of the job.
	 * @param jobName name
	 */
	public void setJobName(String jobName) {
		this.jobName = jobName;
	}

}


================================================
FILE: spring-cloud-starter-single-step-batch-job/src/main/java/org/springframework/cloud/task/batch/autoconfigure/flatfile/FlatFileItemReaderAutoConfiguration.java
================================================
/*
 * Copyright 2019-present 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.
 * You may obtain a copy of the License at
 *
 *      https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.springframework.cloud.task.batch.autoconfigure.flatfile;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import org.springframework.batch.infrastructure.item.file.FlatFileItemReader;
import org.springframework.batch.infrastructure.item.file.LineCallbackHandler;
import org.springframework.batch.infrastructure.item.file.LineMapper;
import org.springframework.batch.infrastructure.item.file.builder.FlatFileItemReaderBuilder;
import org.springframework.batch.infrastructure.item.file.mapping.FieldSetMapper;
import org.springframework.batch.infrastructure.item.file.separator.RecordSeparatorPolicy;
import org.springframework.batch.infrastructure.item.file.transform.FieldSet;
import org.springframework.batch.infrastructure.item.file.transform.LineTokenizer;
import org.springframework.batch.infrastructure.item.file.transform.Range;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.AutoConfiguration;
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.batch.autoconfigure.BatchAutoConfiguration;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.cloud.task.batch.autoconfigure.RangeConverter;
import org.springframework.context.annotation.Bean;

/**
 * Autconfiguration for a {@code FlatFileItemReader}.
 *
 * @author Michael Minella
 * @author Glenn Renfro
 * @since 2.3
 */
@AutoConfiguration
@EnableConfigurationProperties(FlatFileItemReaderProperties.class)
@AutoConfigureAfter(BatchAutoConfiguration.class)
public class FlatFileItemReaderAutoConfiguration {

	private static final Log logger = LogFactory.getLog(FlatFileItemReaderAutoConfiguration.class);

	private final FlatFileItemReaderProperties properties;

	public FlatFileItemReaderAutoConfiguration(FlatFileItemReaderProperties properties) {
		this.properties = properties;
	}

	@Bean
	@ConditionalOnMissingBean
	@ConditionalOnProperty(prefix = "spring.batch.job.flatfileitemreader", name = "name")
	public FlatFileItemReader<Map<String, Object>> itemReader(@Autowired(required = false) LineTokenizer lineTokenizer,
			@Autowired(required = false) FieldSetMapper<Map<String, Object>> fieldSetMapper,
			@Autowired(required = false) LineMapper<Map<String, Object>> lineMapper,
			@Autowired(required = false) LineCallbackHandler skippedLinesCallback,
			@Autowired(required = false) RecordSeparatorPolicy recordSeparatorPolicy) {
		FlatFileItemReaderBuilder<Map<String, Object>> mapFlatFileItemReaderBuilder = new FlatFileItemReaderBuilder<Map<String, Object>>()
			.name(this.properties.getName())
			.resource(this.properties.getResource())
			.saveState(this.properties.isSaveState())
			.maxItemCount(this.properties.getMaxItemCount())
			.currentItemCount(this.properties.getCurrentItemCount())
			.strict(this.properties.isStrict())
			.encoding(this.properties.getEncoding())
			.linesToSkip(this.properties.getLinesToSkip())
			.comments(this.properties.getComments().toArray(new String[this.properties.getComments().size()]));

		if (recordSeparatorPolicy != null) {
			mapFlatFileItemReaderBuilder.recordSeparatorPolicy(recordSeparatorPolicy);
		}
		mapFlatFileItemReaderBuilder.fieldSetMapper(fieldSetMapper);
		mapFlatFileItemReaderBuilder.lineMapper(lineMapper);
		mapFlatFileItemReaderBuilder.skippedLinesCallback(skippedLinesCallback);

		if (this.properties.isDelimited()) {
			mapFlatFileItemReaderBuilder.delimited()
				.quoteCharacter(this.properties.getQuoteCharacter())
				.delimiter(this.properties.getDelimiter())
				.includedFields(this.properties.getIncludedFields().toArray(new Integer[0]))
				.names(this.properties.getNames())
				.beanMapperStrict(this.properties.isParsingStrict())
				.fieldSetMapper(new MapFieldSetMapper());
		}
		else if (this.properties.isFixedLength()) {
			RangeConverter rangeConverter = new RangeConverter();
			List<Range> ranges = new ArrayList<>();
			this.properties.getRanges().forEach(range -> ranges.add(rangeConverter.convert(range)));
			mapFlatFileItemReaderBuilder.fixedLength()
				.columns(ranges.toArray(new Range[0]))
				.names(this.properties.getNames())
				.fieldSetMapper(new MapFieldSetMapper())
				.beanMapperStrict(this.properties.isParsingStrict());
		}
		else {
			mapFlatFileItemReaderBuilder.lineTokenizer(lineTokenizer);
		}

		if (lineTokenizer != null && (this.properties.isDelimited() || this.properties.isFixedLength())) {
			logger.warn("Custom LineTokenizer bean provided but will be ignored because "
					+ "delimited or fixed-length properties are configured. "
					+ "Remove the custom bean or clear delimited/fixedLength properties.");
		}

		return mapFlatFileItemReaderBuilder.build();
	}

	/**
	 * A {@link FieldSetMapper} that takes a {@code FieldSet} and returns the
	 * {@code Map<String, Object>} of its contents.
	 */
	public static class MapFieldSetMapper implements FieldSetMapper<Map<String, Object>> {

		@Override
		public Map<String, Object> mapFieldSet(FieldSet fieldSet) {
			Map<String, Object> map = new HashMap<>();
			fieldSet.getProperties().forEach((key, value) -> map.put(key.toString(), value));
			return map;
		}

	}

}


================================================
FILE: spring-cloud-starter-single-step-batch-job/src/main/java/org/springframework/cloud/task/batch/autoconfigure/flatfile/FlatFileItemReaderProperties.java
================================================
/*
 * Copyright 2019-present 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.
 * You may obtain a copy of the License at
 *
 *      https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.springframework.cloud.task.batch.autoconfigure.flatfile;

import java.util.ArrayList;
import java.util.List;

import org.springframework.batch.infrastructure.item.file.FlatFileItemReader;
import org.springframework.batch.infrastructure.item.file.transform.DelimitedLineTokenizer;
import org.springframework.batch.infrastructure.item.file.transform.Range;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.core.io.Resource;

/**
 * Properties to configure a {@code FlatFileItemReader}.
 *
 * @author Michael Minella
 * @since 2.3
 */
@ConfigurationProperties(prefix = "spring.batch.job.flatfileitemreader")
public class FlatFileItemReaderProperties {

	/**
	 * Determines whether the state of the reader is persisted. Default is {@code true}.
	 */
	private boolean saveState = true;

	/**
	 * The name used to calculate the key within the
	 * {@link org.springframework.batch.infrastructure.item.ExecutionContext}. Required if
	 * {@link #setSaveState} is set to {@code true}.
	 */
	private String name;

	/**
	 * Configure the maximum number of items to be read.
	 */
	private int maxItemCount = Integer.MAX_VALUE;

	/**
	 * Index for the current item. Also used on restarts to indicate where to start from.
	 */
	private int currentItemCount = 0;

	/**
	 * A list of {@code String} elements used to indicate which records are comments.
	 */
	private List<String> comments = new ArrayList<>();

	/**
	 * The {@link Resource} to be used as input.
	 */
	private Resource resource;

	/**
	 * Configure whether the reader should be in strict mode (require the input
	 * {@link Resource} to exist).
	 */
	private boolean strict = true;

	/**
	 * Configure the encoding used by the reader to read the input source. The default
	 * value is {@link FlatFileItemReader#DEFAULT_CHARSET}.
	 */
	private String encoding = FlatFileItemReader.DEFAULT_CHARSET;

	/**
	 * The number of lines to skip at the beginning of reading the file.
	 */
	private int linesToSkip = 0;

	/**
	 * Indicates that a {@link DelimitedLineTokenizer} should be used to parse each line.
	 */
	private boolean delimited = false;

	/**
	 * Define the delimiter for the file.
	 */
	private String delimiter = DelimitedLineTokenizer.DELIMITER_COMMA;

	/**
	 * Define the character used to quote fields.
	 */
	private char quoteCharacter = DelimitedLineTokenizer.DEFAULT_QUOTE_CHARACTER;

	/**
	 * A list of indices of the fields within a delimited file to be included.
	 */
	private List<Integer> includedFields = new ArrayList<>();

	/**
	 * Indicates that a
	 * {@link org.springframework.batch.infrastructure.item.file.transform.FixedLengthTokenizer}
	 * should be used to parse the records in the file.
	 */
	private boolean fixedLength = false;

	/**
	 * The column ranges to be used to parse a fixed width file.
	 */
	private List<String> ranges = new ArrayList<>();

	/**
	 * The names of the fields to be parsed from the file.
	 */
	private String[] names;

	/**
	 * Indicates whether the number of tokens must match the number of configured fields.
	 */
	private boolean parsingStrict = true;

	/**
	 * Returns the configured value of if the state of the reader will be persisted.
	 * @return true if the state will be persisted
	 */
	public boolean isSaveState() {
		return this.saveState;
	}

	/**
	 * Configure if the state of the
	 * {@link org.springframework.batch.infrastructure.item.ItemStreamSupport} should be
	 * persisted within the
	 * {@link org.springframework.batch.infrastructure.item.ExecutionContext} for restart
	 * purposes.
	 * @param saveState defaults to true
	 */
	public void setSaveState(boolean saveState) {
		this.saveState = saveState;
	}

	/**
	 * Returns the configured value of the name used to calculate {@code ExecutionContext}
	 * keys.
	 * @return the name
	 */
	public String getName() {
		return this.name;
	}

	/**
	 * The name used to calculate the key within the
	 * {@link org.springframework.batch.infrastructure.item.ExecutionContext}. Required if
	 * {@link #setSaveState} is set to true.
	 * @param name name of the reader instance
	 * @see org.springframework.batch.infrastructure.item.ItemStreamSupport#setName(String)
	 */
	public void setName(String name) {
		this.name = name;
	}

	/**
	 * The maximum number of items to be read.
	 * @return the configured number of items, defaults to Integer.MAX_VALUE
	 */
	public int getMaxItemCount() {
		return this.maxItemCount;
	}

	/**
	 * Configure the max number of items to be read.
	 * @param maxItemCount the max items to be read
	 * @see org.springframework.batch.infrastructure.item.support.AbstractItemCountingItemStreamItemReader#setMaxItemCount(int)
	 */
	public void setMaxItemCount(int maxItemCount) {
		this.maxItemCount = maxItemCount;
	}

	/**
	 * Provides the index of the current item.
	 * @return item index
	 */
	public int getCurrentItemCount() {
		return this.currentItemCount;
	}

	/**
	 * Index for the current item. Also used on restarts to indicate where to start from.
	 * @param currentItemCount current index
	 * @see org.springframework.batch.infrastructure.item.support.AbstractItemCountingItemStreamItemReader#setCurrentItemCount(int)
	 */
	public void setCurrentItemCount(int currentItemCount) {
		this.currentItemCount = currentItemCount;
	}

	/**
	 * List of {@code String} values used to indicate what records are comments.
	 * @return list of comment indicators
	 */
	public List<String> getComments() {
		return this.comments;
	}

	/**
	 * Takes a list of {@code String} elements used to indicate what records are comments.
	 * @param comments strings used to indicate commented lines
	 */
	public void setComments(List<String> comments) {
		this.comments = comments;
	}

	/**
	 * The input file for the {@code FlatFileItemReader}.
	 * @return a Resource
	 */
	public Resource getResource() {
		return this.resource;
	}

	/**
	 * The {@link Resource} to be used as input.
	 * @param resource the input to the reader.
	 * @see FlatFileItemReader#setResource(Resource)
	 */
	public void setResource(Resource resource) {
		this.resource = resource;
	}

	/**
	 * Returns true if a missing input file is considered an error.
	 * @return true if the input file is required.
	 */
	public boolean isStrict() {
		return this.strict;
	}

	/**
	 * Configure if the reader should be in strict mode (require the input
	 * {@link Resource} to exist).
	 * @param strict true if the input file is required to exist.
	 * @see FlatFileItemReader#setStrict(boolean)
	 */
	public void setStrict(boolean strict) {
		this.strict = strict;
	}

	/**
	 * Returns the encoding for the input file. Defaults to
	 * {@code FlatFileItemReader#DEFAULT_CHARSET}.
	 * @return the configured encoding
	 */
	public String getEncoding() {
		return this.encoding;
	}

	/**
	 * Configure the encoding used by the reader to read the input source. Default value
	 * is {@link FlatFileItemReader#DEFAULT_CHARSET}.
	 * @param encoding to use to read the input source.
	 * @see FlatFileItemReader#setEncoding(String)
	 */
	public void setEncoding(String encoding) {
		this.encoding = encoding;
	}

	/**
	 * Number of lines to skip when reading the input file.
	 * @return number of lines
	 */
	public 
Download .txt
gitextract_72_za3bm/

├── .editorconfig
├── .github/
│   ├── dco.yml
│   └── workflows/
│       ├── ci-maven-main.yml
│       ├── ci.yaml
│       └── deploy-docs.yml
├── .gitignore
├── .mvn/
│   ├── jvm.config
│   ├── maven.config
│   └── wrapper/
│       ├── maven-wrapper.jar
│       └── maven-wrapper.properties
├── .settings.xml
├── .springformat
├── CONTRIBUTING.adoc
├── LICENSE
├── README.adoc
├── docs/
│   ├── antora-playbook.yml
│   ├── antora.yml
│   ├── modules/
│   │   └── ROOT/
│   │       ├── nav.adoc
│   │       ├── pages/
│   │       │   ├── _attributes.adoc
│   │       │   ├── appendix-building-the-documentation.adoc
│   │       │   ├── appendix-task-repository-schema.adoc
│   │       │   ├── appendix.adoc
│   │       │   ├── batch-starter.adoc
│   │       │   ├── batch.adoc
│   │       │   ├── configprops.adoc
│   │       │   ├── features.adoc
│   │       │   ├── getting-started.adoc
│   │       │   ├── index.adoc
│   │       │   ├── observability.adoc
│   │       │   ├── preface.adoc
│   │       │   └── stream.adoc
│   │       └── partials/
│   │           ├── _configprops.adoc
│   │           ├── _conventions.adoc
│   │           ├── _metrics.adoc
│   │           └── _spans.adoc
│   ├── package.json
│   ├── pom.xml
│   └── src/
│       └── main/
│           ├── antora/
│           │   └── resources/
│           │       └── antora-resources/
│           │           └── antora.yml
│           ├── asciidoc/
│           │   ├── .gitignore
│           │   ├── Guardfile
│           │   ├── README.adoc
│           │   ├── index.htmladoc
│           │   ├── index.htmlsingleadoc
│           │   ├── index.pdfadoc
│           │   ├── sagan-index.adoc
│           │   ├── spring-cloud-task.epubadoc
│           │   ├── spring-cloud-task.htmlsingleadoc
│           │   └── spring-cloud-task.pdfadoc
│           └── javadoc/
│               └── spring-javadoc.css
├── mvnw
├── mvnw.cmd
├── pom.xml
├── spring-cloud-starter-single-step-batch-job/
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── org/
│       │   │       └── springframework/
│       │   │           └── cloud/
│       │   │               └── task/
│       │   │                   └── batch/
│       │   │                       └── autoconfigure/
│       │   │                           ├── RangeConverter.java
│       │   │                           ├── SingleStepJobAutoConfiguration.java
│       │   │                           ├── SingleStepJobProperties.java
│       │   │                           ├── flatfile/
│       │   │                           │   ├── FlatFileItemReaderAutoConfiguration.java
│       │   │                           │   ├── FlatFileItemReaderProperties.java
│       │   │                           │   ├── FlatFileItemWriterAutoConfiguration.java
│       │   │                           │   ├── FlatFileItemWriterProperties.java
│       │   │                           │   └── package-info.java
│       │   │                           ├── jdbc/
│       │   │                           │   ├── JDBCSingleStepDataSourceAutoConfiguration.java
│       │   │                           │   ├── JdbcBatchItemWriterAutoConfiguration.java
│       │   │                           │   ├── JdbcBatchItemWriterProperties.java
│       │   │                           │   ├── JdbcCursorItemReaderAutoConfiguration.java
│       │   │                           │   ├── JdbcCursorItemReaderProperties.java
│       │   │                           │   └── package-info.java
│       │   │                           ├── kafka/
│       │   │                           │   ├── KafkaItemReaderAutoConfiguration.java
│       │   │                           │   ├── KafkaItemReaderProperties.java
│       │   │                           │   ├── KafkaItemWriterAutoConfiguration.java
│       │   │                           │   ├── KafkaItemWriterProperties.java
│       │   │                           │   └── package-info.java
│       │   │                           ├── package-info.java
│       │   │                           └── rabbit/
│       │   │                               ├── AmqpItemReaderAutoConfiguration.java
│       │   │                               ├── AmqpItemReaderProperties.java
│       │   │                               ├── AmqpItemWriterAutoConfiguration.java
│       │   │                               ├── AmqpItemWriterProperties.java
│       │   │                               └── package-info.java
│       │   └── resources/
│       │       └── META-INF/
│       │           ├── spring/
│       │           │   └── org.springframework.boot.autoconfigure.AutoConfiguration.imports
│       │           └── spring-configuration-metadata.json
│       └── test/
│           ├── java/
│           │   └── org/
│           │       └── springframework/
│           │           └── cloud/
│           │               └── task/
│           │                   └── batch/
│           │                       └── autoconfigure/
│           │                           ├── RangeConverterTests.java
│           │                           ├── SingleStepJobAutoConfigurationTests.java
│           │                           ├── flatfile/
│           │                           │   ├── FlatFileItemReaderAutoConfigurationTests.java
│           │                           │   └── FlatFileItemWriterAutoConfigurationTests.java
│           │                           ├── jdbc/
│           │                           │   ├── JdbcBatchItemWriterAutoConfigurationTests.java
│           │                           │   └── JdbcCursorItemReaderAutoConfigurationTests.java
│           │                           ├── kafka/
│           │                           │   ├── KafkaItemReaderAutoConfigurationTests.java
│           │                           │   └── KafkaItemWriterTests.java
│           │                           └── rabbit/
│           │                               ├── AmqpItemReaderAutoConfigurationTests.java
│           │                               └── AmqpItemWriterAutoConfigurationTests.java
│           └── resources/
│               ├── logback-test.xml
│               ├── schema-h2.sql
│               ├── test.txt
│               ├── testUTF16.csv
│               ├── testUTF8.csv
│               └── writerTestUTF16.txt
├── spring-cloud-starter-task/
│   └── pom.xml
├── spring-cloud-task-batch/
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── org/
│       │   │       └── springframework/
│       │   │           └── cloud/
│       │   │               └── task/
│       │   │                   └── batch/
│       │   │                       ├── configuration/
│       │   │                       │   ├── JobLaunchCondition.java
│       │   │                       │   ├── TaskBatchAutoConfiguration.java
│       │   │                       │   ├── TaskBatchExecutionListenerBeanPostProcessor.java
│       │   │                       │   ├── TaskBatchExecutionListenerFactoryBean.java
│       │   │                       │   ├── TaskBatchProperties.java
│       │   │                       │   ├── TaskJobLauncherApplicationRunnerFactoryBean.java
│       │   │                       │   ├── TaskJobLauncherAutoConfiguration.java
│       │   │                       │   └── package-info.java
│       │   │                       ├── handler/
│       │   │                       │   ├── TaskJobLauncherApplicationRunner.java
│       │   │                       │   └── package-info.java
│       │   │                       └── listener/
│       │   │                           ├── TaskBatchDao.java
│       │   │                           ├── TaskBatchExecutionListener.java
│       │   │                           ├── package-info.java
│       │   │                           └── support/
│       │   │                               ├── JdbcTaskBatchDao.java
│       │   │                               ├── MapTaskBatchDao.java
│       │   │                               └── package-info.java
│       │   └── resources/
│       │       └── META-INF/
│       │           ├── additional-spring-configuration-metadata.json
│       │           └── spring/
│       │               └── org.springframework.boot.autoconfigure.AutoConfiguration.imports
│       └── test/
│           ├── java/
│           │   └── org/
│           │       └── springframework/
│           │           └── cloud/
│           │               └── task/
│           │                   └── batch/
│           │                       ├── configuration/
│           │                       │   ├── TaskBatchTest.java
│           │                       │   └── TaskJobLauncherAutoConfigurationTests.java
│           │                       ├── handler/
│           │                       │   ├── TaskJobLauncherApplicationRunnerCoreTests.java
│           │                       │   └── TaskJobLauncherApplicationRunnerTests.java
│           │                       └── listener/
│           │                           ├── PrefixTests.java
│           │                           ├── PrimaryKeyTests.java
│           │                           └── TaskBatchExecutionListenerTests.java
│           └── resources/
│               ├── META-INF/
│               │   └── spring/
│               │       └── org.springframework.cloud.task.batch.configuration.TaskBatchTest.imports
│               ├── schema-h2.sql
│               └── schema-with-primary-keys-h2.sql
├── spring-cloud-task-core/
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── org/
│       │   │       └── springframework/
│       │   │           └── cloud/
│       │   │               └── task/
│       │   │                   ├── configuration/
│       │   │                   │   ├── DefaultTaskConfigurer.java
│       │   │                   │   ├── EnableTask.java
│       │   │                   │   ├── NoTransactionManagerProperty.java
│       │   │                   │   ├── SimpleTaskAutoConfiguration.java
│       │   │                   │   ├── SingleInstanceTaskListener.java
│       │   │                   │   ├── SingleTaskConfiguration.java
│       │   │                   │   ├── TaskConfigurer.java
│       │   │                   │   ├── TaskLifecycleConfiguration.java
│       │   │                   │   ├── TaskObservationCloudKeyValues.java
│       │   │                   │   ├── TaskProperties.java
│       │   │                   │   ├── TaskRepositoryDatabaseInitializerDetector.java
│       │   │                   │   ├── TaskRepositoryDependsOnDatabaseInitializationDetector.java
│       │   │                   │   ├── TaskRuntimeHints.java
│       │   │                   │   ├── observation/
│       │   │                   │   │   ├── DefaultTaskObservationConvention.java
│       │   │                   │   │   ├── ObservationApplicationRunner.java
│       │   │                   │   │   ├── ObservationApplicationRunnerBeanPostProcessor.java
│       │   │                   │   │   ├── ObservationCommandLineRunner.java
│       │   │                   │   │   ├── ObservationCommandLineRunnerBeanPostProcessor.java
│       │   │                   │   │   ├── ObservationTaskAutoConfiguration.java
│       │   │                   │   │   ├── TaskDocumentedObservation.java
│       │   │                   │   │   ├── TaskObservationContext.java
│       │   │                   │   │   ├── TaskObservationConvention.java
│       │   │                   │   │   └── package-info.java
│       │   │                   │   └── package-info.java
│       │   │                   ├── listener/
│       │   │                   │   ├── DefaultTaskExecutionObservationConvention.java
│       │   │                   │   ├── TaskException.java
│       │   │                   │   ├── TaskExecutionException.java
│       │   │                   │   ├── TaskExecutionListener.java
│       │   │                   │   ├── TaskExecutionListenerSupport.java
│       │   │                   │   ├── TaskExecutionObservation.java
│       │   │                   │   ├── TaskExecutionObservationContext.java
│       │   │                   │   ├── TaskExecutionObservationConvention.java
│       │   │                   │   ├── TaskLifecycleListener.java
│       │   │                   │   ├── TaskListenerExecutorObjectFactory.java
│       │   │                   │   ├── TaskObservations.java
│       │   │                   │   ├── annotation/
│       │   │                   │   │   ├── AfterTask.java
│       │   │                   │   │   ├── BeforeTask.java
│       │   │                   │   │   ├── FailedTask.java
│       │   │                   │   │   ├── TaskListenerExecutor.java
│       │   │                   │   │   └── package-info.java
│       │   │                   │   └── package-info.java
│       │   │                   ├── package-info.java
│       │   │                   └── repository/
│       │   │                       ├── TaskExecution.java
│       │   │                       ├── TaskExplorer.java
│       │   │                       ├── TaskNameResolver.java
│       │   │                       ├── TaskRepository.java
│       │   │                       ├── dao/
│       │   │                       │   ├── JdbcTaskExecutionDao.java
│       │   │                       │   ├── MapTaskExecutionDao.java
│       │   │                       │   ├── TaskExecutionDao.java
│       │   │                       │   └── package-info.java
│       │   │                       ├── database/
│       │   │                       │   ├── PagingQueryProvider.java
│       │   │                       │   ├── package-info.java
│       │   │                       │   └── support/
│       │   │                       │       ├── AbstractSqlPagingQueryProvider.java
│       │   │                       │       ├── Db2PagingQueryProvider.java
│       │   │                       │       ├── H2PagingQueryProvider.java
│       │   │                       │       ├── HsqlPagingQueryProvider.java
│       │   │                       │       ├── MariaDbPagingQueryProvider.java
│       │   │                       │       ├── MySqlPagingQueryProvider.java
│       │   │                       │       ├── OraclePagingQueryProvider.java
│       │   │                       │       ├── PostgresPagingQueryProvider.java
│       │   │                       │       ├── SqlPagingQueryProviderFactoryBean.java
│       │   │                       │       ├── SqlPagingQueryUtils.java
│       │   │                       │       ├── SqlServerPagingQueryProvider.java
│       │   │                       │       └── package-info.java
│       │   │                       ├── package-info.java
│       │   │                       └── support/
│       │   │                           ├── DatabaseType.java
│       │   │                           ├── SimpleTaskExplorer.java
│       │   │                           ├── SimpleTaskNameResolver.java
│       │   │                           ├── SimpleTaskRepository.java
│       │   │                           ├── TaskExecutionDaoFactoryBean.java
│       │   │                           ├── TaskRepositoryInitializer.java
│       │   │                           └── package-info.java
│       │   └── resources/
│       │       ├── META-INF/
│       │       │   ├── additional-spring-configuration-metadata.json
│       │       │   ├── spring/
│       │       │   │   ├── aot.factories
│       │       │   │   └── org.springframework.boot.autoconfigure.AutoConfiguration.imports
│       │       │   └── spring.factories
│       │       └── org/
│       │           └── springframework/
│       │               └── cloud/
│       │                   └── task/
│       │                       ├── migration/
│       │                       │   ├── 1.1.x/
│       │                       │   │   ├── migration-h2.sql
│       │                       │   │   ├── migration-hsqldb.sql
│       │                       │   │   ├── migration-mysql.sql
│       │                       │   │   ├── migration-oracle.sql
│       │                       │   │   ├── migration-postgresql.sql
│       │                       │   │   └── migration-sqlserver.sql
│       │                       │   ├── 1.2.x/
│       │                       │   │   ├── migration-db2.sql
│       │                       │   │   ├── migration-h2.sql
│       │                       │   │   ├── migration-hsqldb.sql
│       │                       │   │   ├── migration-mysql.sql
│       │                       │   │   ├── migration-oracle.sql
│       │                       │   │   ├── migration-postgresql.sql
│       │                       │   │   └── migration-sqlserver.sql
│       │                       │   ├── 2.2.x/
│       │                       │   │   └── migration-oracle.sql
│       │                       │   └── 3.0.x/
│       │                       │       ├── migration-db2.sql
│       │                       │       ├── migration-h2.sql
│       │                       │       ├── migration-hsqldb.sql
│       │                       │       ├── migration-mysql.sql
│       │                       │       └── migration-oracle.sql
│       │                       ├── schema-db2.sql
│       │                       ├── schema-h2.sql
│       │                       ├── schema-hsqldb.sql
│       │                       ├── schema-mariadb.sql
│       │                       ├── schema-mysql.sql
│       │                       ├── schema-oracle.sql
│       │                       ├── schema-postgresql.sql
│       │                       └── schema-sqlserver.sql
│       └── test/
│           ├── java/
│           │   └── org/
│           │       └── springframework/
│           │           └── cloud/
│           │               └── task/
│           │                   ├── SimpleSingleTaskAutoConfigurationTests.java
│           │                   ├── SimpleSingleTaskAutoConfigurationWithDataSourceTests.java
│           │                   ├── SimpleTaskAutoConfigurationTests.java
│           │                   ├── TaskCoreTests.java
│           │                   ├── TaskRepositoryInitializerDefaultTaskConfigurerTests.java
│           │                   ├── TaskRepositoryInitializerNoDataSourceTaskConfigurerTests.java
│           │                   ├── configuration/
│           │                   │   ├── DefaultTaskConfigurerTests.java
│           │                   │   ├── RepositoryTransactionManagerConfigurationTests.java
│           │                   │   ├── TaskPropertiesTests.java
│           │                   │   ├── TestConfiguration.java
│           │                   │   └── observation/
│           │                   │       └── ObservationIntegrationTests.java
│           │                   ├── listener/
│           │                   │   ├── TaskExceptionTests.java
│           │                   │   ├── TaskExecutionListenerTests.java
│           │                   │   ├── TaskLifecycleListenerTests.java
│           │                   │   └── TaskListenerExecutorObjectFactoryTests.java
│           │                   ├── micrometer/
│           │                   │   └── TaskObservationsTests.java
│           │                   ├── repository/
│           │                   │   ├── H2TaskRepositoryIntegrationTests.java
│           │                   │   ├── MariaDbTaskRepositoryIntegrationTests.java
│           │                   │   ├── dao/
│           │                   │   │   ├── BaseTaskExecutionDaoTestCases.java
│           │                   │   │   ├── JdbcTaskExecutionDaoMariaDBIntegrationTests.java
│           │                   │   │   └── TaskExecutionDaoTests.java
│           │                   │   ├── database/
│           │                   │   │   └── support/
│           │                   │   │       ├── FindAllPagingQueryProviderTests.java
│           │                   │   │       ├── H2PagingQueryProviderTests.java
│           │                   │   │       ├── InvalidPagingQueryProviderTests.java
│           │                   │   │       ├── SqlPagingQueryProviderFactoryBeanTests.java
│           │                   │   │       └── WhereClausePagingQueryProviderTests.java
│           │                   │   └── support/
│           │                   │       ├── DatabaseTypeTests.java
│           │                   │       ├── SimpleTaskExplorerTests.java
│           │                   │       ├── SimpleTaskNameResolverTests.java
│           │                   │       ├── SimpleTaskRepositoryJdbcTests.java
│           │                   │       ├── SimpleTaskRepositoryMapTests.java
│           │                   │       ├── TaskDatabaseInitializerTests.java
│           │                   │       └── TaskExecutionDaoFactoryBeanTests.java
│           │                   └── util/
│           │                       ├── TaskExecutionCreator.java
│           │                       ├── TestDBUtils.java
│           │                       ├── TestDefaultConfiguration.java
│           │                       ├── TestListener.java
│           │                       └── TestVerifierUtils.java
│           └── resources/
│               ├── application.properties
│               └── micrometer/
│                   └── pcf-scs-info.json
├── spring-cloud-task-dependencies/
│   └── pom.xml
├── spring-cloud-task-integration-tests/
│   ├── pom.xml
│   └── src/
│       └── test/
│           ├── java/
│           │   ├── configuration/
│           │   │   ├── JobConfiguration.java
│           │   │   ├── JobSkipConfiguration.java
│           │   │   ├── SkipItemReader.java
│           │   │   └── SkipItemWriter.java
│           │   └── org/
│           │       └── springframework/
│           │           └── cloud/
│           │               └── task/
│           │                   ├── executionid/
│           │                   │   ├── TaskStartApplication.java
│           │                   │   └── TaskStartTests.java
│           │                   ├── initializer/
│           │                   │   └── TaskInitializerTests.java
│           │                   └── listener/
│           │                       ├── BatchExecutionEventTests.java
│           │                       └── TaskEventTests.java
│           └── resources/
│               ├── application.properties
│               └── org/
│                   └── springframework/
│                       └── cloud/
│                           └── task/
│                               └── listener/
│                                   ├── chunk-events-sink-channel.properties
│                                   ├── item-process-sink-channel.properties
│                                   ├── item-read-events-sink-channel.properties
│                                   ├── item-write-events-sink-channel.properties
│                                   ├── job-execution-sink-channel.properties
│                                   ├── sink-channel.properties
│                                   ├── skip-events-sink-channel.properties
│                                   └── step-execution-sink-channel.properties
├── spring-cloud-task-samples/
│   ├── batch-events/
│   │   ├── .mvn/
│   │   │   └── wrapper/
│   │   │       ├── maven-wrapper.jar
│   │   │       └── maven-wrapper.properties
│   │   ├── README.adoc
│   │   ├── mvnw
│   │   ├── mvnw.cmd
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── io/
│   │       │   │       └── spring/
│   │       │   │           └── cloud/
│   │       │   │               ├── BatchEventsApplication.java
│   │       │   │               └── package-info.java
│   │       │   └── resources/
│   │       │       ├── application.properties
│   │       │       └── logback-test.xml
│   │       └── test/
│   │           ├── java/
│   │           │   └── io/
│   │           │       └── spring/
│   │           │           └── cloud/
│   │           │               └── BatchEventsApplicationTests.java
│   │           └── resources/
│   │               └── io/
│   │                   └── spring/
│   │                       └── task/
│   │                           └── listener/
│   │                               └── job-listener-sink-channel.properties
│   ├── batch-job/
│   │   ├── .mvn/
│   │   │   └── wrapper/
│   │   │       ├── maven-wrapper.jar
│   │   │       └── maven-wrapper.properties
│   │   ├── README.adoc
│   │   ├── mvnw
│   │   ├── mvnw.cmd
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── io/
│   │       │   │       └── spring/
│   │       │   │           ├── BatchJobApplication.java
│   │       │   │           ├── configuration/
│   │       │   │           │   ├── JobConfiguration.java
│   │       │   │           │   └── package-info.java
│   │       │   │           └── package-info.java
│   │       │   └── resources/
│   │       │       └── application.properties
│   │       └── test/
│   │           ├── java/
│   │           │   └── io/
│   │           │       └── spring/
│   │           │           ├── BatchJobApplicationTests.java
│   │           │           ├── BatchJobTestConfiguration.java
│   │           │           └── TestBatchJobApp.java
│   │           └── resources/
│   │               └── application.properties
│   ├── jpa-sample/
│   │   ├── .mvn/
│   │   │   └── wrapper/
│   │   │       ├── maven-wrapper.jar
│   │   │       └── maven-wrapper.properties
│   │   ├── README.adoc
│   │   ├── mvnw
│   │   ├── mvnw.cmd
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── io/
│   │       │   │       └── spring/
│   │       │   │           ├── JpaApplication.java
│   │       │   │           ├── configuration/
│   │       │   │           │   ├── TaskRunComponent.java
│   │       │   │           │   ├── TaskRunOutput.java
│   │       │   │           │   ├── TaskRunRepository.java
│   │       │   │           │   └── package-info.java
│   │       │   │           └── package-info.java
│   │       │   └── resources/
│   │       │       ├── application-cloud.yml
│   │       │       └── application.yml
│   │       └── test/
│   │           ├── java/
│   │           │   └── io/
│   │           │       └── spring/
│   │           │           └── JpaApplicationTests.java
│   │           └── resources/
│   │               └── application.properties
│   ├── multiple-datasources/
│   │   ├── .mvn/
│   │   │   └── wrapper/
│   │   │       ├── maven-wrapper.jar
│   │   │       └── maven-wrapper.properties
│   │   ├── README.adoc
│   │   ├── mvnw
│   │   ├── mvnw.cmd
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── io/
│   │       │   │       └── spring/
│   │       │   │           ├── MultipleDataSourcesApplication.java
│   │       │   │           ├── configuration/
│   │       │   │           │   ├── CustomTaskConfigurer.java
│   │       │   │           │   ├── EmbeddedDataSourceConfiguration.java
│   │       │   │           │   ├── ExternalDataSourceConfiguration.java
│   │       │   │           │   └── package-info.java
│   │       │   │           ├── package-info.java
│   │       │   │           └── task/
│   │       │   │               ├── SampleCommandLineRunner.java
│   │       │   │               └── package-info.java
│   │       │   └── resources/
│   │       │       └── application.properties
│   │       └── test/
│   │           ├── java/
│   │           │   └── io/
│   │           │       └── spring/
│   │           │           ├── MultiDataSourcesApplicationTests.java
│   │           │           └── MultiDataSourcesExternalApplicationTests.java
│   │           └── resources/
│   │               └── application.properties
│   ├── pom.xml
│   ├── single-step-batch-job/
│   │   ├── .mvn/
│   │   │   └── wrapper/
│   │   │       ├── maven-wrapper.jar
│   │   │       └── maven-wrapper.properties
│   │   ├── README.adoc
│   │   ├── mvnw
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── io/
│   │       │   │       └── spring/
│   │       │   │           ├── SingleStepBatchJobApplication.java
│   │       │   │           └── package-info.java
│   │       │   └── resources/
│   │       │       ├── application-amqpreader.properties
│   │       │       ├── application-amqpwriter.properties
│   │       │       ├── application-ffreader.properties
│   │       │       ├── application-ffwriter.properties
│   │       │       ├── application-jdbcreader.properties
│   │       │       ├── application-jdbcwriter.properties
│   │       │       ├── application-kafkareader.properties
│   │       │       ├── application-kafkawriter.properties
│   │       │       ├── application.properties
│   │       │       └── test.txt
│   │       └── test/
│   │           ├── java/
│   │           │   └── io/
│   │           │       └── spring/
│   │           │           └── BatchJobApplicationTests.java
│   │           └── resources/
│   │               ├── schema-h2.sql
│   │               ├── test.txt
│   │               └── testresult.txt
│   ├── task-events/
│   │   ├── .mvn/
│   │   │   └── wrapper/
│   │   │       ├── maven-wrapper.jar
│   │   │       └── maven-wrapper.properties
│   │   ├── README.adoc
│   │   ├── mvnw
│   │   ├── mvnw.cmd
│   │   ├── pom.xml
│   │   └── src/
│   │       └── main/
│   │           ├── java/
│   │           │   └── io/
│   │           │       └── spring/
│   │           │           ├── TaskEventsApplication.java
│   │           │           └── package-info.java
│   │           └── resources/
│   │               └── application.properties
│   ├── task-observations/
│   │   ├── .gitignore
│   │   ├── .mvn/
│   │   │   └── wrapper/
│   │   │       ├── maven-wrapper.jar
│   │   │       └── maven-wrapper.properties
│   │   ├── README.adoc
│   │   ├── mvnw
│   │   ├── mvnw.cmd
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   ├── java/
│   │       │   │   └── io/
│   │       │   │       └── spring/
│   │       │   │           └── taskobservations/
│   │       │   │               ├── ObservationConfiguration.java
│   │       │   │               ├── TaskObservationsApplication.java
│   │       │   │               └── package-info.java
│   │       │   └── resources/
│   │       │       └── application.properties
│   │       └── test/
│   │           └── java/
│   │               └── io/
│   │                   └── spring/
│   │                       └── taskobservations/
│   │                           └── TaskObservationsApplicationTests.java
│   └── timestamp/
│       ├── README.adoc
│       ├── pom.xml
│       └── src/
│           ├── main/
│           │   ├── java/
│           │   │   └── org/
│           │   │       └── springframework/
│           │   │           └── cloud/
│           │   │               └── task/
│           │   │                   └── timestamp/
│           │   │                       ├── TaskApplication.java
│           │   │                       ├── TimestampTaskProperties.java
│           │   │                       └── package-info.java
│           │   └── resources/
│           │       └── application.properties
│           └── test/
│               ├── java/
│               │   └── org/
│               │       └── springframework/
│               │           └── cloud/
│               │               └── task/
│               │                   └── timestamp/
│               │                       ├── TaskApplicationTests.java
│               │                       └── TimestampTaskPropertiesTests.java
│               └── resources/
│                   └── application.properties
├── spring-cloud-task-stream/
│   ├── .mvn/
│   │   └── wrapper/
│   │       ├── maven-wrapper.jar
│   │       └── maven-wrapper.properties
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── org/
│       │   │       └── springframework/
│       │   │           └── cloud/
│       │   │               └── task/
│       │   │                   ├── batch/
│       │   │                   │   └── listener/
│       │   │                   │       ├── BatchEventAutoConfiguration.java
│       │   │                   │       ├── EventEmittingChunkListener.java
│       │   │                   │       ├── EventEmittingItemProcessListener.java
│       │   │                   │       ├── EventEmittingItemReadListener.java
│       │   │                   │       ├── EventEmittingItemWriteListener.java
│       │   │                   │       ├── EventEmittingJobExecutionListener.java
│       │   │                   │       ├── EventEmittingSkipListener.java
│       │   │                   │       ├── EventEmittingStepExecutionListener.java
│       │   │                   │       ├── package-info.java
│       │   │                   │       └── support/
│       │   │                   │           ├── BatchJobHeaders.java
│       │   │                   │           ├── ExitStatus.java
│       │   │                   │           ├── JobExecutionEvent.java
│       │   │                   │           ├── JobInstanceEvent.java
│       │   │                   │           ├── JobParameterEvent.java
│       │   │                   │           ├── JobParametersEvent.java
│       │   │                   │           ├── MessagePublisher.java
│       │   │                   │           ├── StepExecutionEvent.java
│       │   │                   │           ├── TaskBatchEventListenerBeanPostProcessor.java
│       │   │                   │           ├── TaskEventProperties.java
│       │   │                   │           └── package-info.java
│       │   │                   └── listener/
│       │   │                       ├── TaskEventAutoConfiguration.java
│       │   │                       └── package-info.java
│       │   └── resources/
│       │       ├── META-INF/
│       │       │   ├── additional-spring-configuration-metadata.json
│       │       │   └── spring/
│       │       │       └── org.springframework.boot.autoconfigure.AutoConfiguration.imports
│       │       └── org/
│       │           └── springframework/
│       │               └── cloud/
│       │                   └── task/
│       │                       └── application.properties
│       └── test/
│           └── java/
│               └── org/
│                   └── springframework/
│                       └── cloud/
│                           └── task/
│                               ├── batch/
│                               │   └── listener/
│                               │       ├── EventListenerTests.java
│                               │       ├── JobExecutionEventTests.java
│                               │       ├── JobInstanceEventTests.java
│                               │       ├── JobParameterEventTests.java
│                               │       ├── JobParametersEventTests.java
│                               │       ├── StepExecutionEventTests.java
│                               │       ├── TaskBatchEventListenerBeanPostProcessorTests.java
│                               │       └── support/
│                               │           └── TaskBatchEventListenerBeanPostProcessorRuntimeHintTests.java
│                               └── listener/
│                                   └── TaskEventTests.java
└── src/
    └── checkstyle/
        └── checkstyle-suppressions.xml
Download .txt
SYMBOL INDEX (1941 symbols across 222 files)

FILE: spring-cloud-starter-single-step-batch-job/src/main/java/org/springframework/cloud/task/batch/autoconfigure/RangeConverter.java
  class RangeConverter (line 31) | public class RangeConverter implements Converter<String, Range> {
    method convert (line 33) | @Override

FILE: spring-cloud-starter-single-step-batch-job/src/main/java/org/springframework/cloud/task/batch/autoconfigure/SingleStepJobAutoConfiguration.java
  class SingleStepJobAutoConfiguration (line 48) | @AutoConfiguration
    method SingleStepJobAutoConfiguration (line 64) | public SingleStepJobAutoConfiguration(SingleStepJobProperties properti...
    method validateProperties (line 70) | private void validateProperties(SingleStepJobProperties properties) {
    method job (line 77) | @Bean

FILE: spring-cloud-starter-single-step-batch-job/src/main/java/org/springframework/cloud/task/batch/autoconfigure/SingleStepJobProperties.java
  class SingleStepJobProperties (line 27) | @ConfigurationProperties(prefix = "spring.batch.job")
    method getStepName (line 49) | public String getStepName() {
    method setStepName (line 57) | public void setStepName(String stepName) {
    method getChunkSize (line 65) | public Integer getChunkSize() {
    method setChunkSize (line 73) | public void setChunkSize(Integer chunkSize) {
    method getJobName (line 81) | public String getJobName() {
    method setJobName (line 89) | public void setJobName(String jobName) {

FILE: spring-cloud-starter-single-step-batch-job/src/main/java/org/springframework/cloud/task/batch/autoconfigure/flatfile/FlatFileItemReaderAutoConfiguration.java
  class FlatFileItemReaderAutoConfiguration (line 53) | @AutoConfiguration
    method FlatFileItemReaderAutoConfiguration (line 62) | public FlatFileItemReaderAutoConfiguration(FlatFileItemReaderPropertie...
    method itemReader (line 66) | @Bean
    class MapFieldSetMapper (line 128) | public static class MapFieldSetMapper implements FieldSetMapper<Map<St...
      method mapFieldSet (line 130) | @Override

FILE: spring-cloud-starter-single-step-batch-job/src/main/java/org/springframework/cloud/task/batch/autoconfigure/flatfile/FlatFileItemReaderProperties.java
  class FlatFileItemReaderProperties (line 34) | @ConfigurationProperties(prefix = "spring.batch.job.flatfileitemreader")
    method isSaveState (line 132) | public boolean isSaveState() {
    method setSaveState (line 144) | public void setSaveState(boolean saveState) {
    method getName (line 153) | public String getName() {
    method setName (line 164) | public void setName(String name) {
    method getMaxItemCount (line 172) | public int getMaxItemCount() {
    method setMaxItemCount (line 181) | public void setMaxItemCount(int maxItemCount) {
    method getCurrentItemCount (line 189) | public int getCurrentItemCount() {
    method setCurrentItemCount (line 198) | public void setCurrentItemCount(int currentItemCount) {
    method getComments (line 206) | public List<String> getComments() {
    method setComments (line 214) | public void setComments(List<String> comments) {
    method getResource (line 222) | public Resource getResource() {
    method setResource (line 231) | public void setResource(Resource resource) {
    method isStrict (line 239) | public boolean isStrict() {
    method setStrict (line 249) | public void setStrict(boolean strict) {
    method getEncoding (line 258) | public String getEncoding() {
    method setEncoding (line 268) | public void setEncoding(String encoding) {
    method getLinesToSkip (line 276) | public int getLinesToSkip() {
    method setLinesToSkip (line 285) | public void setLinesToSkip(int linesToSkip) {
    method isDelimited (line 293) | public boolean isDelimited() {
    method setDelimited (line 301) | public void setDelimited(boolean delimited) {
    method getDelimiter (line 309) | public String getDelimiter() {
    method setDelimiter (line 318) | public void setDelimiter(String delimiter) {
    method getQuoteCharacter (line 326) | public char getQuoteCharacter() {
    method setQuoteCharacter (line 335) | public void setQuoteCharacter(char quoteCharacter) {
    method getIncludedFields (line 343) | public List<Integer> getIncludedFields() {
    method setIncludedFields (line 352) | public void setIncludedFields(List<Integer> includedFields) {
    method isFixedLength (line 360) | public boolean isFixedLength() {
    method setFixedLength (line 370) | public void setFixedLength(boolean fixedLength) {
    method getRanges (line 378) | public List<String> getRanges() {
    method setRanges (line 386) | public void setRanges(List<String> ranges) {
    method getNames (line 394) | public String[] getNames() {
    method setNames (line 402) | public void setNames(String[] names) {
    method isParsingStrict (line 410) | public boolean isParsingStrict() {
    method setParsingStrict (line 418) | public void setParsingStrict(boolean parsingStrict) {

FILE: spring-cloud-starter-single-step-batch-job/src/main/java/org/springframework/cloud/task/batch/autoconfigure/flatfile/FlatFileItemWriterAutoConfiguration.java
  class FlatFileItemWriterAutoConfiguration (line 45) | @AutoConfiguration
    method FlatFileItemWriterAutoConfiguration (line 64) | public FlatFileItemWriterAutoConfiguration(FlatFileItemWriterPropertie...
    method itemWriter (line 68) | @Bean
    class MapFieldExtractor (line 132) | public static class MapFieldExtractor implements FieldExtractor<Map<St...
      method MapFieldExtractor (line 136) | public MapFieldExtractor(String[] names) {
      method extract (line 140) | @Override

FILE: spring-cloud-starter-single-step-batch-job/src/main/java/org/springframework/cloud/task/batch/autoconfigure/flatfile/FlatFileItemWriterProperties.java
  class FlatFileItemWriterProperties (line 31) | @ConfigurationProperties(prefix = "spring.batch.job.flatfileitemwriter")
    method isSaveState (line 139) | public boolean isSaveState() {
    method setSaveState (line 151) | public void setSaveState(boolean saveState) {
    method getName (line 160) | public String getName() {
    method setName (line 171) | public void setName(String name) {
    method getResource (line 179) | public Resource getResource() {
    method setResource (line 188) | public void setResource(Resource resource) {
    method isDelimited (line 196) | public boolean isDelimited() {
    method setDelimited (line 205) | public void setDelimited(boolean delimited) {
    method getDelimiter (line 214) | public String getDelimiter() {
    method setDelimiter (line 222) | public void setDelimiter(String delimiter) {
    method getNames (line 230) | public String[] getNames() {
    method setNames (line 238) | public void setNames(String[] names) {
    method isAppend (line 247) | public boolean isAppend() {
    method setAppend (line 256) | public void setAppend(boolean append) {
    method isFormatted (line 264) | public boolean isFormatted() {
    method setFormatted (line 273) | public void setFormatted(boolean formatted) {
    method getEncoding (line 282) | public String getEncoding() {
    method setEncoding (line 290) | public void setEncoding(String encoding) {
    method isForceSync (line 299) | public boolean isForceSync() {
    method setForceSync (line 308) | public void setForceSync(boolean forceSync) {
    method getLineSeparator (line 317) | public String getLineSeparator() {
    method setLineSeparator (line 325) | public void setLineSeparator(String lineSeparator) {
    method isShouldDeleteIfEmpty (line 334) | public boolean isShouldDeleteIfEmpty() {
    method setShouldDeleteIfEmpty (line 344) | public void setShouldDeleteIfEmpty(boolean shouldDeleteIfEmpty) {
    method isShouldDeleteIfExists (line 353) | public boolean isShouldDeleteIfExists() {
    method setShouldDeleteIfExists (line 363) | public void setShouldDeleteIfExists(boolean shouldDeleteIfExists) {
    method isTransactional (line 372) | public boolean isTransactional() {
    method setTransactional (line 380) | public void setTransactional(boolean transactional) {
    method getFormat (line 388) | public String getFormat() {
    method setFormat (line 396) | public void setFormat(String format) {
    method getLocale (line 404) | public Locale getLocale() {
    method setLocale (line 412) | public void setLocale(Locale locale) {
    method getMaximumLength (line 420) | public int getMaximumLength() {
    method setMaximumLength (line 428) | public void setMaximumLength(int maximumLength) {
    method getMinimumLength (line 436) | public int getMinimumLength() {
    method setMinimumLength (line 444) | public void setMinimumLength(int minimumLength) {

FILE: spring-cloud-starter-single-step-batch-job/src/main/java/org/springframework/cloud/task/batch/autoconfigure/jdbc/JDBCSingleStepDataSourceAutoConfiguration.java
  class JDBCSingleStepDataSourceAutoConfiguration (line 40) | class JDBCSingleStepDataSourceAutoConfiguration {
    method myTaskConfigurer (line 42) | @ConditionalOnMissingBean
    method springDataSourceProperties (line 48) | @ConditionalOnProperty(prefix = "spring.batch.job.jdbcsinglestep.datas...
    method dataSource (line 58) | @ConditionalOnProperty(prefix = "spring.batch.job.jdbcsinglestep.datas...

FILE: spring-cloud-starter-single-step-batch-job/src/main/java/org/springframework/cloud/task/batch/autoconfigure/jdbc/JdbcBatchItemWriterAutoConfiguration.java
  class JdbcBatchItemWriterAutoConfiguration (line 51) | @AutoConfiguration
    method JdbcBatchItemWriterAutoConfiguration (line 72) | public JdbcBatchItemWriterAutoConfiguration(DataSource dataSource, Jdb...
    method itemWriter (line 77) | @Bean
    method jdbcBatchItemWriterDataSourceProperties (line 105) | @ConditionalOnProperty(prefix = "spring.batch.job.jdbcbatchitemwriter....
    method writerDataSource (line 113) | @ConditionalOnProperty(prefix = "spring.batch.job.jdbcbatchitemwriter....

FILE: spring-cloud-starter-single-step-batch-job/src/main/java/org/springframework/cloud/task/batch/autoconfigure/jdbc/JdbcBatchItemWriterProperties.java
  class JdbcBatchItemWriterProperties (line 27) | @ConfigurationProperties(prefix = "spring.batch.job.jdbcbatchitemwriter")
    method getSql (line 50) | public String getSql() {
    method setSql (line 58) | public void setSql(String sql) {
    method isAssertUpdates (line 66) | public boolean isAssertUpdates() {
    method setAssertUpdates (line 74) | public void setAssertUpdates(boolean assertUpdates) {
    method getName (line 83) | public String getName() {
    method setName (line 93) | public void setName(String name) {

FILE: spring-cloud-starter-single-step-batch-job/src/main/java/org/springframework/cloud/task/batch/autoconfigure/jdbc/JdbcCursorItemReaderAutoConfiguration.java
  class JdbcCursorItemReaderAutoConfiguration (line 52) | @AutoConfiguration
    method JdbcCursorItemReaderAutoConfiguration (line 68) | public JdbcCursorItemReaderAutoConfiguration(JdbcCursorItemReaderPrope...
    method itemReader (line 73) | @Bean
    method rowMapper (line 105) | @Bean
    method jdbcCursorItemReaderDataSourceProperties (line 111) | @ConditionalOnProperty(prefix = "spring.batch.job.jdbccursoritemreader...
    method readerDataSource (line 119) | @ConditionalOnProperty(prefix = "spring.batch.job.jdbccursoritemreader...
    class MapRowMapper (line 128) | public static class MapRowMapper implements RowMapper<Map<String, Obje...
      method mapRow (line 130) | @Override

FILE: spring-cloud-starter-single-step-batch-job/src/main/java/org/springframework/cloud/task/batch/autoconfigure/jdbc/JdbcCursorItemReaderProperties.java
  class JdbcCursorItemReaderProperties (line 25) | @ConfigurationProperties(prefix = "spring.batch.job.jdbccursoritemreader")
    method isSaveState (line 102) | public boolean isSaveState() {
    method setSaveState (line 114) | public void setSaveState(boolean saveState) {
    method getName (line 123) | public String getName() {
    method setName (line 134) | public void setName(String name) {
    method getMaxItemCount (line 142) | public int getMaxItemCount() {
    method setMaxItemCount (line 151) | public void setMaxItemCount(int maxItemCount) {
    method getCurrentItemCount (line 159) | public int getCurrentItemCount() {
    method setCurrentItemCount (line 168) | public void setCurrentItemCount(int currentItemCount) {
    method getFetchSize (line 177) | public int getFetchSize() {
    method setFetchSize (line 186) | public void setFetchSize(int fetchSize) {
    method getMaxRows (line 194) | public int getMaxRows() {
    method setMaxRows (line 203) | public void setMaxRows(int maxRows) {
    method getQueryTimeout (line 211) | public int getQueryTimeout() {
    method setQueryTimeout (line 220) | public void setQueryTimeout(int queryTimeout) {
    method isIgnoreWarnings (line 228) | public boolean isIgnoreWarnings() {
    method setIgnoreWarnings (line 237) | public void setIgnoreWarnings(boolean ignoreWarnings) {
    method isVerifyCursorPosition (line 246) | public boolean isVerifyCursorPosition() {
    method setVerifyCursorPosition (line 255) | public void setVerifyCursorPosition(boolean verifyCursorPosition) {
    method isDriverSupportsAbsolute (line 263) | public boolean isDriverSupportsAbsolute() {
    method setDriverSupportsAbsolute (line 272) | public void setDriverSupportsAbsolute(boolean driverSupportsAbsolute) {
    method isUseSharedExtendedConnection (line 281) | public boolean isUseSharedExtendedConnection() {
    method setUseSharedExtendedConnection (line 292) | public void setUseSharedExtendedConnection(boolean useSharedExtendedCo...
    method getSql (line 300) | public String getSql() {
    method setSql (line 309) | public void setSql(String sql) {

FILE: spring-cloud-starter-single-step-batch-job/src/main/java/org/springframework/cloud/task/batch/autoconfigure/kafka/KafkaItemReaderAutoConfiguration.java
  class KafkaItemReaderAutoConfiguration (line 45) | @AutoConfiguration
    method kafkaItemReader (line 53) | @Bean
    method validateProperties (line 76) | private void validateProperties(KafkaItemReaderProperties kafkaItemRea...

FILE: spring-cloud-starter-single-step-batch-job/src/main/java/org/springframework/cloud/task/batch/autoconfigure/kafka/KafkaItemReaderProperties.java
  class KafkaItemReaderProperties (line 30) | @ConfigurationProperties(prefix = "spring.batch.job.kafkaitemreader")
    method getName (line 70) | public String getName() {
    method setName (line 80) | public void setName(String name) {
    method getTopic (line 88) | public String getTopic() {
    method setTopic (line 96) | public void setTopic(String topic) {
    method getPartitions (line 105) | public List<Integer> getPartitions() {
    method setPartitions (line 114) | public void setPartitions(List<Integer> partitions) {
    method getPollTimeOutInSeconds (line 122) | public long getPollTimeOutInSeconds() {
    method setPollTimeOutInSeconds (line 130) | public void setPollTimeOutInSeconds(long pollTimeOutInSeconds) {
    method isSaveState (line 142) | public boolean isSaveState() {
    method setSaveState (line 154) | public void setSaveState(boolean saveState) {

FILE: spring-cloud-starter-single-step-batch-job/src/main/java/org/springframework/cloud/task/batch/autoconfigure/kafka/KafkaItemWriterAutoConfiguration.java
  class KafkaItemWriterAutoConfiguration (line 49) | @AutoConfiguration
    method kafkaItemWriter (line 57) | @Bean
    method batchItemKeyMapper (line 74) | @Bean
    method producerFactory (line 85) | @Bean
    method validateProperties (line 93) | private void validateProperties(KafkaItemWriterProperties kafkaItemWri...

FILE: spring-cloud-starter-single-step-batch-job/src/main/java/org/springframework/cloud/task/batch/autoconfigure/kafka/KafkaItemWriterProperties.java
  class KafkaItemWriterProperties (line 27) | @ConfigurationProperties(prefix = "spring.batch.job.kafkaitemwriter")
    method getTopic (line 45) | public String getTopic() {
    method setTopic (line 53) | public void setTopic(String topic) {
    method isDelete (line 65) | public boolean isDelete() {
    method setDelete (line 77) | public void setDelete(boolean delete) {

FILE: spring-cloud-starter-single-step-batch-job/src/main/java/org/springframework/cloud/task/batch/autoconfigure/rabbit/AmqpItemReaderAutoConfiguration.java
  class AmqpItemReaderAutoConfiguration (line 42) | @AutoConfiguration
    method amqpItemReaderProperties (line 51) | @Bean
    method amqpItemReader (line 56) | @Bean
    method messageConverter (line 67) | @ConditionalOnProperty(name = "spring.batch.job.amqpitemreader.jsonCon...

FILE: spring-cloud-starter-single-step-batch-job/src/main/java/org/springframework/cloud/task/batch/autoconfigure/rabbit/AmqpItemReaderProperties.java
  class AmqpItemReaderProperties (line 28) | @ConfigurationProperties(prefix = "spring.batch.job.amqpitemreader")
    method isEnabled (line 46) | public boolean isEnabled() {
    method setEnabled (line 54) | public void setEnabled(boolean enabled) {
    method isJsonConverterEnabled (line 63) | public boolean isJsonConverterEnabled() {
    method setJsonConverterEnabled (line 73) | public void setJsonConverterEnabled(boolean jsonConverterEnabled) {

FILE: spring-cloud-starter-single-step-batch-job/src/main/java/org/springframework/cloud/task/batch/autoconfigure/rabbit/AmqpItemWriterAutoConfiguration.java
  class AmqpItemWriterAutoConfiguration (line 40) | @AutoConfiguration
    method amqpItemWriter (line 46) | @Bean
    method amqpItemWriterProperties (line 51) | @Bean
    method messageConverter (line 56) | @ConditionalOnProperty(name = "spring.batch.job.amqpitemwriter.jsonCon...

FILE: spring-cloud-starter-single-step-batch-job/src/main/java/org/springframework/cloud/task/batch/autoconfigure/rabbit/AmqpItemWriterProperties.java
  class AmqpItemWriterProperties (line 26) | @ConfigurationProperties(prefix = "spring.batch.job.amqpitemwriter")
    method isEnabled (line 44) | public boolean isEnabled() {
    method setEnabled (line 53) | public void setEnabled(boolean enabled) {
    method isJsonConverterEnabled (line 62) | public boolean isJsonConverterEnabled() {
    method setJsonConverterEnabled (line 72) | public void setJsonConverterEnabled(boolean jsonConverterEnabled) {

FILE: spring-cloud-starter-single-step-batch-job/src/test/java/org/springframework/cloud/task/batch/autoconfigure/RangeConverterTests.java
  class RangeConverterTests (line 29) | public class RangeConverterTests {
    method testNullInput (line 31) | @Test
    method testStartValueOnly (line 38) | @Test
    method testStartAndEndValue (line 48) | @Test
    method testIllegalValue (line 58) | @Test
    method testTooManyValues (line 67) | @Test

FILE: spring-cloud-starter-single-step-batch-job/src/test/java/org/springframework/cloud/task/batch/autoconfigure/SingleStepJobAutoConfigurationTests.java
  class SingleStepJobAutoConfigurationTests (line 49) | public class SingleStepJobAutoConfigurationTests {
    method testInvalidProperties (line 51) | @Test
    method testSimpleConfiguration (line 104) | @Test
    method testSimpleConfigurationKabobStyle (line 117) | @Test
    method validateConfiguration (line 130) | private void validateConfiguration(ApplicationContextRunner applicatio...
    class SimpleConfiguration (line 156) | @Configuration
      method platformTransactionManager (line 159) | @Bean
      method itemReader (line 164) | @Bean
      method itemWriter (line 175) | @Bean

FILE: spring-cloud-starter-single-step-batch-job/src/test/java/org/springframework/cloud/task/batch/autoconfigure/flatfile/FlatFileItemReaderAutoConfigurationTests.java
  class FlatFileItemReaderAutoConfigurationTests (line 57) | public class FlatFileItemReaderAutoConfigurationTests {
    method testFullDelimitedConfiguration (line 77) | @Test
    method testFixedWidthConfiguration (line 133) | @Test
    method testCustomLineMapper (line 190) | @Test
    method testCustomRecordSeparatorAndSkippedLines (line 226) | @Test
    method testCustomMapping (line 267) | @Test
    class CustomMappingConfiguration (line 303) | @Configuration
      method platformTransactionManager (line 306) | @Bean
      method itemWriter (line 311) | @Bean
      method lineTokenizer (line 316) | @Bean
      method fieldSetMapper (line 322) | @Bean
    class JobConfiguration (line 329) | @Configuration
      method platformTransactionManager (line 332) | @Bean
      method itemWriter (line 337) | @Bean
    class RecordSeparatorAndSkippedLinesJobConfiguration (line 344) | @Configuration
      method platformTransactionManager (line 347) | @Bean
      method recordSeparatorPolicy (line 352) | @Bean
      method lineCallbackHandler (line 381) | @Bean
      method itemWriter (line 386) | @Bean
    class CustomLineMapperConfiguration (line 393) | @Configuration
      method platformTransactionManager (line 396) | @Bean
      method lineMapper (line 401) | @Bean
      method itemWriter (line 413) | @Bean
    class ListLineCallbackHandler (line 420) | public static class ListLineCallbackHandler implements LineCallbackHan...
      method handleLine (line 424) | @Override
      method getLines (line 429) | public List<String> getLines() {

FILE: spring-cloud-starter-single-step-batch-job/src/test/java/org/springframework/cloud/task/batch/autoconfigure/flatfile/FlatFileItemWriterAutoConfigurationTests.java
  class FlatFileItemWriterAutoConfigurationTests (line 65) | public class FlatFileItemWriterAutoConfigurationTests {
    method setUp (line 69) | @BeforeEach
    method tearDown (line 74) | @AfterEach
    method testValidation (line 79) | @Test
    method testDelimitedFileGeneration (line 134) | @Test
    method testFormattedFileGeneration (line 181) | @Test
    method testFormattedFieldExtractorFileGeneration (line 220) | @Test
    method testFieldExtractorFileGeneration (line 257) | @Test
    method testCustomLineAggregatorFileGeneration (line 292) | @Test
    method testHeaderFooterFileGeneration (line 326) | @Test
    class DelimitedJobConfiguration (line 362) | @Configuration
      method platformTransactionManager (line 365) | @Bean
      method itemReader (line 370) | @Bean
    class LineAggregatorConfiguration (line 384) | @Configuration
      method platformTransactionManager (line 387) | @Bean
      method itemReader (line 392) | @Bean
      method lineAggregator (line 404) | @Bean
    class HeaderFooterConfiguration (line 411) | @Configuration
      method platformTransactionManager (line 414) | @Bean
      method itemReader (line 419) | @Bean
      method headerCallback (line 431) | @Bean
      method footerCallback (line 436) | @Bean
    class FieldExtractorConfiguration (line 443) | @Configuration
      method platformTransactionManager (line 446) | @Bean
      method itemReader (line 451) | @Bean
      method lineAggregator (line 463) | @Bean
    class FormattedJobConfiguration (line 475) | @Configuration
      method platformTransactionManager (line 478) | @Bean
      method itemReader (line 483) | @Bean
    class FormattedFieldExtractorJobConfiguration (line 497) | @Configuration
      method platformTransactionManager (line 500) | @Bean
      method lineAggregator (line 505) | @Bean
      method itemReader (line 515) | @Bean

FILE: spring-cloud-starter-single-step-batch-job/src/test/java/org/springframework/cloud/task/batch/autoconfigure/jdbc/JdbcBatchItemWriterAutoConfigurationTests.java
  class JdbcBatchItemWriterAutoConfigurationTests (line 67) | public class JdbcBatchItemWriterAutoConfigurationTests {
    method clearDB (line 85) | @AfterEach
    method baseTest (line 107) | @Test
    method baseTestWithWriterDataSource (line 121) | @Test
    method customSqlParameterSourceTest (line 143) | @Test
    method preparedStatementSetterTest (line 158) | @Test
    method updatePropertiesForTest (line 172) | private ApplicationContextRunner updatePropertiesForTest(ApplicationCo...
    method validateResultAndBean (line 180) | private void validateResultAndBean(ApplicationContext context, boolean...
    method runTest (line 210) | private void runTest(ApplicationContextRunner applicationContextRunner...
    class TaskLauncherConfiguration (line 227) | @Configuration
      method initH2TCPServer (line 232) | @Bean
      method dataSource (line 258) | @Bean
    class DelimitedJobConfiguration (line 270) | @Configuration
      method platformTransactionManager (line 273) | @Bean
      method itemReader (line 278) | @Bean
    class DelimitedDifferentKeyNameJobConfiguration (line 292) | @Configuration
      method platformTransactionManager (line 295) | @Bean
      method itemReader (line 300) | @Bean
    class CustomSqlParameterSourceProviderConfiguration (line 314) | @Configuration
      method itemSqlParameterSourceProvider (line 317) | @Bean
    class ItemPreparedStatementSetterConfiguration (line 328) | @Configuration
      method itemPreparedStatementSetter (line 331) | @Bean

FILE: spring-cloud-starter-single-step-batch-job/src/test/java/org/springframework/cloud/task/batch/autoconfigure/jdbc/JdbcCursorItemReaderAutoConfigurationTests.java
  class JdbcCursorItemReaderAutoConfigurationTests (line 65) | public class JdbcCursorItemReaderAutoConfigurationTests {
    method clearDB (line 83) | @AfterAll
    method testIntegration (line 101) | @Test
    method applicationContextRunner (line 135) | private ApplicationContextRunner applicationContextRunner() {
    method testIntegrationReaderDataSourceEnabled (line 143) | @Test
    method testCustomRowMapper (line 179) | @Test
    method testRoseyScenario (line 214) | @Test
    method validateBean (line 243) | private void validateBean(JdbcCursorItemReader itemReader) {
    method testNoName (line 262) | @Test
    method testSqlName (line 277) | @Test
    method runTest (line 292) | private void runTest(ApplicationContextRunner applicationContextRunner) {
    class TaskLauncherConfiguration (line 308) | @AutoConfigureBefore({ JdbcCursorItemReaderAutoConfiguration.class,
      method platformTransactionManager (line 313) | @Bean
      method initH2TCPServer (line 320) | @Bean
      method dataSource (line 353) | @Bean
    class BaseConfiguration (line 365) | @Configuration
      method itemWriter (line 368) | @Bean
    class RowMapperConfiguration (line 375) | @Configuration
      method rowMapper (line 378) | @Bean
      method itemWriter (line 389) | @Bean

FILE: spring-cloud-starter-single-step-batch-job/src/test/java/org/springframework/cloud/task/batch/autoconfigure/kafka/KafkaItemReaderAutoConfigurationTests.java
  class KafkaItemReaderAutoConfigurationTests (line 62) | @EmbeddedKafka(partitions = 1, topics = { "test" })
    method setupTest (line 67) | @BeforeAll
    method testBaseKafkaItemReader (line 74) | @Test
    method testBaseKafkaItemReaderMultiplePartitions (line 116) | @Test
    method testBaseKafkaItemReaderPollTimeoutDefault (line 153) | @Test
    method basicValidation (line 190) | private void basicValidation(ListItemWriter itemWriter) {
    method populateSingleTopic (line 201) | private void populateSingleTopic(String topic) {
    class CustomMappingConfiguration (line 222) | @Configuration
      method platformTransactionManager (line 225) | @Bean
      method itemWriter (line 230) | @Bean
      method sslBundles (line 235) | @Bean

FILE: spring-cloud-starter-single-step-batch-job/src/test/java/org/springframework/cloud/task/batch/autoconfigure/kafka/KafkaItemWriterTests.java
  class KafkaItemWriterTests (line 60) | @EmbeddedKafka(partitions = 1, topics = { "topic1" })
    method setupTest (line 65) | @BeforeAll
    method testBaseKafkaItemWriter (line 71) | @Test
    method validateResults (line 91) | private void validateResults(String topicName) {
    method waitForTopicPopulation (line 114) | private void waitForTopicPopulation(ApplicationContext context) throws...
    class CustomMappingConfiguration (line 125) | @Configuration
      method platformTransactionManager (line 128) | @Bean
      method itemReader (line 133) | @Bean
      method addNameToReaderList (line 144) | private void addNameToReaderList(List<Map<String, Object>> itemReade...
      method sslBundles (line 150) | @Bean

FILE: spring-cloud-starter-single-step-batch-job/src/test/java/org/springframework/cloud/task/batch/autoconfigure/rabbit/AmqpItemReaderAutoConfigurationTests.java
  class AmqpItemReaderAutoConfigurationTests (line 60) | @Tag("DockerRequired")
    method setupTest (line 79) | @BeforeEach
    method teardownTest (line 98) | @AfterEach
    method basicTest (line 105) | @Test
    method basicTestWithItemType (line 131) | @Test
    method useAmqpTemplateTest (line 156) | @Test
    method runJob (line 174) | private JobExecution runJob(AssertableApplicationContext context) thro...
    method validateBasicTest (line 180) | private void validateBasicTest(List<Map<String, Object>> items) {
    class MockTemplateConfiguration (line 187) | public static class MockTemplateConfiguration extends BaseConfiguration {
      method amqpTemplateBean (line 189) | @Bean
    class ItemTypeConfiguration (line 196) | public static class ItemTypeConfiguration extends BaseConfiguration {
      method itemTypeClass (line 198) | @Bean
    class BaseConfiguration (line 205) | @Configuration
      method platformTransactionManager (line 208) | @Bean
      method itemWriter (line 213) | @Bean

FILE: spring-cloud-starter-single-step-batch-job/src/test/java/org/springframework/cloud/task/batch/autoconfigure/rabbit/AmqpItemWriterAutoConfigurationTests.java
  class AmqpItemWriterAutoConfigurationTests (line 65) | @Tag("DockerRequired")
    method addNameToReaderList (line 98) | private static void addNameToReaderList(List<Map<String, Object>> item...
    method setupTest (line 104) | @BeforeEach
    method teardownTest (line 119) | @AfterEach
    method basicTest (line 126) | @Test
    method useAmqpTemplateTest (line 151) | @Test
    method runJob (line 167) | private JobExecution runJob(AssertableApplicationContext context) thro...
    class BaseConfiguration (line 175) | @Configuration
    class MockConfiguration (line 180) | @Configuration
      method amqpTemplateBean (line 183) | @Bean
    class ItemWriterConfiguration (line 190) | public static class ItemWriterConfiguration {
      method platformTransactionManager (line 192) | @Bean
      method rowMapper (line 197) | @Bean
      method itemWriter (line 208) | @Bean

FILE: spring-cloud-starter-single-step-batch-job/src/test/resources/schema-h2.sql
  type item (line 1) | CREATE TABLE IF NOT EXISTS item

FILE: spring-cloud-task-batch/src/main/java/org/springframework/cloud/task/batch/configuration/JobLaunchCondition.java
  class JobLaunchCondition (line 28) | public class JobLaunchCondition extends AllNestedConditions {
    method JobLaunchCondition (line 30) | public JobLaunchCondition() {
    class FailOnJobFailureCondition (line 34) | @ConditionalOnProperty(name = "spring.cloud.task.batch.fail-on-job-fai...
    class SpringBatchJobCondition (line 39) | @ConditionalOnProperty(prefix = "spring.batch.job", name = "enabled", ...

FILE: spring-cloud-task-batch/src/main/java/org/springframework/cloud/task/batch/configuration/TaskBatchAutoConfiguration.java
  class TaskBatchAutoConfiguration (line 42) | @AutoConfiguration
    method batchTaskExecutionListenerBeanPostProcessor (line 48) | @Bean
    class TaskBatchExecutionListenerAutoconfiguration (line 57) | @AutoConfiguration
      method taskBatchExecutionListener (line 68) | @Bean

FILE: spring-cloud-task-batch/src/main/java/org/springframework/cloud/task/batch/configuration/TaskBatchExecutionListenerBeanPostProcessor.java
  class TaskBatchExecutionListenerBeanPostProcessor (line 38) | public class TaskBatchExecutionListenerBeanPostProcessor implements Bean...
    method postProcessBeforeInitialization (line 45) | @Override
    method postProcessAfterInitialization (line 50) | @Override
    method setJobNames (line 68) | public void setJobNames(List<String> jobNames) {

FILE: spring-cloud-task-batch/src/main/java/org/springframework/cloud/task/batch/configuration/TaskBatchExecutionListenerFactoryBean.java
  class TaskBatchExecutionListenerFactoryBean (line 43) | public class TaskBatchExecutionListenerFactoryBean implements FactoryBea...
    method TaskBatchExecutionListenerFactoryBean (line 59) | public TaskBatchExecutionListenerFactoryBean(DataSource dataSource, Ta...
    method TaskBatchExecutionListenerFactoryBean (line 71) | public TaskBatchExecutionListenerFactoryBean(DataSource dataSource, Ta...
    method getObject (line 77) | @Override
    method getObjectType (line 92) | @Override
    method isSingleton (line 97) | @Override
    method getMapTaskBatchDao (line 102) | private MapTaskBatchDao getMapTaskBatchDao() throws Exception {

FILE: spring-cloud-task-batch/src/main/java/org/springframework/cloud/task/batch/configuration/TaskBatchProperties.java
  class TaskBatchProperties (line 28) | @ConfigurationProperties(prefix = "spring.cloud.task.batch")
    method getJobNames (line 55) | public String getJobNames() {
    method setJobNames (line 59) | public void setJobNames(String jobNames) {
    method getCommandLineRunnerOrder (line 63) | @Deprecated
    method setCommandLineRunnerOrder (line 68) | @Deprecated
    method getApplicationRunnerOrder (line 73) | public int getApplicationRunnerOrder() {
    method setApplicationRunnerOrder (line 77) | public void setApplicationRunnerOrder(int applicationRunnerOrder) {
    method getFailOnJobFailurePollInterval (line 81) | public long getFailOnJobFailurePollInterval() {
    method setFailOnJobFailurePollInterval (line 85) | public void setFailOnJobFailurePollInterval(long failOnJobFailurePollI...

FILE: spring-cloud-task-batch/src/main/java/org/springframework/cloud/task/batch/configuration/TaskJobLauncherApplicationRunnerFactoryBean.java
  class TaskJobLauncherApplicationRunnerFactoryBean (line 39) | public class TaskJobLauncherApplicationRunnerFactoryBean
    method TaskJobLauncherApplicationRunnerFactoryBean (line 58) | public TaskJobLauncherApplicationRunnerFactoryBean(JobOperator jobOper...
    method setOrder (line 80) | public void setOrder(int order) {
    method getObject (line 84) | @Override
    method getObjectType (line 103) | @Override
    method setApplicationEventPublisher (line 108) | @Override

FILE: spring-cloud-task-batch/src/main/java/org/springframework/cloud/task/batch/configuration/TaskJobLauncherAutoConfiguration.java
  class TaskJobLauncherAutoConfiguration (line 41) | @AutoConfiguration
    method taskJobLauncherApplicationRunner (line 50) | @Bean

FILE: spring-cloud-task-batch/src/main/java/org/springframework/cloud/task/batch/handler/TaskJobLauncherApplicationRunner.java
  class TaskJobLauncherApplicationRunner (line 72) | public class TaskJobLauncherApplicationRunner extends JobLauncherApplica...
    method TaskJobLauncherApplicationRunner (line 94) | public TaskJobLauncherApplicationRunner(JobOperator jobOperator, JobRe...
    method setApplicationEventPublisher (line 102) | @Override
    method run (line 108) | @Override
    method execute (line 119) | @Override
    method monitorJobExecutions (line 160) | private void monitorJobExecutions() {
    method getCurrentBatchStatus (line 184) | private BatchStatus getCurrentBatchStatus(JobExecution jobExecution) {
    method throwJobFailedException (line 191) | private void throwJobFailedException(List<JobExecution> failedJobExecu...
    method removeNonIdentifying (line 206) | private JobParameters removeNonIdentifying(JobParameters parameters) {
    method isStoppedOrFailed (line 219) | private boolean isStoppedOrFailed(JobExecution execution) {
    method merge (line 224) | private JobParameters merge(JobParameters parameters, JobParameters ad...
    method getNextJobParameters (line 251) | public JobParameters getNextJobParameters(Job job, Set<JobParameter<?>...

FILE: spring-cloud-task-batch/src/main/java/org/springframework/cloud/task/batch/listener/TaskBatchDao.java
  type TaskBatchDao (line 28) | public interface TaskBatchDao {
    method saveRelationship (line 35) | void saveRelationship(TaskExecution taskExecution, JobExecution jobExe...

FILE: spring-cloud-task-batch/src/main/java/org/springframework/cloud/task/batch/listener/TaskBatchExecutionListener.java
  class TaskBatchExecutionListener (line 35) | public class TaskBatchExecutionListener implements JobExecutionListener,...
    method TaskBatchExecutionListener (line 46) | public TaskBatchExecutionListener(TaskBatchDao taskBatchDao) {
    method onTaskStartup (line 52) | @Override
    method beforeJob (line 57) | @Override
    method getOrder (line 69) | @Override

FILE: spring-cloud-task-batch/src/main/java/org/springframework/cloud/task/batch/listener/support/JdbcTaskBatchDao.java
  class JdbcTaskBatchDao (line 38) | public class JdbcTaskBatchDao implements TaskBatchDao {
    method JdbcTaskBatchDao (line 51) | public JdbcTaskBatchDao(DataSource dataSource, String tablePrefix) {
    method JdbcTaskBatchDao (line 62) | public JdbcTaskBatchDao(DataSource dataSource) {
    method saveRelationship (line 68) | @Override
    method getQuery (line 75) | private String getQuery(String base) {

FILE: spring-cloud-task-batch/src/main/java/org/springframework/cloud/task/batch/listener/support/MapTaskBatchDao.java
  class MapTaskBatchDao (line 36) | public class MapTaskBatchDao implements TaskBatchDao {
    method MapTaskBatchDao (line 40) | public MapTaskBatchDao(Map<Long, Set<Long>> relationships) {
    method saveRelationship (line 45) | @Override

FILE: spring-cloud-task-batch/src/test/java/org/springframework/cloud/task/batch/configuration/TaskJobLauncherAutoConfigurationTests.java
  class TaskJobLauncherAutoConfigurationTests (line 48) | public class TaskJobLauncherAutoConfigurationTests {
    method testAutoBuiltDataSourceWithTaskJobLauncherCLR (line 54) | @Test
    method testAutoBuiltDataSourceWithTaskJobLauncherCLROrder (line 62) | @Test
    method testAutoBuiltDataSourceWithBatchJobNames (line 72) | @Test
    method testAutoBuiltDataSourceWithTaskBatchJobNames (line 82) | @Test
    method validateJobNames (line 92) | private void validateJobNames(AssertableApplicationContext context, St...
    method testAutoBuiltDataSourceWithTaskJobLauncherCLRDisabled (line 100) | @Test
    class TestJobConfiguration (line 108) | @Configuration
      method job (line 113) | @Bean
      method transactionManager (line 123) | @Bean
      method jobRegistry (line 128) | @Bean

FILE: spring-cloud-task-batch/src/test/java/org/springframework/cloud/task/batch/handler/TaskJobLauncherApplicationRunnerCoreTests.java
  class TaskJobLauncherApplicationRunnerCoreTests (line 61) | public class TaskJobLauncherApplicationRunnerCoreTests {
    method basicExecution (line 68) | @Test
    method incrementExistingExecution (line 79) | @Test
    method runDifferentInstances (line 91) | @Test
    method retryFailedExecutionOnNonRestartableJob (line 111) | @Test
    method retryFailedExecutionWithNonIdentifyingParameters (line 137) | @Test
    method throwingTasklet (line 160) | private Tasklet throwingTasklet() {
    method runFailedJob (line 166) | private void runFailedJob(JobLauncherApplicationRunnerContext jobLaunc...
    class JobLauncherApplicationRunnerContext (line 178) | static class JobLauncherApplicationRunnerContext {
      method JobLauncherApplicationRunnerContext (line 192) | JobLauncherApplicationRunnerContext(ApplicationContext context) {
      method jobInstances (line 203) | List<JobInstance> jobInstances() {
      method executeJob (line 207) | void executeJob(JobParameters jobParameters) throws JobExecutionExce...
      method jobBuilder (line 211) | JobBuilder jobBuilder() {
      method stepBuilder (line 215) | StepBuilder stepBuilder() {
      method configureJob (line 219) | SimpleJobBuilder configureJob() {
    class BatchConfiguration (line 225) | @EnableBatchProcessing
      method BatchConfiguration (line 232) | protected BatchConfiguration(DataSource dataSource) {
      method batchDataSourceInitializer (line 236) | @Bean

FILE: spring-cloud-task-batch/src/test/java/org/springframework/cloud/task/batch/handler/TaskJobLauncherApplicationRunnerTests.java
  class TaskJobLauncherApplicationRunnerTests (line 76) | public class TaskJobLauncherApplicationRunnerTests {
    method tearDown (line 82) | @AfterEach
    method testTaskJobLauncherCLRSuccessFail (line 89) | @Test
    method testTaskJobLauncherCLRSuccessFailWithAnnotation (line 100) | @Disabled("The task repository is not getting populated.")
    method testTaskJobLauncherCLRSuccessFailWithTaskExecutor (line 108) | @Test
    method testNoTaskJobLauncher (line 116) | @Test
    method testTaskJobLauncherPickOneJob (line 126) | @Test
    method testApplicationRunnerSetToFalse (line 143) | @Test
    method validateContext (line 159) | private void validateContext() {
    method validateForFail (line 174) | private void validateForFail(String errorMessage, Class<?> clazz, Stri...
    class JobExecutionEventListener (line 182) | @Component
      method onApplicationEvent (line 187) | @Override
      method getEventCounter (line 192) | public int getEventCounter() {
    class JobConfiguration (line 198) | @EnableTask
      method job (line 205) | @Bean
      method jobRegistry (line 215) | @Bean
      method transactionManager (line 220) | @Bean
    class TransactionManagerTestConfiguration (line 227) | @Configuration(proxyBeanMethods = false)
      method transactionManager (line 231) | @Bean
      method batchProperties (line 236) | @Bean
      method jobRegistry (line 241) | @Bean
      method batchDataSourceInitializer (line 246) | @Bean
    class JobWithFailureConfiguration (line 255) | @EnableBatchProcessing
      method jobFail (line 270) | @Bean
      method jobFun (line 280) | @Bean
    class JobWithFailureAnnotatedConfiguration (line 292) | @EnableTask
    class JobWithFailureTaskExecutorConfiguration (line 297) | @Import(JobWithFailureConfiguration.class)

FILE: spring-cloud-task-batch/src/test/java/org/springframework/cloud/task/batch/listener/PrefixTests.java
  class PrefixTests (line 49) | public class PrefixTests {
    method tearDown (line 53) | @AfterEach
    method testPrefix (line 60) | @Disabled("Unable to find TaskRepository")
    class JobConfiguration (line 72) | @AutoConfiguration
      method job (line 77) | @Bean
      method dataSource (line 87) | @Bean
      method transactionManager (line 94) | @Bean

FILE: spring-cloud-task-batch/src/test/java/org/springframework/cloud/task/batch/listener/PrimaryKeyTests.java
  class PrimaryKeyTests (line 49) | class PrimaryKeyTests {
    method tearDown (line 53) | @AfterEach
    method testSchemaWithPrimaryKeys (line 60) | @Disabled("Unable to find TaskRepository")
    class JobConfiguration (line 71) | @Configuration(proxyBeanMethods = false)
      method job (line 76) | @Bean
      method dataSource (line 86) | @Bean
      method transactionManager (line 93) | @Bean

FILE: spring-cloud-task-batch/src/test/java/org/springframework/cloud/task/batch/listener/TaskBatchExecutionListenerTests.java
  class TaskBatchExecutionListenerTests (line 76) | @Disabled("Tests can not fined TaskRepository")
    method tearDown (line 83) | @AfterEach
    method testAutobuiltDataSource (line 90) | @Test
    method testNoAutoConfigurationEnabled (line 96) | @Test
    method testNoAutoConfigurationEnable (line 105) | @Test
    method testNoAutoConfigurationBothDisabled (line 114) | @Test
    method testAutoConfigurationEnable (line 123) | @Test
    method testAutoConfigurationEnabled (line 130) | @Test
    method testFactoryBean (line 137) | @Test
    method validateContext (line 143) | private void validateContext() {
    method testNoListenerIfTaskNotEnabled (line 156) | @Test
    method testMultipleDataSources (line 166) | @Test
    method testAutobuiltDataSourceNoJob (line 181) | @Test
    method testMapBased (line 195) | @Test
    method testMultipleJobs (line 211) | @Test
    method testBatchExecutionListenerBeanPostProcessorWithJobNames (line 228) | @Test
    method testBatchExecutionListenerBeanPostProcessorWithEmptyJobNames (line 242) | @Test
    method testBatchExecutionListenerBeanPostProcessorNullJobNames (line 251) | @Test
    method beanPostProcessor (line 258) | private TaskBatchExecutionListenerBeanPostProcessor beanPostProcessor(...
    class NoJobConfiguration (line 271) | @EnableBatchProcessing
      method transactionManager (line 277) | @Bean
    class JobConfiguration (line 284) | @TaskBatchTest
      method job (line 289) | @Bean
      method transactionManager (line 299) | @Bean
    class TaskNotEnabledConfiguration (line 306) | @EnableBatchProcessing
      method job (line 311) | @Bean
      method transactionManager (line 321) | @Bean
    class JobFactoryBeanConfiguration (line 328) | @TaskBatchTest
      method job (line 333) | @Bean
      method transactionManager (line 358) | @Bean
    class JobConfigurationMultipleDataSources (line 365) | @TaskBatchTest
      method job (line 370) | @Bean
      method myDataSource (line 384) | @Bean
      method incorrectDataSource (line 392) | @Bean
      method taskConfigurer (line 399) | @Bean
      method transactionManager (line 404) | @Bean
    class MultipleJobConfiguration (line 411) | @TaskBatchTest
      method job1 (line 416) | @Bean
      method job2 (line 426) | @Bean
      method transactionManager (line 436) | @Bean

FILE: spring-cloud-task-batch/src/test/resources/schema-h2.sql
  type FOO_EXECUTION (line 2) | CREATE TABLE FOO_EXECUTION  (
  type FOO_EXECUTION_PARAMS (line 15) | CREATE TABLE FOO_EXECUTION_PARAMS  (
  type FOO_TASK_BATCH (line 22) | CREATE TABLE FOO_TASK_BATCH (
  type FOO_LOCK (line 31) | CREATE TABLE FOO_LOCK  (

FILE: spring-cloud-task-batch/src/test/resources/schema-with-primary-keys-h2.sql
  type TASK_EXECUTION (line 2) | CREATE TABLE TASK_EXECUTION  (
  type TASK_EXECUTION_PARAMS (line 15) | CREATE TABLE TASK_EXECUTION_PARAMS  (
  type TASK_TASK_BATCH (line 23) | CREATE TABLE TASK_TASK_BATCH (
  type TASK_LOCK (line 33) | CREATE TABLE TASK_LOCK  (

FILE: spring-cloud-task-core/src/main/java/org/springframework/cloud/task/configuration/DefaultTaskConfigurer.java
  class DefaultTaskConfigurer (line 55) | public class DefaultTaskConfigurer implements TaskConfigurer {
    method DefaultTaskConfigurer (line 71) | public DefaultTaskConfigurer() {
    method DefaultTaskConfigurer (line 79) | public DefaultTaskConfigurer(TaskProperties taskProperties) {
    method DefaultTaskConfigurer (line 90) | public DefaultTaskConfigurer(DataSource dataSource) {
    method DefaultTaskConfigurer (line 103) | public DefaultTaskConfigurer(DataSource dataSource, TaskProperties tas...
    method DefaultTaskConfigurer (line 112) | public DefaultTaskConfigurer(String tablePrefix) {
    method DefaultTaskConfigurer (line 123) | public DefaultTaskConfigurer(String tablePrefix, TaskProperties taskPr...
    method DefaultTaskConfigurer (line 136) | public DefaultTaskConfigurer(DataSource dataSource, String tablePrefix...
    method DefaultTaskConfigurer (line 151) | public DefaultTaskConfigurer(DataSource dataSource, String tablePrefix...
    method getTaskRepository (line 175) | @Override
    method getTaskExplorer (line 180) | @Override
    method getTaskDataSource (line 185) | @Override
    method getTaskNameResolver (line 190) | @Override
    method getTransactionManager (line 195) | @Override
    method isDataSourceAvailable (line 223) | private boolean isDataSourceAvailable() {

FILE: spring-cloud-task-core/src/main/java/org/springframework/cloud/task/configuration/NoTransactionManagerProperty.java
  class NoTransactionManagerProperty (line 29) | class NoTransactionManagerProperty extends NoneNestedConditions {
    method NoTransactionManagerProperty (line 31) | NoTransactionManagerProperty() {
    class OnProperty (line 35) | @ConditionalOnProperty(prefix = "spring.cloud.task", name = "transacti...

FILE: spring-cloud-task-core/src/main/java/org/springframework/cloud/task/configuration/SimpleTaskAutoConfiguration.java
  class SimpleTaskAutoConfiguration (line 57) | @AutoConfiguration
    method taskRepository (line 88) | @Bean
    method springCloudTaskTransactionManager (line 93) | @Conditional(NoTransactionManagerProperty.class)
    method taskExplorer (line 99) | @Bean
    method taskNameResolver (line 104) | @Bean
    method taskRepositoryInitializer (line 109) | @Bean
    method taskObservationCloudKeyValues (line 120) | @Bean
    method initialize (line 129) | @PostConstruct
    method getDefaultConfigurer (line 146) | private TaskConfigurer getDefaultConfigurer() {
    method verifyEnvironment (line 173) | private void verifyEnvironment() {

FILE: spring-cloud-task-core/src/main/java/org/springframework/cloud/task/configuration/SingleInstanceTaskListener.java
  class SingleInstanceTaskListener (line 55) | public class SingleInstanceTaskListener implements ApplicationListener<A...
    method SingleInstanceTaskListener (line 79) | public SingleInstanceTaskListener(LockRegistry lockRegistry, TaskNameR...
    method SingleInstanceTaskListener (line 90) | public SingleInstanceTaskListener(DataSource dataSource, TaskNameResol...
    method lockTask (line 102) | @BeforeTask
    method unlockTaskOnEnd (line 133) | @AfterTask
    method unlockTaskOnError (line 138) | @FailedTask
    method onApplicationEvent (line 143) | @Override
    method getDefaultLockRegistry (line 153) | private LockRegistry getDefaultLockRegistry(long executionId) {

FILE: spring-cloud-task-core/src/main/java/org/springframework/cloud/task/configuration/SingleTaskConfiguration.java
  class SingleTaskConfiguration (line 37) | @Order(Ordered.HIGHEST_PRECEDENCE)
    method taskListener (line 51) | @Bean

FILE: spring-cloud-task-core/src/main/java/org/springframework/cloud/task/configuration/TaskConfigurer.java
  type TaskConfigurer (line 33) | public interface TaskConfigurer {
    method getTaskRepository (line 39) | TaskRepository getTaskRepository();
    method getTransactionManager (line 46) | PlatformTransactionManager getTransactionManager();
    method getTaskExplorer (line 52) | TaskExplorer getTaskExplorer();
    method getTaskDataSource (line 60) | DataSource getTaskDataSource();
    method getTaskNameResolver (line 66) | TaskNameResolver getTaskNameResolver();

FILE: spring-cloud-task-core/src/main/java/org/springframework/cloud/task/configuration/TaskLifecycleConfiguration.java
  class TaskLifecycleConfiguration (line 43) | @Configuration(proxyBeanMethods = false)
    method TaskLifecycleConfiguration (line 68) | @Autowired
    method taskLifecycleListener (line 86) | @Bean
    method initialize (line 94) | @PostConstruct

FILE: spring-cloud-task-core/src/main/java/org/springframework/cloud/task/configuration/TaskObservationCloudKeyValues.java
  class TaskObservationCloudKeyValues (line 28) | public class TaskObservationCloudKeyValues {
    method getOrganizationName (line 51) | public String getOrganizationName() {
    method setOrganizationName (line 55) | public void setOrganizationName(String organizationName) {
    method getSpaceId (line 59) | public String getSpaceId() {
    method setSpaceId (line 63) | public void setSpaceId(String spaceId) {
    method getSpaceName (line 67) | public String getSpaceName() {
    method setSpaceName (line 71) | public void setSpaceName(String spaceName) {
    method getApplicationName (line 75) | public String getApplicationName() {
    method setApplicationName (line 79) | public void setApplicationName(String applicationName) {
    method getApplicationId (line 83) | public String getApplicationId() {
    method setApplicationId (line 87) | public void setApplicationId(String applicationId) {
    method getApplicationVersion (line 91) | public String getApplicationVersion() {
    method setApplicationVersion (line 95) | public void setApplicationVersion(String applicationVersion) {
    method getInstanceIndex (line 99) | public String getInstanceIndex() {
    method setInstanceIndex (line 103) | public void setInstanceIndex(String instanceIndex) {

FILE: spring-cloud-task-core/src/main/java/org/springframework/cloud/task/configuration/TaskProperties.java
  class TaskProperties (line 31) | @ConfigurationProperties(prefix = "spring.cloud.task")
    method getExternalExecutionId (line 99) | public String getExternalExecutionId() {
    method setExternalExecutionId (line 103) | public void setExternalExecutionId(String externalExecutionId) {
    method getExecutionid (line 107) | public Long getExecutionid() {
    method setExecutionid (line 111) | public void setExecutionid(Long executionid) {
    method getClosecontextEnabled (line 115) | public Boolean getClosecontextEnabled() {
    method setClosecontextEnabled (line 119) | public void setClosecontextEnabled(Boolean closecontextEnabled) {
    method getTablePrefix (line 123) | public String getTablePrefix() {
    method setTablePrefix (line 127) | public void setTablePrefix(String tablePrefix) {
    method getParentExecutionId (line 131) | public Long getParentExecutionId() {
    method setParentExecutionId (line 135) | public void setParentExecutionId(Long parentExecutionId) {
    method getSingleInstanceEnabled (line 139) | public boolean getSingleInstanceEnabled() {
    method setSingleInstanceEnabled (line 143) | public void setSingleInstanceEnabled(boolean singleInstanceEnabled) {
    method getSingleInstanceLockTtl (line 147) | public int getSingleInstanceLockTtl() {
    method setSingleInstanceLockTtl (line 151) | public void setSingleInstanceLockTtl(int singleInstanceLockTtl) {
    method getSingleInstanceLockCheckInterval (line 155) | public int getSingleInstanceLockCheckInterval() {
    method setSingleInstanceLockCheckInterval (line 159) | public void setSingleInstanceLockCheckInterval(int singleInstanceLockC...
    method isInitializeEnabled (line 163) | public Boolean isInitializeEnabled() {
    method setInitializeEnabled (line 167) | public void setInitializeEnabled(Boolean initializeEnabled) {

FILE: spring-cloud-task-core/src/main/java/org/springframework/cloud/task/configuration/TaskRepositoryDatabaseInitializerDetector.java
  class TaskRepositoryDatabaseInitializerDetector (line 31) | class TaskRepositoryDatabaseInitializerDetector extends AbstractBeansOfT...
    method getDatabaseInitializerBeanTypes (line 35) | @Override
    method getOrder (line 40) | @Override

FILE: spring-cloud-task-core/src/main/java/org/springframework/cloud/task/configuration/TaskRepositoryDependsOnDatabaseInitializationDetector.java
  class TaskRepositoryDependsOnDatabaseInitializationDetector (line 30) | class TaskRepositoryDependsOnDatabaseInitializationDetector
    method getDependsOnDatabaseInitializationBeanTypes (line 33) | @Override

FILE: spring-cloud-task-core/src/main/java/org/springframework/cloud/task/configuration/TaskRuntimeHints.java
  class TaskRuntimeHints (line 34) | public class TaskRuntimeHints implements RuntimeHintsRegistrar {
    method registerHints (line 36) | @Override

FILE: spring-cloud-task-core/src/main/java/org/springframework/cloud/task/configuration/observation/DefaultTaskObservationConvention.java
  class DefaultTaskObservationConvention (line 28) | public class DefaultTaskObservationConvention implements TaskObservation...
    method getLowCardinalityKeyValues (line 30) | @Override
    method getName (line 35) | @Override

FILE: spring-cloud-task-core/src/main/java/org/springframework/cloud/task/configuration/observation/ObservationApplicationRunner.java
  class ObservationApplicationRunner (line 31) | class ObservationApplicationRunner implements ApplicationRunner {
    method ObservationApplicationRunner (line 45) | ObservationApplicationRunner(BeanFactory beanFactory, ApplicationRunne...
    method run (line 51) | @Override
    method registry (line 70) | private ObservationRegistry registry() {

FILE: spring-cloud-task-core/src/main/java/org/springframework/cloud/task/configuration/observation/ObservationApplicationRunnerBeanPostProcessor.java
  class ObservationApplicationRunnerBeanPostProcessor (line 29) | class ObservationApplicationRunnerBeanPostProcessor implements BeanPostP...
    method ObservationApplicationRunnerBeanPostProcessor (line 33) | ObservationApplicationRunnerBeanPostProcessor(BeanFactory beanFactory) {
    method postProcessAfterInitialization (line 37) | @Override

FILE: spring-cloud-task-core/src/main/java/org/springframework/cloud/task/configuration/observation/ObservationCommandLineRunner.java
  class ObservationCommandLineRunner (line 30) | class ObservationCommandLineRunner implements CommandLineRunner {
    method ObservationCommandLineRunner (line 44) | ObservationCommandLineRunner(BeanFactory beanFactory, CommandLineRunne...
    method run (line 50) | @Override
    method registry (line 68) | private ObservationRegistry registry() {

FILE: spring-cloud-task-core/src/main/java/org/springframework/cloud/task/configuration/observation/ObservationCommandLineRunnerBeanPostProcessor.java
  class ObservationCommandLineRunnerBeanPostProcessor (line 29) | class ObservationCommandLineRunnerBeanPostProcessor implements BeanPostP...
    method ObservationCommandLineRunnerBeanPostProcessor (line 33) | ObservationCommandLineRunnerBeanPostProcessor(BeanFactory beanFactory) {
    method postProcessAfterInitialization (line 37) | @Override

FILE: spring-cloud-task-core/src/main/java/org/springframework/cloud/task/configuration/observation/ObservationTaskAutoConfiguration.java
  class ObservationTaskAutoConfiguration (line 35) | @AutoConfiguration
    method observedCommandLineRunnerBeanPostProcessor (line 41) | @Bean
    method observedApplicationRunnerBeanPostProcessor (line 47) | @Bean

FILE: spring-cloud-task-core/src/main/java/org/springframework/cloud/task/configuration/observation/TaskDocumentedObservation.java
  type TaskDocumentedObservation (line 24) | enum TaskDocumentedObservation implements ObservationDocumentation {
    method getDefaultConvention (line 31) | @Override
    method getLowCardinalityKeyNames (line 36) | @Override
    method getPrefix (line 41) | @Override
    type TaskRunnerTags (line 50) | enum TaskRunnerTags implements KeyName {
      method asString (line 56) | @Override

FILE: spring-cloud-task-core/src/main/java/org/springframework/cloud/task/configuration/observation/TaskObservationContext.java
  class TaskObservationContext (line 29) | public class TaskObservationContext extends Observation.Context implemen...
    method TaskObservationContext (line 33) | public TaskObservationContext(String beanName) {
    method getBeanName (line 37) | public String getBeanName() {
    method get (line 41) | @Override

FILE: spring-cloud-task-core/src/main/java/org/springframework/cloud/task/configuration/observation/TaskObservationConvention.java
  type TaskObservationConvention (line 28) | public interface TaskObservationConvention extends ObservationConvention...
    method supportsContext (line 30) | @Override

FILE: spring-cloud-task-core/src/main/java/org/springframework/cloud/task/listener/DefaultTaskExecutionObservationConvention.java
  class DefaultTaskExecutionObservationConvention (line 29) | public class DefaultTaskExecutionObservationConvention implements TaskEx...
    method getLowCardinalityKeyValues (line 31) | @Override
    method getHighCardinalityKeyValues (line 36) | @Override
    method getKeyValuesForTaskExecution (line 41) | private KeyValues getKeyValuesForTaskExecution(TaskExecutionObservatio...
    method getName (line 50) | @Override

FILE: spring-cloud-task-core/src/main/java/org/springframework/cloud/task/listener/TaskException.java
  class TaskException (line 24) | public class TaskException extends RuntimeException {
    method TaskException (line 26) | public TaskException(String message, Throwable e) {
    method TaskException (line 30) | public TaskException(String message) {

FILE: spring-cloud-task-core/src/main/java/org/springframework/cloud/task/listener/TaskExecutionException.java
  class TaskExecutionException (line 24) | public class TaskExecutionException extends TaskException {
    method TaskExecutionException (line 26) | public TaskExecutionException(String message) {
    method TaskExecutionException (line 30) | public TaskExecutionException(String message, Throwable throwable) {

FILE: spring-cloud-task-core/src/main/java/org/springframework/cloud/task/listener/TaskExecutionListener.java
  type TaskExecutionListener (line 27) | public interface TaskExecutionListener {
    method onTaskStartup (line 34) | default void onTaskStartup(TaskExecution taskExecution) {
    method onTaskEnd (line 42) | default void onTaskEnd(TaskExecution taskExecution) {
    method onTaskFailed (line 52) | default void onTaskFailed(TaskExecution taskExecution, Throwable throw...

FILE: spring-cloud-task-core/src/main/java/org/springframework/cloud/task/listener/TaskExecutionListenerSupport.java
  class TaskExecutionListenerSupport (line 29) | @Deprecated

FILE: spring-cloud-task-core/src/main/java/org/springframework/cloud/task/listener/TaskExecutionObservation.java
  type TaskExecutionObservation (line 30) | public enum TaskExecutionObservation implements ObservationDocumentation {
    method getDefaultConvention (line 37) | @Override
    method getLowCardinalityKeyNames (line 42) | @Override
    method getPrefix (line 47) | public String getPrefix() {
    type TaskKeyValues (line 52) | public enum TaskKeyValues implements KeyName {
      method asString (line 58) | public String asString() {
      method asString (line 67) | @Override
      method asString (line 77) | @Override
      method asString (line 87) | @Override
      method asString (line 96) | @Override
      method asString (line 106) | @Override
      method asString (line 116) | @Override
      method asString (line 126) | @Override
      method asString (line 136) | @Override
      method asString (line 146) | @Override
      method asString (line 156) | @Override
      method asString (line 166) | @Override
      method asString (line 176) | @Override

FILE: spring-cloud-task-core/src/main/java/org/springframework/cloud/task/listener/TaskExecutionObservationContext.java
  class TaskExecutionObservationContext (line 32) | public class TaskExecutionObservationContext extends Observation.Context
    method TaskExecutionObservationContext (line 41) | public TaskExecutionObservationContext(TaskExecution taskExecution) {
    method getTaskExecution (line 45) | public TaskExecution getTaskExecution() {
    method getExceptionMessage (line 49) | public String getExceptionMessage() {
    method setExceptionMessage (line 53) | public void setExceptionMessage(String exceptionMessage) {
    method getStatus (line 57) | public String getStatus() {
    method setStatus (line 61) | public void setStatus(String status) {
    method get (line 65) | @Override

FILE: spring-cloud-task-core/src/main/java/org/springframework/cloud/task/listener/TaskExecutionObservationConvention.java
  type TaskExecutionObservationConvention (line 28) | public interface TaskExecutionObservationConvention extends ObservationC...
    method supportsContext (line 30) | @Override

FILE: spring-cloud-task-core/src/main/java/org/springframework/cloud/task/listener/TaskLifecycleListener.java
  class TaskLifecycleListener (line 83) | public class TaskLifecycleListener
    method TaskLifecycleListener (line 138) | public TaskLifecycleListener(TaskRepository taskRepository, TaskNameRe...
    method onApplicationEvent (line 169) | @Override
    method stackTraceToString (line 183) | private String stackTraceToString(Throwable exception) {
    method doTaskEnd (line 192) | private void doTaskEnd() {
    method setExitMessage (line 222) | private void setExitMessage(TaskExecution taskExecutionParam) {
    method calcExitStatus (line 228) | private int calcExitStatus() {
    method doTaskStart (line 257) | private void doTaskStart() {
    method invokeOnTaskStartup (line 310) | private TaskExecution invokeOnTaskStartup(TaskExecution taskExecution) {
    method invokeOnTaskEnd (line 332) | private TaskExecution invokeOnTaskEnd(TaskExecution taskExecution) {
    method invokeOnTaskError (line 357) | private TaskExecution invokeOnTaskError(TaskExecution taskExecution, T...
    method getTaskExecutionCopy (line 387) | private TaskExecution getTaskExecutionCopy(TaskExecution taskExecution) {
    method isAutoStartup (line 397) | @Override
    method stop (line 402) | @Override
    method start (line 409) | @Override
    method stop (line 415) | @Override
    method isRunning (line 420) | @Override
    method getPhase (line 425) | @Override
    method destroy (line 430) | @Override
    method getOrder (line 434) | @Override

FILE: spring-cloud-task-core/src/main/java/org/springframework/cloud/task/listener/TaskListenerExecutorObjectFactory.java
  class TaskListenerExecutorObjectFactory (line 52) | public class TaskListenerExecutorObjectFactory implements ObjectFactory<...
    method TaskListenerExecutorObjectFactory (line 66) | public TaskListenerExecutorObjectFactory(ConfigurableApplicationContex...
    method getObject (line 70) | @Override
    method initializeExecutor (line 79) | private void initializeExecutor() {
    method processBean (line 122) | private void processBean(String beanName, final Class<?> type) {
    class MethodGetter (line 155) | private static final class MethodGetter<T extends Annotation> {
      method getMethods (line 157) | public Map<Method, T> getMethods(final Class<?> type, final Class<T>...

FILE: spring-cloud-task-core/src/main/java/org/springframework/cloud/task/listener/TaskObservations.java
  class TaskObservations (line 34) | public class TaskObservations {
    method TaskObservations (line 55) | public TaskObservations(ObservationRegistry observationRegistry,
    method onTaskStartup (line 71) | public void onTaskStartup(TaskExecution taskExecution) {
    method getValueOrDefault (line 110) | private String getValueOrDefault(Object value) {
    method onTaskFailed (line 114) | public void onTaskFailed(Throwable throwable) {
    method onTaskEnd (line 119) | public void onTaskEnd(TaskExecution taskExecution) {

FILE: spring-cloud-task-core/src/main/java/org/springframework/cloud/task/listener/annotation/TaskListenerExecutor.java
  class TaskListenerExecutor (line 36) | public class TaskListenerExecutor implements TaskExecutionListener {
    method TaskListenerExecutor (line 44) | public TaskListenerExecutor(Map<Method, Set<Object>> beforeTaskInstances,
    method onTaskStartup (line 56) | @Override
    method onTaskEnd (line 65) | @Override
    method onTaskFailed (line 75) | @Override
    method executeTaskListener (line 81) | private void executeTaskListener(TaskExecution taskExecution, Set<Meth...
    method executeTaskListenerWithThrowable (line 106) | private void executeTaskListenerWithThrowable(TaskExecution taskExecut...

FILE: spring-cloud-task-core/src/main/java/org/springframework/cloud/task/repository/TaskExecution.java
  class TaskExecution (line 33) | public class TaskExecution {
    method TaskExecution (line 89) | public TaskExecution() {
    method TaskExecution (line 93) | public TaskExecution(long executionId, Integer exitCode, String taskNa...
    method TaskExecution (line 110) | public TaskExecution(long executionId, Integer exitCode, String taskNa...
    method getExecutionId (line 118) | public long getExecutionId() {
    method getExitCode (line 122) | public Integer getExitCode() {
    method setExitCode (line 126) | public void setExitCode(Integer exitCode) {
    method getTaskName (line 130) | public String getTaskName() {
    method setTaskName (line 134) | public void setTaskName(String taskName) {
    method getStartTime (line 138) | public LocalDateTime getStartTime() {
    method setStartTime (line 142) | public void setStartTime(LocalDateTime startTime) {
    method getEndTime (line 146) | public LocalDateTime getEndTime() {
    method setEndTime (line 150) | public void setEndTime(LocalDateTime endTime) {
    method getExitMessage (line 154) | public String getExitMessage() {
    method setExitMessage (line 158) | public void setExitMessage(String exitMessage) {
    method getArguments (line 162) | public List<String> getArguments() {
    method setArguments (line 166) | public void setArguments(List<String> arguments) {
    method getErrorMessage (line 170) | public String getErrorMessage() {
    method setErrorMessage (line 174) | public void setErrorMessage(String errorMessage) {
    method getExternalExecutionId (line 178) | public String getExternalExecutionId() {
    method setExternalExecutionId (line 182) | public void setExternalExecutionId(String externalExecutionId) {
    method getParentExecutionId (line 186) | public Long getParentExecutionId() {
    method setParentExecutionId (line 190) | public void setParentExecutionId(Long parentExecutionId) {
    method toString (line 194) | @Override

FILE: spring-cloud-task-core/src/main/java/org/springframework/cloud/task/repository/TaskExplorer.java
  type TaskExplorer (line 32) | public interface TaskExplorer {
    method getTaskExecution (line 39) | TaskExecution getTaskExecution(long executionId);
    method findRunningTaskExecutions (line 47) | Page<TaskExecution> findRunningTaskExecutions(String taskName, Pageabl...
    method findTaskExecutionsByExecutionId (line 56) | Page<TaskExecution> findTaskExecutionsByExecutionId(String externalExe...
    method getTaskNames (line 62) | List<String> getTaskNames();
    method getTaskExecutionCountByTaskName (line 69) | long getTaskExecutionCountByTaskName(String taskName);
    method getTaskExecutionCount (line 75) | long getTaskExecutionCount();
    method getRunningTaskExecutionCount (line 81) | long getRunningTaskExecutionCount();
    method getTaskExecutionCountByExternalExecutionId (line 88) | long getTaskExecutionCountByExternalExecutionId(String externalExecuti...
    method findTaskExecutionsByName (line 96) | Page<TaskExecution> findTaskExecutionsByName(String taskName, Pageable...
    method findAll (line 104) | Page<TaskExecution> findAll(Pageable pageable);
    method getTaskExecutionIdByJobExecutionId (line 112) | Long getTaskExecutionIdByJobExecutionId(long jobExecutionId);
    method getJobExecutionIdsByTaskExecutionId (line 121) | Set<Long> getJobExecutionIdsByTaskExecutionId(long taskExecutionId);
    method getLatestTaskExecutionsByTaskNames (line 140) | List<TaskExecution> getLatestTaskExecutionsByTaskNames(String... taskN...
    method getLatestTaskExecutionForTaskName (line 150) | TaskExecution getLatestTaskExecutionForTaskName(String taskName);

FILE: spring-cloud-task-core/src/main/java/org/springframework/cloud/task/repository/TaskNameResolver.java
  type TaskNameResolver (line 24) | public interface TaskNameResolver {
    method getTaskName (line 29) | String getTaskName();

FILE: spring-cloud-task-core/src/main/java/org/springframework/cloud/task/repository/TaskRepository.java
  type TaskRepository (line 32) | public interface TaskRepository {
    method completeTaskExecution (line 42) | @Transactional("${spring.cloud.task.transaction-manager:springCloudTas...
    method completeTaskExecution (line 55) | @Transactional("${spring.cloud.task.transaction-manager:springCloudTas...
    method createTaskExecution (line 68) | @Transactional("${spring.cloud.task.transaction-manager:springCloudTas...
    method createTaskExecution (line 79) | @Transactional("${spring.cloud.task.transaction-manager:springCloudTas...
    method createTaskExecution (line 89) | @Transactional("${spring.cloud.task.transaction-manager:springCloudTas...
    method startTaskExecution (line 101) | @Transactional("${spring.cloud.task.transaction-manager:springCloudTas...
    method updateExternalExecutionId (line 110) | @Transactional("${spring.cloud.task.transaction-manager:springCloudTas...
    method startTaskExecution (line 124) | @Transactional("${spring.cloud.task.transaction-manager:springCloudTas...

FILE: spring-cloud-task-core/src/main/java/org/springframework/cloud/task/repository/dao/JdbcTaskExecutionDao.java
  class JdbcTaskExecutionDao (line 66) | public class JdbcTaskExecutionDao implements TaskExecutionDao {
    method JdbcTaskExecutionDao (line 191) | public JdbcTaskExecutionDao(DataSource dataSource, String tablePrefix) {
    method JdbcTaskExecutionDao (line 202) | public JdbcTaskExecutionDao(DataSource dataSource) {
    method createTaskExecution (line 211) | @Override
    method createTaskExecution (line 217) | @Override
    method startTaskExecution (line 239) | @Override
    method startTaskExecution (line 245) | @Override
    method completeTaskExecution (line 274) | @Override
    method completeTaskExecution (line 298) | @Override
    method getTaskExecution (line 304) | @Override
    method getTaskExecutionCountByTaskName (line 320) | @Override
    method getRunningTaskExecutionCountByTaskName (line 335) | @Override
    method getRunningTaskExecutionCount (line 349) | @Override
    method getLatestTaskExecutionsByTaskNames (line 362) | @Override
    method getLatestTaskExecutionForTaskName (line 388) | @Override
    method getTaskExecutionCount (line 404) | @Override
    method findRunningTaskExecutions (line 416) | @Override
    method findTaskExecutionsByExternalExecutionId (line 422) | @Override
    method getTaskExecutionCountByExternalExecutionId (line 429) | @Override
    method findTaskExecutionsByName (line 443) | @Override
    method getTaskNames (line 449) | @Override
    method findAll (line 454) | @Override
    method setTaskIncrementer (line 460) | public void setTaskIncrementer(DataFieldMaxValueIncrementer taskIncrem...
    method getNextExecutionId (line 464) | public long getNextExecutionId() {
    method getTaskExecutionIdByJobExecutionId (line 468) | @Override
    method getJobExecutionIdsByTaskExecutionId (line 482) | @Override
    method updateExternalExecutionId (line 507) | @Override
    method queryForPageableResults (line 518) | private Page<TaskExecution> queryForPageableResults(Pageable pageable,...
    method getQuery (line 564) | private String getQuery(String base) {
    method insertTaskArguments (line 573) | private void insertTaskArguments(long executionId, List<String> taskAr...
    method insertArgument (line 585) | private void insertArgument(long taskExecutionId, String taskParam) {
    method getTaskArguments (line 592) | private List<String> getTaskArguments(long taskExecutionId) {
    class TaskExecutionRowMapper (line 609) | private final class TaskExecutionRowMapper implements RowMapper<TaskEx...
      method TaskExecutionRowMapper (line 611) | private TaskExecutionRowMapper() {
      method mapRow (line 614) | @Override
      method getNullableExitCode (line 645) | private Integer getNullableExitCode(ResultSet rs) throws SQLException {

FILE: spring-cloud-task-core/src/main/java/org/springframework/cloud/task/repository/dao/MapTaskExecutionDao.java
  class MapTaskExecutionDao (line 47) | public class MapTaskExecutionDao implements TaskExecutionDao {
    method MapTaskExecutionDao (line 55) | public MapTaskExecutionDao() {
    method createTaskExecution (line 60) | @Override
    method createTaskExecution (line 66) | @Override
    method startTaskExecution (line 76) | @Override
    method startTaskExecution (line 82) | @Override
    method completeTaskExecution (line 96) | @Override
    method completeTaskExecution (line 110) | @Override
    method getTaskExecution (line 115) | @Override
    method getTaskExecutionCountByTaskName (line 120) | @Override
    method getTaskExecutionCountByExternalExecutionId (line 131) | @Override
    method getRunningTaskExecutionCountByTaskName (line 142) | @Override
    method getRunningTaskExecutionCount (line 153) | @Override
    method getTaskExecutionCount (line 164) | @Override
    method findRunningTaskExecutions (line 169) | @Override
    method findTaskExecutionsByExternalExecutionId (line 180) | @Override
    method findTaskExecutionsByName (line 192) | @Override
    method getTaskNames (line 203) | @Override
    method findAll (line 212) | @Override
    method getTaskExecutions (line 220) | public Map<Long, TaskExecution> getTaskExecutions() {
    method getNextExecutionId (line 224) | public long getNextExecutionId() {
    method getTaskExecutionIdByJobExecutionId (line 228) | @Override
    method getJobExecutionIdsByTaskExecutionId (line 246) | @Override
    method updateExternalExecutionId (line 256) | @Override
    method getBatchJobAssociations (line 263) | public ConcurrentMap<Long, Set<Long>> getBatchJobAssociations() {
    method getTaskExecutionTreeSet (line 267) | private TreeSet<TaskExecution> getTaskExecutionTreeSet() {
    method getPageFromList (line 280) | private Page getPageFromList(List<TaskExecution> executionList, Pageab...
    method getLatestTaskExecutionsByTaskNames (line 286) | @Override
    method getLatestTaskExecutionForTaskName (line 326) | @Override
    class TaskExecutionComparator (line 342) | private static final class TaskExecutionComparator implements Comparat...
      method compare (line 344) | @Override

FILE: spring-cloud-task-core/src/main/java/org/springframework/cloud/task/repository/dao/TaskExecutionDao.java
  type TaskExecutionDao (line 35) | public interface TaskExecutionDao {
    method createTaskExecution (line 45) | TaskExecution createTaskExecution(String taskName, LocalDateTime start...
    method createTaskExecution (line 58) | TaskExecution createTaskExecution(String taskName, LocalDateTime start...
    method startTaskExecution (line 72) | TaskExecution startTaskExecution(long executionId, String taskName, Lo...
    method startTaskExecution (line 87) | TaskExecution startTaskExecution(long executionId, String taskName, Lo...
    method completeTaskExecution (line 99) | void completeTaskExecution(long executionId, Integer exitCode, LocalDa...
    method completeTaskExecution (line 109) | void completeTaskExecution(long executionId, Integer exitCode, LocalDa...
    method getTaskExecution (line 116) | TaskExecution getTaskExecution(long executionId);
    method getTaskExecutionCountByTaskName (line 123) | long getTaskExecutionCountByTaskName(String taskName);
    method getRunningTaskExecutionCountByTaskName (line 131) | long getRunningTaskExecutionCountByTaskName(String taskName);
    method getRunningTaskExecutionCount (line 137) | long getRunningTaskExecutionCount();
    method getTaskExecutionCount (line 143) | long getTaskExecutionCount();
    method findRunningTaskExecutions (line 151) | Page<TaskExecution> findRunningTaskExecutions(String taskName, Pageabl...
    method findTaskExecutionsByExternalExecutionId (line 160) | Page<TaskExecution> findTaskExecutionsByExternalExecutionId(String ext...
    method getTaskExecutionCountByExternalExecutionId (line 169) | long getTaskExecutionCountByExternalExecutionId(String externalExecuti...
    method findTaskExecutionsByName (line 178) | Page<TaskExecution> findTaskExecutionsByName(String taskName, Pageable...
    method getTaskNames (line 184) | List<String> getTaskNames();
    method findAll (line 192) | Page<TaskExecution> findAll(Pageable pageable);
    method getNextExecutionId (line 198) | long getNextExecutionId();
    method getTaskExecutionIdByJobExecutionId (line 206) | Long getTaskExecutionIdByJobExecutionId(long jobExecutionId);
    method getJobExecutionIdsByTaskExecutionId (line 214) | Set<Long> getJobExecutionIdsByTaskExecutionId(long taskExecutionId);
    method updateExternalExecutionId (line 221) | void updateExternalExecutionId(long taskExecutionId, String externalEx...
    method getLatestTaskExecutionsByTaskNames (line 240) | List<TaskExecution> getLatestTaskExecutionsByTaskNames(String... taskN...
    method getLatestTaskExecutionForTaskName (line 250) | TaskExecution getLatestTaskExecutionForTaskName(String taskName);

FILE: spring-cloud-task-core/src/main/java/org/springframework/cloud/task/repository/database/PagingQueryProvider.java
  type PagingQueryProvider (line 31) | public interface PagingQueryProvider {
    method init (line 38) | void init(DataSource dataSource) throws Exception;
    method getParameterCount (line 44) | int getParameterCount();
    method isUsingNamedParameters (line 50) | boolean isUsingNamedParameters();
    method getSortKeys (line 57) | Map<String, Order> getSortKeys();
    method getPageQuery (line 65) | String getPageQuery(Pageable pageable);

FILE: spring-cloud-task-core/src/main/java/org/springframework/cloud/task/repository/database/support/AbstractSqlPagingQueryProvider.java
  class AbstractSqlPagingQueryProvider (line 47) | public abstract class AbstractSqlPagingQueryProvider implements PagingQu...
    method getSelectClause (line 64) | protected String getSelectClause() {
    method setSelectClause (line 71) | public void setSelectClause(String selectClause) {
    method getFromClause (line 78) | protected String getFromClause() {
    method setFromClause (line 85) | public void setFromClause(String fromClause) {
    method getWhereClause (line 92) | protected String getWhereClause() {
    method setWhereClause (line 99) | public void setWhereClause(String whereClause) {
    method getSortKeys (line 113) | @Override
    method setSortKeys (line 121) | public void setSortKeys(Map<String, Order> sortKeys) {
    method getParameterCount (line 125) | @Override
    method isUsingNamedParameters (line 130) | @Override
    method init (line 135) | @Override
    method removeKeyWord (line 158) | private String removeKeyWord(String keyWord, String clause) {

FILE: spring-cloud-task-core/src/main/java/org/springframework/cloud/task/repository/database/support/Db2PagingQueryProvider.java
  class Db2PagingQueryProvider (line 29) | public class Db2PagingQueryProvider extends AbstractSqlPagingQueryProvid...
    method getPageQuery (line 31) | @Override
    method generateRowNumSqlQueryWithNesting (line 38) | private String generateRowNumSqlQueryWithNesting(String selectClause, ...

FILE: spring-cloud-task-core/src/main/java/org/springframework/cloud/task/repository/database/support/H2PagingQueryProvider.java
  class H2PagingQueryProvider (line 28) | public class H2PagingQueryProvider extends AbstractSqlPagingQueryProvider {
    method getPageQuery (line 30) | @Override

FILE: spring-cloud-task-core/src/main/java/org/springframework/cloud/task/repository/database/support/HsqlPagingQueryProvider.java
  class HsqlPagingQueryProvider (line 28) | public class HsqlPagingQueryProvider extends AbstractSqlPagingQueryProvi...
    method getPageQuery (line 30) | @Override

FILE: spring-cloud-task-core/src/main/java/org/springframework/cloud/task/repository/database/support/MariaDbPagingQueryProvider.java
  class MariaDbPagingQueryProvider (line 28) | public class MariaDbPagingQueryProvider extends AbstractSqlPagingQueryPr...
    method getPageQuery (line 30) | @Override

FILE: spring-cloud-task-core/src/main/java/org/springframework/cloud/task/repository/database/support/MySqlPagingQueryProvider.java
  class MySqlPagingQueryProvider (line 27) | public class MySqlPagingQueryProvider extends AbstractSqlPagingQueryProv...
    method getPageQuery (line 29) | @Override

FILE: spring-cloud-task-core/src/main/java/org/springframework/cloud/task/repository/database/support/OraclePagingQueryProvider.java
  class OraclePagingQueryProvider (line 28) | public class OraclePagingQueryProvider extends AbstractSqlPagingQueryPro...
    method getPageQuery (line 30) | @Override
    method generateRowNumSqlQueryWithNesting (line 37) | private String generateRowNumSqlQueryWithNesting(String selectClause, ...

FILE: spring-cloud-task-core/src/main/java/org/springframework/cloud/task/repository/database/support/PostgresPagingQueryProvider.java
  class PostgresPagingQueryProvider (line 28) | public class PostgresPagingQueryProvider extends AbstractSqlPagingQueryP...
    method getPageQuery (line 30) | @Override

FILE: spring-cloud-task-core/src/main/java/org/springframework/cloud/task/repository/database/support/SqlPagingQueryProviderFactoryBean.java
  class SqlPagingQueryProviderFactoryBean (line 52) | public class SqlPagingQueryProviderFactoryBean implements FactoryBean<Pa...
    method setDatabaseType (line 85) | public void setDatabaseType(String databaseType) {
    method setDataSource (line 93) | public void setDataSource(DataSource dataSource) {
    method setFromClause (line 101) | public void setFromClause(String fromClause) {
    method setWhereClause (line 109) | public void setWhereClause(String whereClause) {
    method setSelectClause (line 116) | public void setSelectClause(String selectClause) {
    method setSortKeys (line 124) | public void setSortKeys(Map<String, Order> sortKeys) {
    method getObject (line 134) | @Override
    method getObjectType (line 167) | @Override
    method isSingleton (line 177) | @Override

FILE: spring-cloud-task-core/src/main/java/org/springframework/cloud/task/repository/database/support/SqlPagingQueryUtils.java
  class SqlPagingQueryUtils (line 28) | public final class SqlPagingQueryUtils {
    method SqlPagingQueryUtils (line 30) | private SqlPagingQueryUtils() {
    method generateLimitJumpToQuery (line 40) | public static String generateLimitJumpToQuery(AbstractSqlPagingQueryPr...
    method generateTopJumpToQuery (line 58) | public static String generateTopJumpToQuery(AbstractSqlPagingQueryProv...
    method buildWhereClause (line 74) | public static void buildWhereClause(AbstractSqlPagingQueryProvider pro...
    method buildSortClause (line 95) | public static String buildSortClause(AbstractSqlPagingQueryProvider pr...
    method buildSortClause (line 104) | public static String buildSortClause(Map<String, Order> sortKeys) {

FILE: spring-cloud-task-core/src/main/java/org/springframework/cloud/task/repository/database/support/SqlServerPagingQueryProvider.java
  class SqlServerPagingQueryProvider (line 28) | public class SqlServerPagingQueryProvider extends AbstractSqlPagingQuery...
    method getPageQuery (line 30) | @Override
    method generateRowNumSqlQueryWithNesting (line 37) | private String generateRowNumSqlQueryWithNesting(String selectClause, ...

FILE: spring-cloud-task-core/src/main/java/org/springframework/cloud/task/repository/support/DatabaseType.java
  type DatabaseType (line 38) | public enum DatabaseType {
    method DatabaseType (line 106) | DatabaseType(String productName) {
    method fromMetaData (line 117) | public static DatabaseType fromMetaData(DataSource dataSource) throws ...
    method fromProductName (line 166) | public static DatabaseType fromProductName(String productName) {
    method getProductName (line 175) | private String getProductName() {

FILE: spring-cloud-task-core/src/main/java/org/springframework/cloud/task/repository/support/SimpleTaskExplorer.java
  class SimpleTaskExplorer (line 37) | public class SimpleTaskExplorer implements TaskExplorer {
    method SimpleTaskExplorer (line 41) | public SimpleTaskExplorer(TaskExecutionDaoFactoryBean taskExecutionDao...
    method getTaskExecution (line 52) | @Override
    method findRunningTaskExecutions (line 57) | @Override
    method findTaskExecutionsByExecutionId (line 62) | @Override
    method getTaskNames (line 67) | @Override
    method getTaskExecutionCountByTaskName (line 72) | @Override
    method getTaskExecutionCount (line 77) | @Override
    method getRunningTaskExecutionCount (line 82) | @Override
    method getTaskExecutionCountByExternalExecutionId (line 87) | @Override
    method findTaskExecutionsByName (line 92) | @Override
    method findAll (line 97) | @Override
    method getTaskExecutionIdByJobExecutionId (line 102) | @Override
    method getJobExecutionIdsByTaskExecutionId (line 107) | @Override
    method getLatestTaskExecutionsByTaskNames (line 112) | @Override
    method getLatestTaskExecutionForTaskName (line 117) | @Override

FILE: spring-cloud-task-core/src/main/java/org/springframework/cloud/task/repository/support/SimpleTaskNameResolver.java
  class SimpleTaskNameResolver (line 37) | public class SimpleTaskNameResolver implements TaskNameResolver, Applica...
    method setConfiguredName (line 43) | @Value("${spring.cloud.task.name:}")
    method setApplicationContext (line 48) | @Override
    method getTaskName (line 53) | @Override

FILE: spring-cloud-task-core/src/main/java/org/springframework/cloud/task/repository/support/SimpleTaskRepository.java
  class SimpleTaskRepository (line 37) | public class SimpleTaskRepository implements TaskRepository {
    method SimpleTaskRepository (line 68) | public SimpleTaskRepository(FactoryBean<TaskExecutionDao> taskExecutio...
    method SimpleTaskRepository (line 74) | public SimpleTaskRepository(FactoryBean<TaskExecutionDao> taskExecutio...
    method completeTaskExecution (line 89) | @Override
    method completeTaskExecution (line 95) | @Override
    method createTaskExecution (line 111) | @Override
    method createTaskExecution (line 122) | @Override
    method createTaskExecution (line 131) | @Override
    method startTaskExecution (line 136) | @Override
    method updateExternalExecutionId (line 142) | @Override
    method startTaskExecution (line 148) | @Override
    method getTaskExecutionDao (line 162) | public TaskExecutionDao getTaskExecutionDao() {
    method initialize (line 167) | private void initialize() {
    method validateCreateInformation (line 183) | private void validateCreateInformation(TaskExecution taskExecution) {
    method validateCompletedTaskExitInformation (line 191) | private void validateCompletedTaskExitInformation(long executionId, In...
    method trimMessage (line 197) | private String trimMessage(String exitMessage, int maxSize) {
    method setMaxExitMessageSize (line 205) | public void setMaxExitMessageSize(int maxExitMessageSize) {
    method setMaxTaskNameSize (line 209) | public void setMaxTaskNameSize(int maxTaskNameSize) {
    method setMaxErrorMessageSize (line 213) | public void setMaxErrorMessageSize(int maxErrorMessageSize) {

FILE: spring-cloud-task-core/src/main/java/org/springframework/cloud/task/repository/support/TaskExecutionDaoFactoryBean.java
  class TaskExecutionDaoFactoryBean (line 46) | public class TaskExecutionDaoFactoryBean implements FactoryBean<TaskExec...
    method TaskExecutionDaoFactoryBean (line 58) | public TaskExecutionDaoFactoryBean() {
    method TaskExecutionDaoFactoryBean (line 66) | public TaskExecutionDaoFactoryBean(DataSource dataSource, String table...
    method TaskExecutionDaoFactoryBean (line 76) | public TaskExecutionDaoFactoryBean(DataSource dataSource) {
    method getObject (line 82) | @Override
    method getObjectType (line 115) | @Override
    method isSingleton (line 120) | @Override
    method buildTaskExecutionDao (line 125) | private void buildTaskExecutionDao(DataSource dataSource) {
    method isSqlServerTableSequenceAvailable (line 143) | private boolean isSqlServerTableSequenceAvailable(String incrementerNa...

FILE: spring-cloud-task-core/src/main/java/org/springframework/cloud/task/repository/support/TaskRepositoryInitializer.java
  class TaskRepositoryInitializer (line 52) | public final class TaskRepositoryInitializer implements InitializingBean {
    method TaskRepositoryInitializer (line 73) | public TaskRepositoryInitializer(TaskProperties taskProperties) {
    method setDataSource (line 77) | public void setDataSource(DataSource dataSource) {
    method setResourceLoader (line 81) | @Autowired(required = false)
    method getDatabaseType (line 86) | private String getDatabaseType(DataSource dataSource) {
    method afterPropertiesSet (line 99) | @Override

FILE: spring-cloud-task-core/src/main/resources/org/springframework/cloud/task/schema-db2.sql
  type TASK_EXECUTION (line 2) | CREATE TABLE TASK_EXECUTION  (
  type TASK_EXECUTION_PARAMS (line 15) | CREATE TABLE TASK_EXECUTION_PARAMS  (
  type TASK_TASK_BATCH (line 22) | CREATE TABLE TASK_TASK_BATCH (
  type TASK_LOCK (line 31) | CREATE TABLE TASK_LOCK  (

FILE: spring-cloud-task-core/src/main/resources/org/springframework/cloud/task/schema-h2.sql
  type TASK_EXECUTION (line 2) | CREATE TABLE TASK_EXECUTION  (
  type TASK_EXECUTION_PARAMS (line 15) | CREATE TABLE TASK_EXECUTION_PARAMS  (
  type TASK_TASK_BATCH (line 22) | CREATE TABLE TASK_TASK_BATCH (
  type TASK_LOCK (line 31) | CREATE TABLE TASK_LOCK  (

FILE: spring-cloud-task-core/src/main/resources/org/springframework/cloud/task/schema-hsqldb.sql
  type TASK_EXECUTION (line 2) | CREATE TABLE TASK_EXECUTION  (
  type TASK_EXECUTION_PARAMS (line 15) | CREATE TABLE TASK_EXECUTION_PARAMS  (
  type TASK_TASK_BATCH (line 22) | CREATE TABLE TASK_TASK_BATCH (
  type TASK_SEQ (line 29) | CREATE TABLE TASK_SEQ (
  type TASK_LOCK (line 33) | CREATE TABLE TASK_LOCK  (

FILE: spring-cloud-task-core/src/main/resources/org/springframework/cloud/task/schema-mariadb.sql
  type TASK_EXECUTION (line 2) | CREATE TABLE TASK_EXECUTION  (
  type TASK_EXECUTION_PARAMS (line 15) | CREATE TABLE TASK_EXECUTION_PARAMS  (
  type TASK_TASK_BATCH (line 22) | CREATE TABLE TASK_TASK_BATCH (
  type TASK_LOCK (line 29) | CREATE TABLE TASK_LOCK  (

FILE: spring-cloud-task-core/src/main/resources/org/springframework/cloud/task/schema-mysql.sql
  type TASK_EXECUTION (line 2) | CREATE TABLE TASK_EXECUTION  (
  type TASK_EXECUTION_PARAMS (line 15) | CREATE TABLE TASK_EXECUTION_PARAMS  (
  type TASK_TASK_BATCH (line 22) | CREATE TABLE TASK_TASK_BATCH (
  type TASK_SEQ (line 29) | CREATE TABLE TASK_SEQ (
  type TASK_LOCK (line 37) | CREATE TABLE TASK_LOCK  (

FILE: spring-cloud-task-core/src/main/resources/org/springframework/cloud/task/schema-oracle.sql
  type TASK_EXECUTION (line 2) | CREATE TABLE TASK_EXECUTION  (
  type TASK_EXECUTION_PARAMS (line 15) | CREATE TABLE TASK_EXECUTION_PARAMS  (
  type TASK_TASK_BATCH (line 22) | CREATE TABLE TASK_TASK_BATCH (
  type TASK_LOCK (line 31) | CREATE TABLE TASK_LOCK  (

FILE: spring-cloud-task-core/src/main/resources/org/springframework/cloud/task/schema-postgresql.sql
  type TASK_EXECUTION (line 2) | CREATE TABLE TASK_EXECUTION  (
  type TASK_EXECUTION_PARAMS (line 15) | CREATE TABLE TASK_EXECUTION_PARAMS  (
  type TASK_TASK_BATCH (line 22) | CREATE TABLE TASK_TASK_BATCH (
  type TASK_LOCK (line 31) | CREATE TABLE TASK_LOCK  (

FILE: spring-cloud-task-core/src/main/resources/org/springframework/cloud/task/schema-sqlserver.sql
  type TASK_EXECUTION (line 1) | CREATE TABLE TASK_EXECUTION  (
  type TASK_EXECUTION_PARAMS (line 14) | CREATE TABLE TASK_EXECUTION_PARAMS  (
  type TASK_TASK_BATCH (line 21) | CREATE TABLE TASK_TASK_BATCH (
  type TASK_LOCK (line 30) | CREATE TABLE TASK_LOCK  (

FILE: spring-cloud-task-core/src/test/java/org/springframework/cloud/task/SimpleSingleTaskAutoConfigurationTests.java
  class SimpleSingleTaskAutoConfigurationTests (line 37) | public class SimpleSingleTaskAutoConfigurationTests {
    method testConfiguration (line 39) | @Test

FILE: spring-cloud-task-core/src/test/java/org/springframework/cloud/task/SimpleSingleTaskAutoConfigurationWithDataSourceTests.java
  class SimpleSingleTaskAutoConfigurationWithDataSourceTests (line 38) | public class SimpleSingleTaskAutoConfigurationWithDataSourceTests {
    method testConfiguration (line 40) | @Test

FILE: spring-cloud-task-core/src/test/java/org/springframework/cloud/task/SimpleTaskAutoConfigurationTests.java
  class SimpleTaskAutoConfigurationTests (line 63) | public class SimpleTaskAutoConfigurationTests {
    method testRepository (line 65) | @Test
    method testAutoConfigurationDisabled (line 79) | @Test
    method testRepositoryInitialized (line 96) | @Test
    method testRepositoryBeansDependOnTaskRepositoryInitializer (line 109) | @Test
    method testRepositoryNotInitialized (line 127) | @Test
    method testTaskNameResolver (line 139) | @Test
    method testMultipleConfigurers (line 153) | @Test
    method testMultipleDataSources (line 165) | @Test
    method testSpecifyTransactionManager (line 178) | @Test
    method testDefaultTransactionManager (line 192) | @Test
    method verifyExceptionThrownDefaultExecutable (line 204) | public void verifyExceptionThrownDefaultExecutable(Class classToCheck,
    method verifyExceptionThrownDefaultExecutable (line 216) | public void verifyExceptionThrownDefaultExecutable(Class classToCheck,...
    method verifyExceptionThrown (line 228) | public void verifyExceptionThrown(Class classToCheck, String message, ...
    method testWithDataSourceProxy (line 236) | @Test
    class MultipleConfigurers (line 251) | @Configuration
      method taskConfigurer1 (line 254) | @Bean
      method taskConfigurer2 (line 259) | @Bean
    class MultipleDataSources (line 266) | @Configuration
      method dataSource (line 269) | @Bean
      method dataSource2 (line 274) | @Bean
    class DataSourceProxyConfiguration (line 281) | @Configuration
      method proxyDataSource (line 287) | @Bean
    class TaskLifecycleListenerConfiguration (line 299) | @EnableTask

FILE: spring-cloud-task-core/src/test/java/org/springframework/cloud/task/TaskCoreTests.java
  class TaskCoreTests (line 42) | @ExtendWith(OutputCaptureExtension.class)
    method teardown (line 64) | @AfterEach
    method successfulTaskTest (line 71) | @Test
    method successfulTaskTestWithAnnotation (line 89) | @Test
    method exceptionTaskTest (line 104) | @Test
    method invalidExecutionId (line 128) | @Test
    class TaskConfiguration (line 147) | @EnableTask
      method commandLineRunner (line 151) | @Bean
    class TaskConfigurationWithAnotation (line 162) | @EnableTask
      method commandLineRunner (line 166) | @Bean
    class TaskExceptionConfiguration (line 177) | @EnableTask
      method commandLineRunner (line 181) | @Bean

FILE: spring-cloud-task-core/src/test/java/org/springframework/cloud/task/TaskRepositoryInitializerDefaultTaskConfigurerTests.java
  class TaskRepositoryInitializerDefaultTaskConfigurerTests (line 45) | @ExtendWith(SpringExtension.class)
    method testTablesCreated (line 53) | @Test

FILE: spring-cloud-task-core/src/test/java/org/springframework/cloud/task/TaskRepositoryInitializerNoDataSourceTaskConfigurerTests.java
  class TaskRepositoryInitializerNoDataSourceTaskConfigurerTests (line 46) | @ExtendWith(SpringExtension.class)
    method testNoTablesCreated (line 54) | @Test

FILE: spring-cloud-task-core/src/test/java/org/springframework/cloud/task/configuration/DefaultTaskConfigurerTests.java
  class DefaultTaskConfigurerTests (line 44) | @ExtendWith(SpringExtension.class)
    method resourcelessTransactionManagerTest (line 54) | @Test
    method testDefaultContext (line 64) | @Test
    method dataSourceTransactionManagerTest (line 75) | @Test
    method taskExplorerTest (line 88) | @Test
    method taskNameResolverTest (line 96) | @Test
    method taskRepositoryTest (line 104) | @Test
    method taskDataSource (line 112) | @Test
    method taskDataSourceWithProperties (line 120) | @Test
    method validatePrefix (line 149) | private void validatePrefix(DefaultTaskConfigurer defaultTaskConfigure...
    method getPrefix (line 154) | private String getPrefix(DefaultTaskConfigurer defaultTaskConfigurer) {
    class EntityManagerConfiguration (line 162) | @Configuration
      method entityManager (line 165) | @Bean

FILE: spring-cloud-task-core/src/test/java/org/springframework/cloud/task/configuration/RepositoryTransactionManagerConfigurationTests.java
  class RepositoryTransactionManagerConfigurationTests (line 49) | public class RepositoryTransactionManagerConfigurationTests {
    method testZeroCustomTransactionManagerConfiguration (line 51) | @Test
    method testSingleCustomTransactionManagerConfiguration (line 67) | @Test
    method testMultipleCustomTransactionManagerConfiguration (line 72) | @Test
    method testConfiguration (line 77) | private void testConfiguration(Class configurationClass) {
    class ZeroTransactionManagerConfiguration (line 104) | @EnableTask
      method taskConfigurer (line 108) | @Bean
      method dataSource (line 113) | @Bean
    class SingleTransactionManagerConfiguration (line 120) | @EnableTask
      method taskConfigurer (line 124) | @Bean
      method dataSource (line 134) | @Bean
      method transactionManager (line 139) | @Bean
    class MultipleTransactionManagerConfiguration (line 146) | @EnableTask
      method taskConfigurer (line 150) | @Bean
      method dataSource (line 160) | @Bean
      method transactionManager (line 165) | @Bean
      method dataSource2 (line 170) | @Bean
      method transactionManager2 (line 175) | @Bean
    class TestJdbcTransactionManager (line 182) | private static class TestJdbcTransactionManager extends JdbcTransactio...
      method TestJdbcTransactionManager (line 184) | protected TestJdbcTransactionManager(DataSource dataSource) {
      method doCommit (line 190) | @Override

FILE: spring-cloud-task-core/src/test/java/org/springframework/cloud/task/configuration/TaskPropertiesTests.java
  class TaskPropertiesTests (line 29) | @DirtiesContext
    method test (line 38) | @Test

FILE: spring-cloud-task-core/src/test/java/org/springframework/cloud/task/configuration/TestConfiguration.java
  class TestConfiguration (line 41) | @Configuration
    method taskRepositoryInitializer (line 52) | @Bean
    method taskExplorer (line 62) | @Bean
    method taskRepository (line 67) | @Bean
    method transactionManager (line 72) | @Bean
    method afterPropertiesSet (line 82) | @Override

FILE: spring-cloud-task-core/src/test/java/org/springframework/cloud/task/configuration/observation/ObservationIntegrationTests.java
  class ObservationIntegrationTests (line 52) | @AutoConfigureTracing
    method testSuccessfulObservation (line 62) | @Test
    method finishedSpans (line 79) | private List<FinishedSpan> finishedSpans() {
    class Config (line 83) | @Configuration
      method testSpanHandler (line 93) | @Bean
      method sampler (line 98) | @Bean
      method myCommandLineRunner (line 103) | @Bean
      method myApplicationRunner (line 109) | @Bean

FILE: spring-cloud-task-core/src/test/java/org/springframework/cloud/task/listener/TaskExceptionTests.java
  class TaskExceptionTests (line 26) | public class TaskExceptionTests {
    method testTaskException (line 30) | @Test
    method testTaskExecutionException (line 41) | @Test

FILE: spring-cloud-task-core/src/test/java/org/springframework/cloud/task/listener/TaskExecutionListenerTests.java
  class TaskExecutionListenerTests (line 49) | public class TaskExecutionListenerTests {
    method setup (line 61) | @BeforeTask
    method tearDown (line 68) | @AfterEach
    method testTaskCreate (line 79) | @Test
    method testBeforeTaskErrorCreate (line 93) | @Test
    method testFailedTaskErrorCreate (line 112) | @Test
    method testAfterTaskErrorCreate (line 130) | @Test
    method testTaskUpdate (line 151) | @Test
    method testTaskFail (line 168) | @Test
    method testAnnotationCreate (line 188) | @Test
    method testAnnotationUpdate (line 202) | @Test
    method testAnnotationFail (line 219) | @Test
    method verifyListenerResults (line 235) | private void verifyListenerResults(boolean isTaskEnd, boolean isTaskFa...
    method setupContextForTaskExecutionListener (line 265) | private void setupContextForTaskExecutionListener() {
    method setupContextForAnnotatedListener (line 271) | private void setupContextForAnnotatedListener() {
    method setupContextForBeforeTaskErrorAnnotatedListener (line 277) | private void setupContextForBeforeTaskErrorAnnotatedListener() {
    method setupContextForFailedTaskErrorAnnotatedListener (line 283) | private void setupContextForFailedTaskErrorAnnotatedListener() {
    method setupContextForAfterTaskErrorAnnotatedListener (line 289) | private void setupContextForAfterTaskErrorAnnotatedListener() {
    class DefaultAnnotationConfiguration (line 295) | @Configuration
      method annotatedTaskListener (line 298) | @Bean
      class AnnotatedTaskListener (line 303) | public static class AnnotatedTaskListener extends TestListener {
        method methodA (line 305) | @BeforeTask
        method methodB (line 312) | @AfterTask
        method methodC (line 320) | @FailedTask
    class BeforeTaskErrorAnnotationConfiguration (line 332) | @Configuration
      method annotatedTaskListener (line 335) | @Bean
      method commandLineRunner (line 340) | @Bean
      class AnnotatedTaskListener (line 345) | public static class AnnotatedTaskListener {
        method methodA (line 347) | @BeforeTask
        method methodB (line 353) | @AfterTask
        method methodC (line 358) | @FailedTask
    class FailedTaskErrorAnnotationConfiguration (line 367) | @Configuration
      method annotatedTaskListener (line 370) | @Bean
      class AnnotatedTaskListener (line 375) | public static class AnnotatedTaskListener {
        method methodA (line 377) | @BeforeTask
        method methodB (line 383) | @AfterTask
        method methodC (line 388) | @FailedTask
    class AfterTaskErrorAnnotationConfiguration (line 398) | @Configuration
      method annotatedTaskListener (line 401) | @Bean
      class AnnotatedTaskListener (line 406) | public static class AnnotatedTaskListener extends TestListener {
        method methodA (line 408) | @BeforeTask
        method methodB (line 413) | @AfterTask
    class DefaultTaskListenerConfiguration (line 425) | @Configuration
      method taskExecutionListener (line 428) | @Bean
      class TestTaskExecutionListener (line 433) | public static class TestTaskExecutionListener extends TestListener i...
        method onTaskStartup (line 435) | @Override
        method onTaskEnd (line 442) | @Override
        method onTaskFailed (line 449) | @Override

FILE: spring-cloud-task-core/src/test/java/org/springframework/cloud/task/listener/TaskLifecycleListenerTests.java
  class TaskLifecycleListenerTests (line 69) | @ExtendWith(OutputCaptureExtension.class)
    method setUp (line 76) | @BeforeEach
    method tearDown (line 87) | @AfterEach
    method testTaskCreate (line 100) | @Test
    method testTaskCreateWithArgs (line 107) | @Test
    method testTaskUpdate (line 115) | @Test
    method testTaskFailedUpdate (line 126) | @Test
    method testTaskFailedWithExitCodeEvent (line 139) | @Test
    method testNoClosingOfContext (line 169) | @Test
    method testInvalidTaskExecutionId (line 179) | @Test
    method testRestartExistingTask (line 192) | @Test
    method testExternalExecutionId (line 204) | @Test
    method testParentExecutionId (line 218) | @Test
    method verifyTaskExecution (line 232) | private void verifyTaskExecution(int numberOfParams, boolean update, I...
    method verifyTaskExecution (line 236) | private void verifyTaskExecution(int numberOfParams, boolean update) {
    method verifyTaskExecution (line 240) | private void verifyTaskExecution(int numberOfParams, boolean update, I...
    method verifyTaskExecution (line 245) | private void verifyTaskExecution(int numberOfParams, boolean update, I...
    class ArgsConfiguration (line 282) | @Configuration
      method args (line 285) | @Bean
    class SimpleApplicationArgs (line 297) | private static class SimpleApplicationArgs implements ApplicationArgum...
      method SimpleApplicationArgs (line 301) | SimpleApplicationArgs(Map<String, String> args) {
      method getSourceArgs (line 305) | @Override
      method getOptionNames (line 318) | @Override
      method containsOption (line 323) | @Override
      method getOptionValues (line 328) | @Override
      method getNonOptionArgs (line 333) | @Override
    class TestListener2 (line 340) | private static final class TestListener2 extends TestListener {
    class TestListener (line 344) | private static class TestListener implements TaskExecutionListener {
      method TestListener (line 354) | TestListener() {
      method getStartupOrderList (line 359) | public static List<Integer> getStartupOrderList() {
      method getEndOrderList (line 363) | public static List<Integer> getEndOrderList() {
      method getFailOrderList (line 367) | public static List<Integer> getFailOrderList() {
      method onTaskStartup (line 371) | @Override
      method onTaskEnd (line 376) | @Override
      method onTaskFailed (line 381) | @Override

FILE: spring-cloud-task-core/src/test/java/org/springframework/cloud/task/listener/TaskListenerExecutorObjectFactoryTests.java
  class TaskListenerExecutorObjectFactoryTests (line 48) | @ExtendWith(SpringExtension.class)
    method setup (line 77) | public void setup(ConfigurableApplicationContext context) {
    method verifyTaskStartupListener (line 83) | @Test
    method verifyTaskFailedListener (line 96) | @Test
    method verifyTaskEndListener (line 110) | @Test
    method verifyAllListener (line 123) | @Test
    method verifyTaskStartupListenerWithMultipleInstances (line 142) | @Test
    method verifyTaskFailedListenerWithMultipleInstances (line 155) | @Test
    method verifyTaskEndListenerWithMultipleInstances (line 169) | @Test
    method verifyAllListenerWithMultipleInstances (line 182) | @Test
    method createSampleTaskExecution (line 204) | private TaskExecution createSampleTaskExecution(String taskName) {
    method validateSingleEntry (line 210) | private void validateSingleEntry(String event) {
    method validateSingleEventWithMultipleInstances (line 215) | private void validateSingleEventWithMultipleInstances(String event) {
    class TaskExecutionListenerConfiguration (line 220) | @Configuration
      method taskRunComponent (line 223) | @Bean
    class TaskExecutionListenerMultipleInstanceConfiguration (line 230) | @Configuration
      method taskRunComponent (line 233) | @Bean
      method otherTaskRunComponent (line 238) | @Bean
    class TaskRunComponent (line 245) | public static class TaskRunComponent {
      method initBeforeListener (line 247) | @BeforeTask
      method initAfterListener (line 252) | @AfterTask
      method initFailedListener (line 257) | @FailedTask

FILE: spring-cloud-task-core/src/test/java/org/springframework/cloud/task/micrometer/TaskObservationsTests.java
  class TaskObservationsTests (line 52) | public class TaskObservationsTests {
    method before (line 65) | @BeforeEach
    method after (line 75) | @AfterEach
    method successfulTaskTest (line 81) | @Test
    method defaultTaskTest (line 100) | @Test
    method failingTask (line 143) | @Test
    method taskWithCloudKeyValues (line 181) | @Test
    method testCloudVariablesUninitialized (line 245) | @Test
    method startupObservationForBasicTests (line 304) | private TaskExecution startupObservationForBasicTests(String taskName,...
    method initializeBasicTest (line 313) | private LongTaskTimer initializeBasicTest(String taskName, String exec...
    method verifyDefaultKeyValues (line 328) | private void verifyDefaultKeyValues() {
    method verifyLongTaskTimerAfterStop (line 351) | private void verifyLongTaskTimerAfterStop(LongTaskTimer longTaskTimer,...
    class CloudConfigurationForDefaultValues (line 360) | @Configuration
      method taskObservationCloudKeyValues (line 363) | @Bean

FILE: spring-cloud-task-core/src/test/java/org/springframework/cloud/task/repository/H2TaskRepositoryIntegrationTests.java
  class H2TaskRepositoryIntegrationTests (line 38) | class H2TaskRepositoryIntegrationTests {
    method testTaskRepository (line 40) | @ParameterizedTest
    class TestConfiguration (line 54) | @EnableTask

FILE: spring-cloud-task-core/src/test/java/org/springframework/cloud/task/repository/MariaDbTaskRepositoryIntegrationTests.java
  class MariaDbTaskRepositoryIntegrationTests (line 40) | @Tag("DockerRequired")
    method testTaskExplorer (line 53) | @Test
    class TestConfiguration (line 68) | @EnableTask
      method dataSource (line 74) | @Bean

FILE: spring-cloud-task-core/src/test/java/org/springframework/cloud/task/repository/dao/BaseTaskExecutionDaoTestCases.java
  class BaseTaskExecutionDaoTestCases (line 35) | public abstract class BaseTaskExecutionDaoTestCases {
    method getLatestTaskExecutionsByTaskNamesWithNullParameter (line 39) | @Test
    method getLatestTaskExecutionsByTaskNamesWithEmptyArrayParameter (line 52) | @Test
    method getLatestTaskExecutionsByTaskNamesWithArrayParametersContainingNullAndEmptyValues (line 65) | @Test
    method getLatestTaskExecutionsByTaskNamesWithSingleTaskName (line 79) | @Test
    method getLatestTaskExecutionsByTaskNamesWithMultipleTaskNames (line 99) | @Test
    method getLatestTaskExecutionsByTaskNamesWithIdenticalTaskExecutions (line 141) | @Test
    method getLatestTaskExecutionForTaskNameWithNullParameter (line 161) | @Test
    method getLatestTaskExecutionForTaskNameWithEmptyStringParameter (line 174) | @Test
    method getLatestTaskExecutionForNonExistingTaskName (line 187) | @Test
    method getLatestTaskExecutionForExistingTaskName (line 196) | @Test
    method getLatestTaskExecutionForTaskNameWithIdenticalTaskExecutions (line 218) | @Test
    method getRunningTaskExecutions (line 236) | @Test
    method initializeRepositoryNotInOrderWithMultipleTaskExecutions (line 245) | protected long initializeRepositoryNotInOrderWithMultipleTaskExecution...
    method getDate (line 293) | private LocalDateTime getDate(int year, int month, int day, int hour, ...
    method createTaskExecution (line 303) | private long createTaskExecution(TaskExecution te) {
    method getTaskExecution (line 309) | protected TaskExecution getTaskExecution(String taskName, String exter...

FILE: spring-cloud-task-core/src/test/java/org/springframework/cloud/task/repository/dao/JdbcTaskExecutionDaoMariaDBIntegrationTests.java
  class JdbcTaskExecutionDaoMariaDBIntegrationTests (line 66) | @Tag("DockerRequired")
    method setup (line 88) | @BeforeEach
    method testStartTaskExecution (line 99) | @Test
    method createTaskExecution (line 116) | @Test
    method createEmptyTaskExecution (line 128) | @Test
    method completeTaskExecution (line 137) | @Test
    method completeTaskExecutionWithNoCreate (line 150) | @Test
    method testFindAllPageableSort (line 162) | @Test
    method testFindAllDefaultSort (line 178) | @Test
    method testStartExecutionWithNullExternalExecutionIdExisting (line 193) | @Test
    method testStartExecutionWithNullExternalExecutionIdNonExisting (line 204) | @Test
    method testFindRunningTaskExecutions (line 216) | @Test
    method testFindRunningTaskExecutionsIllegalSort (line 226) | @Test
    method testFindRunningTaskExecutionsSortWithDifferentCase (line 236) | @Test
    method initializeTaskExecutionWithExternalExecutionId (line 246) | private TaskExecution initializeTaskExecutionWithExternalExecutionId() {
    method getPageIterator (line 252) | private Iterator<TaskExecution> getPageIterator(int pageNum, int pageS...
    method initializeRepository (line 261) | private void initializeRepository() {
    method initializeRepositoryNotInOrder (line 267) | private void initializeRepositoryNotInOrder() {
    class TestDataSourceConfiguration (line 273) | @Configuration
      method dataSource (line 278) | @Bean

FILE: spring-cloud-task-core/src/test/java/org/springframework/cloud/task/repository/dao/TaskExecutionDaoTests.java
  class TaskExecutionDaoTests (line 61) | @ExtendWith(SpringExtension.class)
    method setup (line 72) | @BeforeEach
    method testStartTaskExecutionGeneric (line 79) | @ParameterizedTest
    method getDao (line 97) | private TaskExecutionDao getDao(String type) {
    method getTaskExecution (line 110) | private TaskExecution getTaskExecution(String type, TaskExecution expe...
    method createTaskExecution (line 124) | @ParameterizedTest
    method createEmptyTaskExecution (line 137) | @ParameterizedTest
    method completeTaskExecution (line 147) | @ParameterizedTest
    method completeTaskExecutionWithNoCreate (line 161) | @ParameterizedTest
    method testFindAllPageableSort (line 175) | @Test
    method testFindAllDefaultSort (line 191) | @Test
    method testStartExecutionWithNullExternalExecutionIdExisting (line 206) | @ParameterizedTest
    method testStartExecutionWithNullExternalExecutionIdNonExisting (line 218) | @ParameterizedTest
    method testFindRunningTaskExecutions (line 231) | @ParameterizedTest
    method testFindRunningTaskExecutionsIllegalSort (line 241) | @Test
    method testFindRunningTaskExecutionsSortWithDifferentCase (line 251) | @Test
    method initializeTaskExecutionWithExternalExecutionId (line 261) | private TaskExecution initializeTaskExecutionWithExternalExecutionId() {
    method getPageIterator (line 267) | private Iterator<TaskExecution> getPageIterator(int pageNum, int pageS...
    method initializeRepository (line 276) | private void initializeRepository() {
    method initializeRepositoryNotInOrder (line 282) | private void initializeRepositoryNotInOrder() {

FILE: spring-cloud-task-core/src/test/java/org/springframework/cloud/task/repository/database/support/FindAllPagingQueryProviderTests.java
  class FindAllPagingQueryProviderTests (line 35) | public class FindAllPagingQueryProviderTests {
    method data (line 39) | public static Collection<Object[]> data() {
    method testGeneratedQuery (line 77) | @ParameterizedTest

FILE: spring-cloud-task-core/src/test/java/org/springframework/cloud/task/repository/database/support/H2PagingQueryProviderTests.java
  class H2PagingQueryProviderTests (line 44) | class H2PagingQueryProviderTests {
    method testH2PagingQueryProvider (line 46) | @ParameterizedTest

FILE: spring-cloud-task-core/src/test/java/org/springframework/cloud/task/repository/database/support/InvalidPagingQueryProviderTests.java
  class InvalidPagingQueryProviderTests (line 30) | public class InvalidPagingQueryProviderTests {
    method testInvalidDatabase (line 32) | @Test

FILE: spring-cloud-task-core/src/test/java/org/springframework/cloud/task/repository/database/support/SqlPagingQueryProviderFactoryBeanTests.java
  class SqlPagingQueryProviderFactoryBeanTests (line 35) | public class SqlPagingQueryProviderFactoryBeanTests {
    method setup (line 39) | @BeforeEach
    method testDatabaseType (line 53) | @Test
    method testIsSingleton (line 59) | @Test

FILE: spring-cloud-task-core/src/test/java/org/springframework/cloud/task/repository/database/support/WhereClausePagingQueryProviderTests.java
  class WhereClausePagingQueryProviderTests (line 35) | public class WhereClausePagingQueryProviderTests {
    method data (line 39) | public static Collection<Object[]> data() {
    method testGeneratedQuery (line 71) | @ParameterizedTest

FILE: spring-cloud-task-core/src/test/java/org/springframework/cloud/task/repository/support/DatabaseTypeTests.java
  class DatabaseTypeTests (line 42) | public class DatabaseTypeTests {
    method testFromProductName (line 44) | @Test
    method testInvalidProductName (line 53) | @Test
    method testFromMetaDataForHsql (line 58) | @Test
    method testFromMetaDataForOracle (line 64) | @Test
    method testFromMetaDataForPostgres (line 70) | @Test
    method testFromMetaDataForMySQL (line 76) | @Test
    method testFromMetaDataForMariaDB (line 82) | @Test

FILE: spring-cloud-task-core/src/test/java/org/springframework/cloud/task/repository/support/SimpleTaskExplorerTests.java
  class SimpleTaskExplorerTests (line 57) | public class SimpleTaskExplorerTests {
    method data (line 71) | public static Collection<Object> data() {
    method testDefaultContext (line 75) | public void testDefaultContext(DaoType testType) {
    method close (line 84) | @AfterEach
    method getTaskExecution (line 91) | @ParameterizedTest
    method taskExecutionNotFound (line 105) | @ParameterizedTest
    method getTaskCountByTaskName (line 116) | @ParameterizedTest
    method getTaskCount (line 129) | @ParameterizedTest
    method getRunningTaskCount (line 139) | @ParameterizedTest
    method findRunningTasks (line 149) | @ParameterizedTest
    method findTasksByExternalExecutionId (line 186) | @ParameterizedTest
    method findTasksByExternalExecutionIdMultipleEntry (line 202) | @ParameterizedTest
    method findTasksByName (line 235) | @ParameterizedTest
    method getTaskNames (line 270) | @ParameterizedTest
    method findAllExecutionsOffBoundry (line 288) | @ParameterizedTest
    method findAllExecutionsOffBoundryByOne (line 296) | @ParameterizedTest
    method findAllExecutionsOnBoundry (line 304) | @ParameterizedTest
    method findAllExecutionsNoResult (line 312) | @ParameterizedTest
    method findTasksForInvalidJob (line 320) | @ParameterizedTest
    method findJobsExecutionIdsForInvalidTask (line 327) | @ParameterizedTest
    method getLatestTaskExecutionForTaskName (line 334) | @ParameterizedTest
    method getLatestTaskExecutionsByTaskNames (line 350) | @ParameterizedTest
    method verifyPageResults (line 374) | private void verifyPageResults(Pageable pageable, int totalNumberOfExe...
    method createAndSaveTaskExecution (line 418) | private TaskExecution createAndSaveTaskExecution(int i) {
    method initializeJdbcExplorerTest (line 424) | private void initializeJdbcExplorerTest() {
    method initializeMapExplorerTest (line 434) | private void initializeMapExplorerTest() {
    method createSampleDataSet (line 443) | private Map<Long, TaskExecution> createSampleDataSet(int count) {
    method getSortedOfTaskExecIds (line 452) | private List<Long> getSortedOfTaskExecIds(Map<Long, TaskExecution> tas...
    method getTreeSet (line 463) | private TreeSet<TaskExecution> getTreeSet() {
    method getSimpleTaskExecution (line 476) | private TaskExecution getSimpleTaskExecution() {
    type DaoType (line 484) | private enum DaoType {
    class DataSourceConfiguration (line 490) | @Configuration
    class EmptyConfiguration (line 495) | @Configuration

FILE: spring-cloud-task-core/src/test/java/org/springframework/cloud/task/repository/support/SimpleTaskNameResolverTests.java
  class SimpleTaskNameResolverTests (line 28) | public class SimpleTaskNameResolverTests {
    method testDefault (line 30) | @Test
    method testWithProfile (line 41) | @Test
    method testApplicationName (line 52) | @Test
    method testExternalConfig (line 63) | @Test

FILE: spring-cloud-task-core/src/test/java/org/springframework/cloud/task/repository/support/SimpleTaskRepositoryJdbcTests.java
  class SimpleTaskRepositoryJdbcTests (line 51) | @ExtendWith(SpringExtension.class)
    method testCreateEmptyExecution (line 63) | @Test
    method testCreateTaskExecutionNoParam (line 73) | @Test
    method testCreateTaskExecutionWithParam (line 83) | @Test
    method startTaskExecutionWithParam (line 93) | @Test
    method startTaskExecutionWithNoParam (line 111) | @Test
    method testUpdateExternalExecutionId (line 128) | @Test
    method testUpdateNullExternalExecutionId (line 139) | @Test
    method testInvalidExecutionIdForExternalExecutionIdUpdate (line 150) | @Test
    method startTaskExecutionWithParent (line 160) | @Test
    method testCompleteTaskExecution (line 178) | @Test
    method testCreateTaskExecutionNoParamMaxExitDefaultMessageSize (line 192) | @Test
    method testCreateTaskExecutionNoParamMaxExitMessageSize (line 204) | @Test
    method testCreateTaskExecutionNoParamMaxErrorDefaultMessageSize (line 219) | @Test
    method testCreateTaskExecutionNoParamMaxErrorMessageSize (line 232) | @Test
    method testMaxTaskNameSizeForConstructor (line 247) | @Test
    method testDefaultMaxTaskNameSizeForConstructor (line 262) | @Test
    method testMaxSizeConstructor (line 273) | @Test
    method testDefaultConstructor (line 282) | @Test
    method testCreateTaskExecutionNoParamMaxTaskName (line 290) | @Test
    method testCreateTaskExecutionNegativeException (line 301) | @Test
    method testCreateTaskExecutionNullEndTime (line 316) | @Test
    method completeTaskExecution (line 327) | private TaskExecution completeTaskExecution(TaskExecution expectedTask...
    method verifyTaskRepositoryConstructor (line 333) | private void verifyTaskRepositoryConstructor(Integer maxExitMessage, I...

FILE: spring-cloud-task-core/src/test/java/org/springframework/cloud/task/repository/support/SimpleTaskRepositoryMapTests.java
  class SimpleTaskRepositoryMapTests (line 42) | public class SimpleTaskRepositoryMapTests {
    method setUp (line 46) | @BeforeEach
    method testCreateEmptyExecution (line 51) | @Test
    method testCreateTaskExecutionNoParam (line 59) | @Test
    method testUpdateExternalExecutionId (line 67) | @Test
    method testUpdateNullExternalExecutionId (line 78) | @Test
    method testInvalidExecutionIdForExternalExecutionIdUpdate (line 89) | @Test
    method testCreateTaskExecutionWithParam (line 99) | @Test
    method startTaskExecutionWithParam (line 107) | @Test
    method startTaskExecutionWithNoParam (line 124) | @Test
    method startTaskExecutionWithParent (line 140) | @Test
    method testCompleteTaskExecution (line 157) | @Test
    method getSingleTaskExecutionFromMapRepository (line 168) | private TaskExecution getSingleTaskExecutionFromMapRepository(long tas...
    method testCreateTaskExecutionNullEndTime (line 175) | @Test

FILE: spring-cloud-task-core/src/test/java/org/springframework/cloud/task/repository/support/TaskDatabaseInitializerTests.java
  class TaskDatabaseInitializerTests (line 43) | public class TaskDatabaseInitializerTests {
    method close (line 47) | @AfterEach
    method testDefaultContext (line 54) | @Test
    method testNoDatabase (line 64) | @Test
    method testNoTaskConfiguration (line 73) | @Test
    method testMultipleDataSourcesContext (line 82) | @Test
    class EmptyConfiguration (line 94) | @Configuration

FILE: spring-cloud-task-core/src/test/java/org/springframework/cloud/task/repository/support/TaskExecutionDaoFactoryBeanTests.java
  class TaskExecutionDaoFactoryBeanTests (line 41) | public class TaskExecutionDaoFactoryBeanTests {
    method tearDown (line 45) | @AfterEach
    method testGetObjectType (line 52) | @Test
    method testIsSingleton (line 57) | @Test
    method testConstructorValidation (line 62) | @Test
    method testMapTaskExecutionDaoWithoutAppContext (line 69) | @Test
    method testDefaultDataSourceConfiguration (line 81) | @Test
    method testSettingTablePrefix (line 97) | @Test
    class DefaultDataSourceConfiguration (line 109) | @Configuration
      method dataSource (line 112) | @Bean

FILE: spring-cloud-task-core/src/test/java/org/springframework/cloud/task/util/TaskExecutionCreator.java
  class TaskExecutionCreator (line 31) | public final class TaskExecutionCreator {
    method TaskExecutionCreator (line 33) | private TaskExecutionCreator() {
    method createAndStoreEmptyTaskExecution (line 41) | public static TaskExecution createAndStoreEmptyTaskExecution(TaskRepos...
    method createAndStoreTaskExecutionNoParams (line 50) | public static TaskExecution createAndStoreTaskExecutionNoParams(TaskRe...
    method createAndStoreTaskExecutionWithParams (line 60) | public static TaskExecution createAndStoreTaskExecutionWithParams(Task...
    method completeExecution (line 76) | public static TaskExecution completeExecution(TaskRepository taskRepos...

FILE: spring-cloud-task-core/src/test/java/org/springframework/cloud/task/util/TestDBUtils.java
  class TestDBUtils (line 56) | public final class TestDBUtils {
    method TestDBUtils (line 58) | private TestDBUtils() {
    method getTaskExecutionFromDB (line 67) | public static TaskExecution getTaskExecutionFromDB(DataSource dataSour...
    method getPagingQueryProvider (line 98) | public static PagingQueryProvider getPagingQueryProvider(String databa...
    method getPagingQueryProvider (line 111) | public static PagingQueryProvider getPagingQueryProvider(String databa...
    method getMockDataSource (line 143) | public static DataSource getMockDataSource(String databaseProductName)...
    method getIncrementer (line 159) | public static DataFieldMaxValueIncrementer getIncrementer(DataSource d...
    method populateParamsToDB (line 175) | private static void populateParamsToDB(DataSource dataSource, TaskExec...

FILE: spring-cloud-task-core/src/test/java/org/springframework/cloud/task/util/TestDefaultConfiguration.java
  class TestDefaultConfiguration (line 48) | @Configuration
    method TestDefaultConfiguration (line 63) | public TestDefaultConfiguration() {
    method taskRepository (line 66) | @Bean
    method taskExplorer (line 71) | @Bean
    method taskNameResolver (line 76) | @Bean
    method taskListenerExecutorObjectProvider (line 81) | @Bean
    method taskHandler (line 87) | @Bean
    method afterPropertiesSet (line 97) | @Override

FILE: spring-cloud-task-core/src/test/java/org/springframework/cloud/task/util/TestListener.java
  class TestListener (line 26) | public abstract class TestListener {
    method isTaskStartup (line 57) | public boolean isTaskStartup() {
    method isTaskEnd (line 65) | public boolean isTaskEnd() {
    method isTaskFailed (line 73) | public boolean isTaskFailed() {
    method getTaskExecution (line 81) | public TaskExecution getTaskExecution() {
    method getThrowable (line 89) | public Throwable getThrowable() {

FILE: spring-cloud-task-core/src/test/java/org/springframework/cloud/task/util/TestVerifierUtils.java
  class TestVerifierUtils (line 45) | public final class TestVerifierUtils {
    method TestVerifierUtils (line 52) | private TestVerifierUtils() {
    method getMockAppender (line 59) | public static Appender getMockAppender() {
    method verifyLogEntryExists (line 74) | public static void verifyLogEntryExists(Appender mockAppender, final S...
    method createSampleTaskExecutionNoArg (line 87) | public static TaskExecution createSampleTaskExecutionNoArg() {
    method endSampleTaskExecutionNoArg (line 100) | public static TaskExecution endSampleTaskExecutionNoArg() {
    method createSampleTaskExecution (line 116) | public static TaskExecution createSampleTaskExecution(long executionId) {
    method verifyTaskExecution (line 132) | public static void verifyTaskExecution(TaskExecution expectedTaskExecu...

FILE: spring-cloud-task-integration-tests/src/test/java/configuration/JobConfiguration.java
  class JobConfiguration (line 43) | @Configuration
    method job (line 55) | @Bean
    method step1 (line 60) | @Bean
    method step2 (line 71) | @Bean

FILE: spring-cloud-task-integration-tests/src/test/java/configuration/JobSkipConfiguration.java
  class JobSkipConfiguration (line 38) | @Configuration
    method job (line 48) | @Bean
    method step1 (line 53) | @Bean
    method step2 (line 64) | @Bean

FILE: spring-cloud-task-integration-tests/src/test/java/configuration/SkipItemReader.java
  class SkipItemReader (line 27) | public class SkipItemReader implements ItemReader {
    method read (line 33) | @Override

FILE: spring-cloud-task-integration-tests/src/test/java/configuration/SkipItemWriter.java
  class SkipItemWriter (line 25) | public class SkipItemWriter implements ItemWriter {
    method write (line 29) | @Override

FILE: spring-cloud-task-integration-tests/src/test/java/org/springframework/cloud/task/executionid/TaskStartApplication.java
  class TaskStartApplication (line 28) | @EnableTask
    method main (line 32) | public static void main(String[] args) {
    method testCommandLineRunner (line 36) | @Bean

FILE: spring-cloud-task-integration-tests/src/test/java/org/springframework/cloud/task/executionid/TaskStartTests.java
  class TaskStartTests (line 64) | @Testcontainers
    method tearDown (line 91) | @AfterEach
    method setup (line 98) | @BeforeEach
    method testWithGeneratedTaskExecution (line 144) | @Test
    method testWithGeneratedTaskExecutionWithName (line 158) | @Test
    method testWithGeneratedTaskExecutionWithExistingDate (line 176) | @Test
    method testWithNoTaskExecution (line 197) | @Test
    method testCompletedTaskExecution (line 204) | @Test
    method testDuplicateTaskExecutionWithSingleInstanceEnabled (line 214) | @Test
    method testDuplicateTaskExecutionWithSingleInstanceDisabled (line 235) | @Test
    method getTaskApplication (line 247) | private SpringApplication getTaskApplication(Integer executionId) {
    method tableExists (line 263) | private boolean tableExists() throws SQLException {
    method waitForDBToBePopulated (line 272) | private boolean waitForDBToBePopulated() throws Exception {
    method enableLock (line 284) | private void enableLock(String lockKey) {

FILE: spring-cloud-task-integration-tests/src/test/java/org/springframework/cloud/task/initializer/TaskInitializerTests.java
  class TaskInitializerTests (line 56) | @Testcontainers
    method tearDown (line 77) | @AfterEach
    method setDataSource (line 84) | @Autowired
    method setup (line 91) | @BeforeEach
    method testNotInitialized (line 120) | @Test
    method testWithInitialized (line 129) | @Test
    method testNotInitializedOriginalProperty (line 143) | @Test
    method testWithInitializedOriginalProperty (line 152) | @Test
    method tableExists (line 166) | private boolean tableExists() throws SQLException {
    method waitForDBToBePopulated (line 175) | private boolean waitForDBToBePopulated() throws Exception {
    method getTaskApplication (line 187) | private SpringApplication getTaskApplication() {

FILE: spring-cloud-task-integration-tests/src/test/java/org/springframework/cloud/task/listener/BatchExecutionEventTests.java
  class BatchExecutionEventTests (line 50) | public class BatchExecutionEventTests {
    method setup (line 58) | @BeforeEach
    method tearDown (line 63) | @AfterEach
    method testContext (line 70) | @Test
    method testJobEventListener (line 87) | @Test
    method testStepEventListener (line 98) | @Test
    method testItemProcessEventListener (line 121) | @Test
    method testChunkListener (line 132) | @Test
    method testWriteListener (line 144) | @Test
    method getCommandLineParams (line 156) | private String[] getCommandLineParams(String sinkChannelParam) {
    method getCommandLineParams (line 160) | private String[] getCommandLineParams(String sinkChannelParam, boolean...
    method testListener (line 169) | private List<Message<byte[]>> testListener(String channelBinding, Stri...
    method testListenerSkip (line 173) | private List<Message<byte[]>> testListenerSkip(String channelBinding, ...
    method testListenerForApp (line 177) | private List<Message<byte[]>> testListenerForApp(String channelBinding...
    method testItemReadListener (line 195) | @Test
    method testSkipEventListener (line 205) | @Test
    class BatchEventsApplication (line 229) | @SpringBootApplication
    class BatchSkipEventsApplication (line 236) | @SpringBootApplication

FILE: spring-cloud-task-integration-tests/src/test/java/org/springframework/cloud/task/listener/TaskEventTests.java
  class TaskEventTests (line 45) | public class TaskEventTests {
    method setup (line 53) | @BeforeEach
    method tearDown (line 58) | @AfterEach
    method testTaskEventListener (line 65) | @Test
    method testListener (line 79) | private List<Message<byte[]>> testListener(String channelBinding, Stri...
    method getCommandLineParams (line 94) | private String[] getCommandLineParams(String sinkChannelParam) {
    class TaskEventsConfiguration (line 100) | @EnableTask

FILE: spring-cloud-task-samples/batch-events/src/main/java/io/spring/cloud/BatchEventsApplication.java
  class BatchEventsApplication (line 42) | @EnableTask
    method main (line 46) | public static void main(String[] args) {
    class JobConfiguration (line 50) | @Configuration
      method step1 (line 61) | @Bean
      method step2 (line 72) | @Bean
      method job (line 94) | @Bean

FILE: spring-cloud-task-samples/batch-events/src/test/java/io/spring/cloud/BatchEventsApplicationTests.java
  class BatchEventsApplicationTests (line 44) | @Tag("DockerRequired")
    method setup (line 55) | @BeforeEach
    method tearDown (line 60) | @AfterEach
    method testExecution (line 67) | @Test
    method getCommandLineParams (line 75) | private String[] getCommandLineParams(boolean enableFailJobConfig) {
    method testListener (line 83) | private List<Message<byte[]>> testListener(String bindingName, int num...
    class BatchEventsTestApplication (line 97) | @SpringBootApplication

FILE: spring-cloud-task-samples/batch-job/src/main/java/io/spring/BatchJobApplication.java
  class BatchJobApplication (line 23) | @EnableTask
    method main (line 27) | public static void main(String[] args) {

FILE: spring-cloud-task-samples/batch-job/src/main/java/io/spring/configuration/JobConfiguration.java
  class JobConfiguration (line 38) | @Configuration(proxyBeanMethods = false)
    method job1 (line 49) | @Bean

FILE: spring-cloud-task-samples/batch-job/src/test/java/io/spring/BatchJobApplicationTests.java
  class BatchJobApplicationTests (line 36) | @ExtendWith(OutputCaptureExtension.class)
    method testBatchJobApp (line 39) | @Test

FILE: spring-cloud-task-samples/batch-job/src/test/java/io/spring/BatchJobTestConfiguration.java
  class BatchJobTestConfiguration (line 26) | @TestConfiguration(proxyBeanMethods = false)
    method postgresSQLContainer (line 29) | @Bean

FILE: spring-cloud-task-samples/batch-job/src/test/java/io/spring/TestBatchJobApp.java
  class TestBatchJobApp (line 21) | public class TestBatchJobApp {
    method main (line 23) | public static void main(String[] args) {

FILE: spring-cloud-task-samples/jpa-sample/src/main/java/io/spring/JpaApplication.java
  class JpaApplication (line 23) | @EnableTask
    method main (line 27) | public static void main(String[] args) {

FILE: spring-cloud-task-samples/jpa-sample/src/main/java/io/spring/configuration/TaskRunComponent.java
  class TaskRunComponent (line 36) | @Component
    method init (line 44) | @BeforeTask

FILE: spring-cloud-task-samples/jpa-sample/src/main/java/io/spring/configuration/TaskRunOutput.java
  class TaskRunOutput (line 31) | @Entity
    method TaskRunOutput (line 41) | public TaskRunOutput() {
    method TaskRunOutput (line 44) | public TaskRunOutput(String output) {
    method getId (line 48) | public Long getId() {
    method setId (line 52) | public void setId(Long id) {
    method getOutput (line 56) | public String getOutput() {
    method setOutput (line 60) | public void setOutput(String output) {
    method toString (line 64) | @Override

FILE: spring-cloud-task-samples/jpa-sample/src/main/java/io/spring/configuration/TaskRunRepository.java
  type TaskRunRepository (line 25) | public interface TaskRunRepository extends JpaRepository<TaskRunOutput, ...

FILE: spring-cloud-task-samples/jpa-sample/src/test/java/io/spring/JpaApplicationTests.java
  class JpaApplicationTests (line 45) | @ExtendWith(OutputCaptureExtension.class)
    method setup (line 70) | @BeforeEach
    method tearDown (line 88) | @AfterEach
    method testBatchJobApp (line 96) | @Test

FILE: spring-cloud-task-samples/multiple-datasources/src/main/java/io/spring/MultipleDataSourcesApplication.java
  class MultipleDataSourcesApplication (line 26) | @EnableTask
    method main (line 30) | public static void main(String[] args) {

FILE: spring-cloud-task-samples/multiple-datasources/src/main/java/io/spring/configuration/CustomTaskConfigurer.java
  class CustomTaskConfigurer (line 29) | @Component
    method CustomTaskConfigurer (line 32) | @Autowired

FILE: spring-cloud-task-samples/multiple-datasources/src/main/java/io/spring/configuration/EmbeddedDataSourceConfiguration.java
  class EmbeddedDataSourceConfiguration (line 33) | @Configuration(proxyBeanMethods = false)
    method dataSource (line 37) | @Bean
    method secondDataSource (line 42) | @Bean

FILE: spring-cloud-task-samples/multiple-datasources/src/main/java/io/spring/configuration/ExternalDataSourceConfiguration.java
  class ExternalDataSourceConfiguration (line 37) | @Configuration(proxyBeanMethods = false)
    method springDataSourceProperties (line 41) | @Bean(name = "springDataSourceProperties")
    method myDataSourceProperties (line 48) | @Bean(name = "secondDataSourceProperties")
    method dataSource (line 54) | @Bean(name = "springDataSource")
    method secondDataSource (line 66) | @Bean

FILE: spring-cloud-task-samples/multiple-datasources/src/main/java/io/spring/task/SampleCommandLineRunner.java
  class SampleCommandLineRunner (line 30) | @Component
    method SampleCommandLineRunner (line 35) | @Autowired
    method run (line 40) | @Override

FILE: spring-cloud-task-samples/multiple-datasources/src/test/java/io/spring/MultiDataSourcesApplicationTests.java
  class MultiDataSourcesApplicationTests (line 31) | @ExtendWith(OutputCaptureExtension.class)
    method testTimeStampApp (line 34) | @Test

FILE: spring-cloud-task-samples/multiple-datasources/src/test/java/io/spring/MultiDataSourcesExternalApplicationTests.java
  class MultiDataSourcesExternalApplicationTests (line 39) | @ExtendWith({ OutputCaptureExtension.class, SpringExtension.class })
    method testTimeStampApp (line 66) | @Test
    class TaskLauncherConfiguration (line 89) | @Configuration(proxyBeanMethods = false)
      method initH2TCPServer (line 96) | @Bean
      method initSecondH2TCPServer (line 114) | @Bean

FILE: spring-cloud-task-samples/single-step-batch-job/src/main/java/io/spring/SingleStepBatchJobApplication.java
  class SingleStepBatchJobApplication (line 23) | @EnableTask
    method main (line 27) | public static void main(String[] args) {

FILE: spring-cloud-task-samples/single-step-batch-job/src/test/java/io/spring/BatchJobApplicationTests.java
  class BatchJobApplicationTests (line 52) | public class BatchJobApplicationTests {
    method setup (line 74) | @BeforeEach
    method tearDown (line 80) | @AfterEach
    method testFileReaderJdbcWriter (line 92) | @Test
    method testJdbcReaderJdbcWriter (line 101) | @Test
    method testJdbcReaderFlatfileWriter (line 111) | @Test
    method testFileReaderFileWriter (line 120) | @Test
    method initH2TCPServer (line 127) | public Server initH2TCPServer() throws SQLException {
    method validateFileResult (line 148) | private void validateFileResult() throws Exception {
    method validateDBResult (line 154) | private void validateDBResult() {
    method getDataSource (line 168) | private DataSource getDataSource() {
    method getSpringApplication (line 177) | private SpringApplication getSpringApplication() {

FILE: spring-cloud-task-samples/single-step-batch-job/src/test/resources/schema-h2.sql
  type item (line 1) | CREATE TABLE IF NOT EXISTS item
  type item_sample (line 6) | CREATE TABLE IF NOT EXISTS item_sample

FILE: spring-cloud-task-samples/task-events/src/main/java/io/spring/TaskEventsApplication.java
  class TaskEventsApplication (line 26) | @EnableTask
    method main (line 30) | public static void main(String[] args) {
    class TaskConfiguration (line 34) | @Configuration(proxyBeanMethods = false)
      method commandLineRunner (line 37) | @Bean

FILE: spring-cloud-task-samples/task-observations/src/main/java/io/spring/taskobservations/ObservationConfiguration.java
  class ObservationConfiguration (line 24) | @Configuration
    method meterRegistry (line 27) | @Bean

FILE: spring-cloud-task-samples/task-observations/src/main/java/io/spring/taskobservations/TaskObservationsApplication.java
  class TaskObservationsApplication (line 33) | @SpringBootApplication
    method main (line 42) | public static void main(String[] args) {
    method applicationRunner (line 46) | @Bean
    method commandLineRunner (line 51) | @Bean
    method afterTask (line 59) | @AfterTask

FILE: spring-cloud-task-samples/task-observations/src/test/java/io/spring/taskobservations/TaskObservationsApplicationTests.java
  class TaskObservationsApplicationTests (line 28) | @SpringBootTest
    method contextLoads (line 32) | @Test

FILE: spring-cloud-task-samples/timestamp/src/main/java/org/springframework/cloud/task/timestamp/TaskApplication.java
  class TaskApplication (line 37) | @EnableTask
    method main (line 44) | public static void main(String[] args) {
    method timeStampTask (line 48) | @Bean
    class TimestampTask (line 56) | public static class TimestampTask implements CommandLineRunner {
      method run (line 61) | @Override

FILE: spring-cloud-task-samples/timestamp/src/main/java/org/springframework/cloud/task/timestamp/TimestampTaskProperties.java
  class TimestampTaskProperties (line 25) | @ConfigurationProperties
    method getFormat (line 33) | public String getFormat() {
    method setFormat (line 38) | public void setFormat(String format) {

FILE: spring-cloud-task-samples/timestamp/src/test/java/org/springframework/cloud/task/timestamp/TaskApplicationTests.java
  class TaskApplicationTests (line 36) | @ExtendWith(OutputCaptureExtension.class)
    method testTimeStampApp (line 39) | @Test

FILE: spring-cloud-task-samples/timestamp/src/test/java/org/springframework/cloud/task/timestamp/TimestampTaskPropertiesTests.java
  class TimestampTaskPropertiesTests (line 32) | public class TimestampTaskPropertiesTests {
    method testEmptyFormat (line 34) | @Test
    method testFormatDefault (line 47) | @Test
    method testFormatSet (line 57) | @Test
    class Conf (line 68) | @Configuration(proxyBeanMethods = false)

FILE: spring-cloud-task-stream/src/main/java/org/springframework/cloud/task/batch/listener/BatchEventAutoConfiguration.java
  class BatchEventAutoConfiguration (line 62) | @AutoConfiguration(after = SimpleTaskAutoConfiguration.class)
    method batchTaskEventListenerBeanPostProcessor (line 105) | @Bean
    class JobExecutionListenerConfiguration (line 114) | @AutoConfiguration
      method jobExecutionEventsListener (line 125) | @Bean
      method stepExecutionEventsListener (line 137) | @Bean
      method chunkEventsListener (line 148) | @Bean
      method itemReadEventsListener (line 160) | @Bean
      method itemWriteEventsListener (line 171) | @Bean
      method itemProcessEventsListener (line 182) | @Bean
      method skipEventsListener (line 193) | @Bean
      method messagePublisher (line 202) | @Bean

FILE: spring-cloud-task-stream/src/main/java/org/springframework/cloud/task/batch/listener/EventEmittingChunkListener.java
  class EventEmittingChunkListener (line 35) | public class EventEmittingChunkListener implements ChunkListener, Ordered {
    method EventEmittingChunkListener (line 43) | public EventEmittingChunkListener(MessagePublisher messagePublisher, T...
    method EventEmittingChunkListener (line 50) | public EventEmittingChunkListener(MessagePublisher messagePublisher, i...
    method beforeChunk (line 55) | @Override
    method afterChunk (line 60) | @Override
    method onChunkError (line 65) | @Override
    method getOrder (line 70) | @Override

FILE: spring-cloud-task-stream/src/main/java/org/springframework/cloud/task/batch/listener/EventEmittingItemProcessListener.java
  class EventEmittingItemProcessListener (line 44) | public class EventEmittingItemProcessListener implements ItemProcessList...
    method EventEmittingItemProcessListener (line 54) | public EventEmittingItemProcessListener(MessagePublisher messagePublis...
    method EventEmittingItemProcessListener (line 61) | public EventEmittingItemProcessListener(MessagePublisher messagePublis...
    method beforeProcess (line 67) | @Override
    method afterProcess (line 71) | @Override
    method onProcessError (line 86) | @Override
    method getOrder (line 95) | @Override

FILE: spring-cloud-task-stream/src/main/java/org/springframework/cloud/task/batch/listener/EventEmittingItemReadListener.java
  class EventEmittingItemReadListener (line 41) | public class EventEmittingItemReadListener implements ItemReadListener, ...
    method EventEmittingItemReadListener (line 51) | public EventEmittingItemReadListener(MessagePublisher messagePublisher...
    method EventEmittingItemReadListener (line 58) | public EventEmittingItemReadListener(MessagePublisher messagePublisher...
    method beforeRead (line 63) | @Override
    method afterRead (line 68) | @Override
    method onReadError (line 73) | @Override
    method getOrder (line 83) | @Override

FILE: spring-cloud-task-stream/src/main/java/org/springframework/cloud/task/batch/listener/EventEmittingItemWriteListener.java
  class EventEmittingItemWriteListener (line 41) | public class EventEmittingItemWriteListener implements ItemWriteListener...
    method EventEmittingItemWriteListener (line 51) | public EventEmittingItemWriteListener(MessagePublisher messagePublishe...
    method EventEmittingItemWriteListener (line 59) | public EventEmittingItemWriteListener(MessagePublisher messagePublishe...
    method beforeWrite (line 65) | @Override
    method afterWrite (line 71) | @Override
    method onWriteError (line 80) | @Override
    method getOrder (line 90) | @Override

FILE: spring-cloud-task-stream/src/main/java/org/springframework/cloud/task/batch/listener/EventEmittingJobExecutionListener.java
  class EventEmittingJobExecutionListener (line 34) | public class EventEmittingJobExecutionListener implements JobExecutionLi...
    method EventEmittingJobExecutionListener (line 42) | public EventEmittingJobExecutionListener(MessagePublisher messagePubli...
    method EventEmittingJobExecutionListener (line 50) | public EventEmittingJobExecutionListener(MessagePublisher messagePubli...
    method beforeJob (line 56) | @Override
    method afterJob (line 62) | @Override
    method getOrder (line 68) | @Override

FILE: spring-cloud-task-stream/src/main/java/org/springframework/cloud/task/batch/listener/EventEmittingSkipListener.java
  class EventEmittingSkipListener (line 42) | public class EventEmittingSkipListener implements SkipListener, Ordered {
    method EventEmittingSkipListener (line 52) | public EventEmittingSkipListener(MessagePublisher messagePublisher, Ta...
    method EventEmittingSkipListener (line 60) | public EventEmittingSkipListener(MessagePublisher messagePublisher, in...
    method onSkipInRead (line 65) | @Override
    method onSkipInWrite (line 74) | @Override
    method onSkipInProcess (line 83) | @Override
    method getOrder (line 92) | @Override

FILE: spring-cloud-task-stream/src/main/java/org/springframework/cloud/task/batch/listener/EventEmittingStepExecutionListener.java
  class EventEmittingStepExecutionListener (line 37) | public class EventEmittingStepExecutionListener implements StepExecution...
    method EventEmittingStepExecutionListener (line 45) | public EventEmittingStepExecutionListener(MessagePublisher messagePubl...
    method EventEmittingStepExecutionListener (line 53) | public EventEmittingStepExecutionListener(MessagePublisher messagePubl...
    method beforeStep (line 59) | @Override
    method afterStep (line 65) | @Override
    method getOrder (line 73) | @Override

FILE: spring-cloud-task-stream/src/main/java/org/springframework/cloud/task/batch/listener/support/BatchJobHeaders.java
  class BatchJobHeaders (line 25) | public final class BatchJobHeaders {
    method BatchJobHeaders (line 37) | private BatchJobHeaders() {

FILE: spring-cloud-task-stream/src/main/java/org/springframework/cloud/task/batch/listener/support/ExitStatus.java
  class ExitStatus (line 27) | public class ExitStatus {
    method ExitStatus (line 33) | public ExitStatus() {
    method ExitStatus (line 36) | public ExitStatus(org.springframework.batch.core.ExitStatus exitStatus) {
    method getExitCode (line 43) | public String getExitCode() {
    method setExitCode (line 47) | public void setExitCode(String exitCode) {
    method getExitDescription (line 51) | public String getExitDescription() {
    method setExitDescription (line 55) | public void setExitDescription(String exitDescription) {

FILE: spring-cloud-task-stream/src/main/java/org/springframework/cloud/task/batch/listener/support/JobExecutionEvent.java
  class JobExecutionEvent (line 40) | public class JobExecutionEvent extends Entity {
    method JobExecutionEvent (line 64) | public JobExecutionEvent() {
    method JobExecutionEvent (line 72) | public JobExecutionEvent(JobExecution original) {
    method getJobParameters (line 91) | public JobParametersEvent getJobParameters() {
    method getEndTime (line 95) | public LocalDateTime getEndTime() {
    method setEndTime (line 99) | public void setEndTime(LocalDateTime endTime) {
    method getStartTime (line 103) | public LocalDateTime getStartTime() {
    method setStartTime (line 107) | public void setStartTime(LocalDateTime startTime) {
    method getStatus (line 111) | public BatchStatus getStatus() {
    method setStatus (line 119) | public void setStatus(BatchStatus status) {
    method upgradeStatus (line 129) | public void upgradeStatus(BatchStatus status) {
    method getJobId (line 137) | public Long getJobId() {
    method getExitStatus (line 147) | public ExitStatus getExitStatus() {
    method setExitStatus (line 154) | public void setExitStatus(ExitStatus exitStatus) {
    method getJobInstance (line 161) | public JobInstanceEvent getJobInstance() {
    method setJobInstance (line 165) | public void setJobInstance(JobInstanceEvent jobInstance) {
    method getStepExecutions (line 173) | public Collection<StepExecutionEvent> getStepExecutions() {
    method getExecutionContext (line 182) | public ExecutionContext getExecutionContext() {
    method setExecutionContext (line 190) | public void setExecutionContext(ExecutionContext executionContext) {
    method getCreateTime (line 197) | public LocalDateTime getCreateTime() {
    method setCreateTime (line 204) | public void setCreateTime(LocalDateTime createTime) {
    method getLastUpdated (line 213) | public LocalDateTime getLastUpdated() {
    method setLastUpdated (line 221) | public void setLastUpdated(LocalDateTime lastUpdated) {
    method getFailureExceptions (line 225) | public List<Throwable> getFailureExceptions() {
    method addFailureException (line 233) | public synchronized void addFailureException(Throwable t) {
    method getAllFailureExceptions (line 243) | public synchronized List<Throwable> getAllFailureExceptions() {
    method toString (line 258) | @Override

FILE: spring-cloud-task-stream/src/main/java/org/springframework/cloud/task/batch/listener/support/JobInstanceEvent.java
  class JobInstanceEvent (line 30) | public class JobInstanceEvent extends Entity {
    method JobInstanceEvent (line 34) | public JobInstanceEvent() {
    method JobInstanceEvent (line 38) | public JobInstanceEvent(Long id, String jobName) {
    method getJobName (line 47) | public String getJobName() {
    method toString (line 51) | public String toString() {
    method getInstanceId (line 55) | public long getInstanceId() {

FILE: spring-cloud-task-stream/src/main/java/org/springframework/cloud/task/batch/listener/support/JobParameterEvent.java
  class JobParameterEvent (line 31) | public class JobParameterEvent {
    method JobParameterEvent (line 37) | public JobParameterEvent() {
    method JobParameterEvent (line 40) | public JobParameterEvent(JobParameter jobParameter) {
    method isIdentifying (line 45) | public boolean isIdentifying() {
    method getValue (line 52) | public Object getValue() {
    method equals (line 62) | @Override
    method toString (line 76) | @Override
    method hashCode (line 81) | @Override

FILE: spring-cloud-task-stream/src/main/java/org/springframework/cloud/task/batch/listener/support/JobParametersEvent.java
  class JobParametersEvent (line 31) | public class JobParametersEvent {
    method JobParametersEvent (line 35) | public JobParametersEvent() {
    method JobParametersEvent (line 39) | public JobParametersEvent(Set<JobParameter<?>> jobParameters) {
    method getParameters (line 50) | public Set<JobParameterEvent> getParameters() {
    method isEmpty (line 57) | public boolean isEmpty() {
    method equals (line 61) | @Override
    method hashCode (line 75) | @Override
    method toString (line 82) | @Override

FILE: spring-cloud-task-stream/src/main/java/org/springframework/cloud/task/batch/listener/support/MessagePublisher.java
  class MessagePublisher (line 30) | public class MessagePublisher<P> {
    method MessagePublisher (line 34) | public MessagePublisher(StreamBridge streamBridge) {
    method publish (line 39) | public final void publish(String bindingName, P payload) {
    method publishMessage (line 49) | private void publishMessage(String bindingName, Message<?> message) {
    method publishWithThrowableHeader (line 53) | public void publishWithThrowableHeader(String bindingName, P payload, ...

FILE: spring-cloud-task-stream/src/main/java/org/springframework/cloud/task/batch/listener/support/StepExecutionEvent.java
  class StepExecutionEvent (line 36) | public class StepExecutionEvent extends Entity {
    method StepExecutionEvent (line 74) | public StepExecutionEvent() {
    method StepExecutionEvent (line 82) | public StepExecutionEvent(StepExecution stepExecution) {
    method getExecutionContext (line 116) | public ExecutionContext getExecutionContext() {
    method setExecutionContext (line 124) | public void setExecutionContext(ExecutionContext executionContext) {
    method getCommitCount (line 132) | public long getCommitCount() {
    method setCommitCount (line 140) | public void setCommitCount(int commitCount) {
    method getEndTime (line 148) | public LocalDateTime getEndTime() {
    method setEndTime (line 156) | public void setEndTime(LocalDateTime endTime) {
    method getReadCount (line 164) | public long getReadCount() {
    method setReadCount (line 172) | public void setReadCount(int readCount) {
    method getWriteCount (line 180) | public long getWriteCount() {
    method setWriteCount (line 188) | public void setWriteCount(int writeCount) {
    method getRollbackCount (line 196) | public long getRollbackCount() {
    method setRollbackCount (line 204) | public void setRollbackCount(int rollbackCount) {
    method getFilterCount (line 212) | public long getFilterCount() {
    method setFilterCount (line 220) | public void setFilterCount(int filterCount) {
    method getStartTime (line 228) | public LocalDateTime getStartTime() {
    method setStartTime (line 236) | public void setStartTime(LocalDateTime startTime) {
    method getStatus (line 244) | public BatchStatus getStatus() {
    method setStatus (line 252) | public void setStatus(BatchStatus status) {
    method getStepName (line 259) | public String getStepName() {
    method setStepName (line 263) | public void setStepName(String stepName) {
    method getExitStatus (line 270) | public ExitStatus getExitStatus() {
    method setExitStatus (line 277) | public void setExitStatus(ExitStatus exitStatus) {
    method isTerminateOnly (line 284) | public boolean isTerminateOnly() {
    method setTerminateOnly (line 292) | public void setTerminateOnly() {
    method getSkipCount (line 299) | public long getSkipCount() {
    method incrementCommitCount (line 306) | public void incrementCommitCount() {
    method getReadSkipCount (line 313) | public long getReadSkipCount() {
    method setReadSkipCount (line 321) | public void setReadSkipCount(int readSkipCount) {
    method getWriteSkipCount (line 328) | public long getWriteSkipCount() {
    method setWriteSkipCount (line 336) | public void setWriteSkipCount(int writeSkipCount) {
    method getProcessSkipCount (line 343) | public long getProcessSkipCount() {
    method setProcessSkipCount (line 351) | public void setProcessSkipCount(int processSkipCount) {
    method getLastUpdated (line 358) | public LocalDateTime getLastUpdated() {
    method setLastUpdated (line 366) | public void setLastUpdated(LocalDateTime lastUpdated) {
    method getFailureExceptions (line 370) | public List<Throwable> getFailureExceptions() {
    method getJobExecutionId (line 374) | public long getJobExecutionId() {
    method equals (line 384) | @Override
    method hashCode (line 401) | @Override
    method toString (line 409) | @Override
    method getSummary (line 414) | public String getSummary() {

FILE: spring-cloud-task-stream/src/main/java/org/springframework/cloud/task/batch/listener/support/TaskBatchEventListenerBeanPostProcessor.java
  class TaskBatchEventListenerBeanPostProcessor (line 72) | @ImportRuntimeHints(RuntimeHint.class)
    method postProcessBeforeInitialization (line 78) | @Override
    method postProcessAfterInitialization (line 110) | @Override
    method registerItemProcessEvents (line 115) | private void registerItemProcessEvents(SimpleChunkProcessor chunkProce...
    method registerItemReadEvents (line 122) | private void registerItemReadEvents(SimpleChunkProvider chunkProvider) {
    method registerItemWriteEvents (line 129) | private void registerItemWriteEvents(SimpleChunkProcessor chunkProcess...
    method registerSkipEvents (line 136) | private void registerSkipEvents(SimpleChunkProvider chunkProvider) {
    method registerSkipEvents (line 143) | private void registerSkipEvents(SimpleChunkProcessor chunkProcessor) {
    method registerChunkEventsListener (line 150) | private void registerChunkEventsListener(Object bean) {
    method registerJobExecutionEventListener (line 157) | private void registerJobExecutionEventListener(Object bean) {
    method registerStepExecutionEventListener (line 167) | private void registerStepExecutionEventListener(Object bean) {
    class RuntimeHint (line 176) | static class RuntimeHint implements RuntimeHintsRegistrar {
      method registerHints (line 178) | @Override

FILE: spring-cloud-task-stream/src/main/java/org/springframework/cloud/task/batch/listener/support/TaskEventProperties.java
  class TaskEventProperties (line 25) | @ConfigurationProperties(prefix = "spring.cloud.task.batch.events")
    method getJobExecutionOrder (line 86) | public int getJobExecutionOrder() {
    method setJobExecutionOrder (line 90) | public void setJobExecutionOrder(int jobExecutionOrder) {
    method getStepExecutionOrder (line 94) | public int getStepExecutionOrder() {
    method setStepExecutionOrder (line 98) | public void setStepExecutionOrder(int stepExecutionOrder) {
    method getItemReadOrder (line 102) | public int getItemReadOrder() {
    method setItemReadOrder (line 106) | public void setItemReadOrder(int itemReadOrder) {
    method getItemProcessOrder (line 110) | public int getItemProcessOrder() {
    method setItemProcessOrder (line 114) | public void setItemProcessOrder(int itemProcessOrder) {
    method getItemWriteOrder (line 118) | public int getItemWriteOrder() {
    method setItemWriteOrder (line 122) | public void setItemWriteOrder(int itemWriteOrder) {
    method getChunkOrder (line 126) | public int getChunkOrder() {
    method setChunkOrder (line 130) | public void setChunkOrder(int chunkOrder) {
    method getSkipOrder (line 134) | public int getSkipOrder() {
    method setSkipOrder (line 138) | public void setSkipOrder(int skipOrder) {
    method getJobExecutionEventBindingName (line 142) | public String getJobExecutionEventBindingName() {
    method setJobExecutionEventBindingName (line 146) | public void setJobExecutionEventBindingName(String jobExecutionEventBi...
    method getSkipEventBindingName (line 150) | public String getSkipEventBindingName() {
    method setSkipEventBindingName (line 154) | public void setSkipEventBindingName(String skipEventBindingName) {
    method getChunkEventBindingName (line 158) | public String getChunkEventBindingName() {
    method setChunkEventBindingName (line 162) | public void setChunkEventBindingName(String chunkEventBindingName) {
    method getItemProcessEventBindingName (line 166) | public String getItemProcessEventBindingName() {
    method setItemProcessEventBindingName (line 170) | public void setItemProcessEventBindingName(String itemProcessEventBind...
    method getItemReadEventBindingName (line 174) | public String getItemReadEventBindingName() {
    method setItemReadEventBindingName (line 178) | public void setItemReadEventBindingName(String itemReadEventBindingNam...
    method getItemWriteEventBindingName (line 182) | public String getItemWriteEventBindingName() {
    method setItemWriteEventBindingName (line 186) | public void setItemWriteEventBindingName(String itemWriteEventBindingN...
    method getStepExecutionEventBindingName (line 190) | public String getStepExecutionEventBindingName() {
    method setStepExecutionEventBindingName (line 194) | public void setStepExecutionEventBindingName(String stepExecutionEvent...
    method getTaskEventBindingName (line 198) | public String getTaskEventBindingName() {
    method setTaskEventBindingName (line 202) | public void setTaskEventBindingName(String taskEventBindingName) {

FILE: spring-cloud-task-stream/src/main/java/org/springframework/cloud/task/listener/TaskEventAutoConfiguration.java
  class TaskEventAutoConfiguration (line 39) | @AutoConfiguration
    class ListenerConfiguration (line 56) | @AutoConfiguration
      method taskEventEmitter (line 59) | @Bean

FILE: spring-cloud-task-stream/src/test/java/org/springframework/cloud/task/batch/listener/EventListenerTests.java
  class EventListenerTests (line 58) | public class EventListenerTests {
    method beforeTests (line 80) | @BeforeEach
    method tearDown (line 106) | @AfterEach
    method testEventListenerOrderProperty (line 113) | @Test
    method testItemProcessListenerOnProcessorError (line 124) | @Test
    method testItemProcessListenerAfterProcess (line 132) | @Test
    method testItemProcessBeforeProcessor (line 147) | @Test
    method EventEmittingSkipListenerSkipRead (line 153) | @Test
    method EventEmittingSkipListenerSkipWrite (line 160) | @Test
    method EventEmittingSkipListenerSkipProcess (line 167) | @Test
    method EventEmittingItemReadListener (line 174) | @Test
    method EventEmittingItemReadListenerBeforeRead (line 181) | @Test
    method EventEmittingItemReadListenerAfterRead (line 187) | @Test
    method EventEmittingItemWriteListenerBeforeWrite (line 193) | @Test
    method EventEmittingItemWriteListenerAfterWrite (line 200) | @Test
    method EventEmittingItemWriteListenerWriteError (line 207) | @Test
    method EventEmittingJobExecutionListenerBeforeJob (line 216) | @Test
    method EventEmittingJobExecutionListenerAfterJob (line 227) | @Test
    method EventEmittingStepExecutionListenerBeforeStep (line 238) | @Test
    method EventEmittingStepExecutionListenerAfterStep (line 252) | @Test
    method EventEmittingChunkExecutionListenerBeforeChunk (line 265) | @Test
    method EventEmittingChunkExecutionListenerAfterChunk (line 273) | @Test
    method EventEmittingChunkExecutionListenerAfterChunkError (line 281) | @Test
    method getJobExecution (line 287) | private JobExecution getJobExecution() {
    method getSampleList (line 293) | private Chunk<String> getSampleList() {
    method getChunkContext (line 301) | private ChunkContext getChunkContext() {
    method testListener (line 309) | private List<Message<byte[]>> testListener(String bindingName, int num...
    method getStringFromDestination (line 318) | private String getStringFromDestination(String bindingName) {
    method assertNoMessageFromDestination (line 326) | private void assertNoMessageFromDestination(String bindingName) {
    class BatchEventsApplication (line 331) | @SpringBootApplication

FILE: spring-cloud-task-stream/src/test/java/org/springframework/cloud/task/batch/listener/JobExecutionEventTests.java
  class JobExecutionEventTests (line 57) | public class JobExecutionEventTests {
    method setup (line 76) | @BeforeEach
    method testBasic (line 82) | @Test
    method testJobParameters (line 99) | @Test
    method testStepExecutions (line 120) | @Test
    method testDefaultConfiguration (line 138) | @Test
    method testDisabledJobExecutionListener (line 143) | @Test
    method testDisabledStepExecutionListener (line 149) | @Test
    method testDisabledChunkListener (line 155) | @Test
    method testDisabledItemReadListener (line 161) | @Test
    method testDisabledItemWriteListener (line 167) | @Test
    method testDisabledItemProcessListener (line 173) | @Test
    method testDisabledSkipEventListener (line 179) | @Test
    method testDefaultConstructor (line 185) | @Test
    method testFailureExceptions (line 191) | @Test
    method testToString (line 203) | @Test
    method testGetterSetters (line 209) | @Test
    method testExitStatus (line 223) | @Test
    method testJobInstance (line 235) | @Test
    method testExecutionContext (line 247) | @Test
    method testBatchStatus (line 257) | @Test
    method testUpgradeBatchStatus (line 265) | @Test
    method testOrderConfiguration (line 275) | @Test
    method singleStepBatchJobSkip (line 300) | @Test
    method testDisabledConfiguration (line 317) | private void testDisabledConfiguration(String property, String disable...
    class BatchEventTestApplication (line 347) | @SpringBootApplication

FILE: spring-cloud-task-stream/src/test/java/org/springframework/cloud/task/batch/listener/JobInstanceEventTests.java
  class JobInstanceEventTests (line 28) | public class JobInstanceEventTests {
    method testConstructor (line 34) | @Test
    method testEmptyConstructor (line 41) | @Test
    method testEmptyConstructorEmptyId (line 47) | @Test
    method testToString (line 53) | @Test

FILE: spring-cloud-task-stream/src/test/java/org/springframework/cloud/task/batch/listener/JobParameterEventTests.java
  class JobParameterEventTests (line 31) | public class JobParameterEventTests {
    method testDefaultConstructor (line 33) | @Test
    method testConstructor (line 41) | @Test
    method testEquals (line 57) | @Test
    method testValidHashCode (line 69) | @Test

FILE: spring-cloud-task-stream/src/test/java/org/springframework/cloud/task/batch/listener/JobParametersEventTests.java
  class JobParametersEventTests (line 34) | public class JobParametersEventTests {
    method testDefaultConstructor (line 52) | @Test
    method testConstructor (line 59) | @Test
    method testEquals (line 70) | @Test
    method testHashCode (line 78) | @Test
    method testToString (line 87) | @Test
    method getPopulatedParametersEvent (line 93) | public JobParametersEvent getPopulatedParametersEvent() {

FILE: spring-cloud-task-stream/src/test/java/org/springframework/cloud/task/batch/listener/StepExecutionEventTests.java
  class StepExecutionEventTests (line 37) | public class StepExecutionEventTests {
    method testBasic (line 47) | @Test
    method testException (line 78) | @Test
    method testGetSummary (line 88) | @Test
    method testHashCode (line 98) | @Test
    method testToString (line 108) | @Test
    method testEquals (line 115) | @Test
    method testSettersGetters (line 122) | @Test
    method testExitStatus (line 172) | @Test
    method testBatchStatus (line 188) | @Test
    method testDefaultConstructor (line 196) | @Test
    method testExecutionContext (line 204) | @Test
    method getBasicStepExecution (line 214) | private StepExecution getBasicStepExecution() {

FILE: spring-cloud-task-stream/src/test/java/org/springframework/cloud/task/batch/listener/TaskBatchEventListenerBeanPostProcessorTests.java
  class TaskBatchEventListenerBeanPostProcessorTests (line 49) | @ExtendWith(SpringExtension.class)
    method setupMock (line 83) | @BeforeEach
    method testPostProcessor (line 97) | @Test
    method registerAlias (line 107) | private void registerAlias(Class clazz, String name) {
    class TestConfiguration (line 113) | @Configuration(proxyBeanMethods = false)
      method taskBatchEventListenerBeanPostProcessor (line 117) | @Bean

FILE: spring-cloud-task-stream/src/test/java/org/springframework/cloud/task/batch/listener/support/TaskBatchEventListenerBeanPostProcessorRuntimeHintTests.java
  class TaskBatchEventListenerBeanPostProcessorRuntimeHintTests (line 33) | class TaskBatchEventListenerBeanPostProcessorRuntimeHintTests {
    method setUp (line 37) | @BeforeEach
    method reflectionOnChunkProviderFieldIsAllowed (line 43) | @Test
    method reflectionOnChunkProcessorFieldIsAllowed (line 50) | @Test

FILE: spring-cloud-task-stream/src/test/java/org/springframework/cloud/task/listener/TaskEventTests.java
  class TaskEventTests (line 35) | public class TaskEventTests {
    method testDefaultConfiguration (line 37) | @Test
    class TaskEventsApplication (line 47) | @EnableTask
Condensed preview — 441 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (1,559K chars).
[
  {
    "path": ".editorconfig",
    "chars": 225,
    "preview": "# EditorConfig is awesome: https://EditorConfig.org\n\n# top-most EditorConfig file\nroot = true\n\n[*]\nindent_style = tab\nin"
  },
  {
    "path": ".github/dco.yml",
    "chars": 26,
    "preview": "require:\n  members: false\n"
  },
  {
    "path": ".github/workflows/ci-maven-main.yml",
    "chars": 386,
    "preview": "name: CI PRs\n\non:\n  push:\n    branches:\n      - main\n  pull_request:\n    branches:\n      - main\n\njobs:\n  build:\n    runs"
  },
  {
    "path": ".github/workflows/ci.yaml",
    "chars": 1010,
    "preview": "name: Spring Cloud Task CI Job\n\non:\n  push:\n    branches:\n      - main\n      - 4.3.x\n\n  # Scheduled builds run daily at "
  },
  {
    "path": ".github/workflows/deploy-docs.yml",
    "chars": 968,
    "preview": "name: Deploy Docs\non:\n  push:\n    branches-ignore: [ gh-pages ]\n    tags: '**'\n  repository_dispatch:\n    types: request"
  },
  {
    "path": ".gitignore",
    "chars": 524,
    "preview": "*~\n.#*\n*#\n*.sw*\n_site/\n.factorypath\n.gradletasknamecache\n.DS_Store\n/application.yml\n/application.properties\nasciidoctor."
  },
  {
    "path": ".mvn/jvm.config",
    "chars": 96,
    "preview": "-Xmx1024m -XX:CICompilerCount=1 -XX:TieredStopAtLevel=1 -Djava.security.egd=file:/dev/./urandom\n"
  },
  {
    "path": ".mvn/maven.config",
    "chars": 112,
    "preview": "-DaltSnapshotDeploymentRepository=repo.spring.io::default::https://repo.spring.io/libs-snapshot-local\n-P spring\n"
  },
  {
    "path": ".mvn/wrapper/maven-wrapper.properties",
    "chars": 1018,
    "preview": "# Licensed to the Apache Software Foundation (ASF) under one\n# or more contributor license agreements.  See the NOTICE f"
  },
  {
    "path": ".settings.xml",
    "chars": 2707,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n  ~ /*\n  ~  * Copyright 2016-2019 the original author or authors.\n  ~  *\n  ~"
  },
  {
    "path": ".springformat",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "CONTRIBUTING.adoc",
    "chars": 3229,
    "preview": "= Contributing to Spring Cloud Task\n\n:github: https://github.com/spring-cloud/spring-cloud-task\n\nSpring Cloud Task is re"
  },
  {
    "path": "LICENSE",
    "chars": 11360,
    "preview": "                                 Apache License\n                           Version 2.0, January 2004\n                   "
  },
  {
    "path": "README.adoc",
    "chars": 1747,
    "preview": "////\nDO NOT EDIT THIS FILE. IT WAS GENERATED.\nManual changes to this file will be lost when it is generated again.\nEdit "
  },
  {
    "path": "docs/antora-playbook.yml",
    "chars": 796,
    "preview": "antora:\n  extensions:\n    - require: '@springio/antora-extensions'\n      root_component_name: 'cloud-task'\nsite:\n  title"
  },
  {
    "path": "docs/antora.yml",
    "chars": 542,
    "preview": "name: cloud-task\nversion: true\ntitle: spring-cloud-task\nnav:\n  - modules/ROOT/nav.adoc\next:\n  collector:\n    run:\n      "
  },
  {
    "path": "docs/modules/ROOT/nav.adoc",
    "chars": 304,
    "preview": "* xref:index.adoc[Introduction]\n* xref:getting-started.adoc[]\n* xref:features.adoc[]\n* xref:batch.adoc[]\n* xref:batch-st"
  },
  {
    "path": "docs/modules/ROOT/pages/_attributes.adoc",
    "chars": 2523,
    "preview": ":doctype: book\n:idprefix:\n:idseparator: -\n:tabsize: 4\n:numbered:\n:sectanchors:\n:sectnums:\n:icons: font\n:hide-uri-scheme:"
  },
  {
    "path": "docs/modules/ROOT/pages/appendix-building-the-documentation.adoc",
    "chars": 256,
    "preview": "\n[[appendix-building-the-documentation]]\n= Building This Documentation\n:page-section-summary-toc: 1\n\nThis project uses M"
  },
  {
    "path": "docs/modules/ROOT/pages/appendix-task-repository-schema.adoc",
    "chars": 4611,
    "preview": "[[appendix-task-repository-schema]]\n= Task Repository Schema\n\n[[partintro]]\n--\nThis appendix provides an ERD for the dat"
  },
  {
    "path": "docs/modules/ROOT/pages/appendix.adoc",
    "chars": 91,
    "preview": "\n[[appendix]]\n= Appendices\n:page-section-summary-toc: 1\n\n\n\nifndef::train-docs[]\nendif::[]\n\n"
  },
  {
    "path": "docs/modules/ROOT/pages/batch-starter.adoc",
    "chars": 22359,
    "preview": "\n[[batch-job-starter]]\n= Single Step Batch Job Starter\n\n[[partintro]]\n--\nThis section goes into how to develop a Spring "
  },
  {
    "path": "docs/modules/ROOT/pages/batch.adoc",
    "chars": 3942,
    "preview": "\n[[batch]]\n= Batch\n\n[[partintro]]\n--\nThis section goes into more detail about Spring Cloud Task's integration with Sprin"
  },
  {
    "path": "docs/modules/ROOT/pages/configprops.adoc",
    "chars": 150,
    "preview": "[[configuration-properties]]\n= Configuration Properties\n\nBelow you can find a list of configuration properties.\n\ninclude"
  },
  {
    "path": "docs/modules/ROOT/pages/features.adoc",
    "chars": 20663,
    "preview": "\n[[features]]\n= Features\n\n[[partintro]]\n--\nThis section goes into more detail about Spring Cloud Task, including how to "
  },
  {
    "path": "docs/modules/ROOT/pages/getting-started.adoc",
    "chars": 10822,
    "preview": "\n[[getting-started]]\n= Getting started\n\n[[partintro]]\n--\nIf you are just getting started with Spring Cloud Task, you sho"
  },
  {
    "path": "docs/modules/ROOT/pages/index.adoc",
    "chars": 708,
    "preview": "[[spring-cloud-task-reference-guide]]\n= Spring Cloud Task Reference Guide\n\nMichael Minella, Glenn Renfro, Jay Bryant\n\n:p"
  },
  {
    "path": "docs/modules/ROOT/pages/observability.adoc",
    "chars": 127,
    "preview": "[[observability]]\n= Observability\n\n== Observability metadata\n\ninclude::partial$_metrics.adoc[]\n\ninclude::partial$_spans."
  },
  {
    "path": "docs/modules/ROOT/pages/preface.adoc",
    "chars": 2126,
    "preview": "[[preface]]\n= Preface\n\n[[task-documentation-about]]\n\nThis section provides a brief overview of the Spring Cloud Task ref"
  },
  {
    "path": "docs/modules/ROOT/pages/stream.adoc",
    "chars": 5885,
    "preview": "[[stream-integration]]\n= Spring Cloud Stream Integration\n\n[[partintro]]\n--\nA task by itself can be useful, but integrati"
  },
  {
    "path": "docs/modules/ROOT/partials/_configprops.adoc",
    "chars": 6324,
    "preview": "|===\n|Name | Default | Description\n\n|spring.cloud.task.batch.application-runner-order | `+++0+++` | The order for the {@"
  },
  {
    "path": "docs/modules/ROOT/partials/_conventions.adoc",
    "chars": 767,
    "preview": "[[observability-conventions]]\n=== Observability - Conventions\n\nBelow you can find a list of all `GlobalObservationConven"
  },
  {
    "path": "docs/modules/ROOT/partials/_metrics.adoc",
    "chars": 3247,
    "preview": "[[observability-metrics]]\n=== Observability - Metrics\n\nBelow you can find a list of all metrics declared by this project"
  },
  {
    "path": "docs/modules/ROOT/partials/_spans.adoc",
    "chars": 2208,
    "preview": "[[observability-spans]]\n=== Observability - Spans\n\nBelow you can find a list of all spans declared by this project.\n\n[[o"
  },
  {
    "path": "docs/package.json",
    "chars": 280,
    "preview": "{\n\t\"dependencies\": {\n\t\t\"antora\": \"3.2.0-alpha.9\",\n\t\t\"@antora/atlas-extension\": \"1.0.0-alpha.5\",\n\t\t\"@antora/collector-ext"
  },
  {
    "path": "docs/pom.xml",
    "chars": 4900,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n\t\t xmlns=\"http://m"
  },
  {
    "path": "docs/src/main/antora/resources/antora-resources/antora.yml",
    "chars": 874,
    "preview": "version: @antora-component.version@\nprerelease: @antora-component.prerelease@\n\nasciidoc:\n  attributes:\n    attribute-mis"
  },
  {
    "path": "docs/src/main/asciidoc/.gitignore",
    "chars": 13,
    "preview": "*.html\n*.css\n"
  },
  {
    "path": "docs/src/main/asciidoc/Guardfile",
    "chars": 440,
    "preview": "require 'asciidoctor'\nrequire 'erb'\n\nguard 'shell' do\n\twatch(/.*\\.adoc$/) {|m|\n\t\tAsciidoctor.render_file('index.adoc', \\"
  },
  {
    "path": "docs/src/main/asciidoc/README.adoc",
    "chars": 1505,
    "preview": "[[spring-cloud-task]]\n= Spring Cloud Task\n\nIs a project centered around the idea of processing on demand.  A user is abl"
  },
  {
    "path": "docs/src/main/asciidoc/index.htmladoc",
    "chars": 34,
    "preview": "include::spring-cloud-task.adoc[]\n"
  },
  {
    "path": "docs/src/main/asciidoc/index.htmlsingleadoc",
    "chars": 882,
    "preview": "= Spring Cloud Task Reference Guide\nMichael Minella, Glenn Renfro, Jay Bryant\n\ninclude::_attributes.adoc[]\n\n// ========="
  },
  {
    "path": "docs/src/main/asciidoc/index.pdfadoc",
    "chars": 37,
    "preview": "include::spring-cloud-task.pdfadoc[]\n"
  },
  {
    "path": "docs/src/main/asciidoc/sagan-index.adoc",
    "chars": 434,
    "preview": "Spring Cloud Task allows a user to develop and run short lived microservices using Spring Cloud and run them locally, in"
  },
  {
    "path": "docs/src/main/asciidoc/spring-cloud-task.epubadoc",
    "chars": 882,
    "preview": "= Spring Cloud Task Reference Guide\nMichael Minella, Glenn Renfro, Jay Bryant\n\ninclude::_attributes.adoc[]\n\n// ========="
  },
  {
    "path": "docs/src/main/asciidoc/spring-cloud-task.htmlsingleadoc",
    "chars": 882,
    "preview": "= Spring Cloud Task Reference Guide\nMichael Minella, Glenn Renfro, Jay Bryant\n\ninclude::_attributes.adoc[]\n\n// ========="
  },
  {
    "path": "docs/src/main/asciidoc/spring-cloud-task.pdfadoc",
    "chars": 882,
    "preview": "= Spring Cloud Task Reference Guide\nMichael Minella, Glenn Renfro, Jay Bryant\n\ninclude::_attributes.adoc[]\n\n// ========="
  },
  {
    "path": "docs/src/main/javadoc/spring-javadoc.css",
    "chars": 12612,
    "preview": "/* Javadoc style sheet */\n/*\nOverall document style\n*/\n@import url('resources/fonts/dejavu.css');\n\nbody {\n\tbackground-co"
  },
  {
    "path": "mvnw",
    "chars": 11289,
    "preview": "#!/bin/sh\n# ----------------------------------------------------------------------------\n# Licensed to the Apache Softwa"
  },
  {
    "path": "mvnw.cmd",
    "chars": 7796,
    "preview": "@REM ----------------------------------------------------------------------------\r\n@REM Licensed to the Apache Software "
  },
  {
    "path": "pom.xml",
    "chars": 10159,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
  },
  {
    "path": "spring-cloud-starter-single-step-batch-job/pom.xml",
    "chars": 4158,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
  },
  {
    "path": "spring-cloud-starter-single-step-batch-job/src/main/java/org/springframework/cloud/task/batch/autoconfigure/RangeConverter.java",
    "chars": 1785,
    "preview": "/*\n * Copyright 2020-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-starter-single-step-batch-job/src/main/java/org/springframework/cloud/task/batch/autoconfigure/SingleStepJobAutoConfiguration.java",
    "chars": 3803,
    "preview": "/*\n * Copyright 2019-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-starter-single-step-batch-job/src/main/java/org/springframework/cloud/task/batch/autoconfigure/SingleStepJobProperties.java",
    "chars": 2082,
    "preview": "/*\n * Copyright 2019-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-starter-single-step-batch-job/src/main/java/org/springframework/cloud/task/batch/autoconfigure/flatfile/FlatFileItemReaderAutoConfiguration.java",
    "chars": 6115,
    "preview": "/*\n * Copyright 2019-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-starter-single-step-batch-job/src/main/java/org/springframework/cloud/task/batch/autoconfigure/flatfile/FlatFileItemReaderProperties.java",
    "chars": 11524,
    "preview": "/*\n * Copyright 2019-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-starter-single-step-batch-job/src/main/java/org/springframework/cloud/task/batch/autoconfigure/flatfile/FlatFileItemWriterAutoConfiguration.java",
    "chars": 5789,
    "preview": "/*\n * Copyright 2019-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-starter-single-step-batch-job/src/main/java/org/springframework/cloud/task/batch/autoconfigure/flatfile/FlatFileItemWriterProperties.java",
    "chars": 12061,
    "preview": "/*\n * Copyright 2019-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-starter-single-step-batch-job/src/main/java/org/springframework/cloud/task/batch/autoconfigure/flatfile/package-info.java",
    "chars": 802,
    "preview": "/*\n * Copyright 2015-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-starter-single-step-batch-job/src/main/java/org/springframework/cloud/task/batch/autoconfigure/jdbc/JDBCSingleStepDataSourceAutoConfiguration.java",
    "chars": 2718,
    "preview": "/*\n * Copyright 2022-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-starter-single-step-batch-job/src/main/java/org/springframework/cloud/task/batch/autoconfigure/jdbc/JdbcBatchItemWriterAutoConfiguration.java",
    "chars": 5029,
    "preview": "/*\n * Copyright 2020-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-starter-single-step-batch-job/src/main/java/org/springframework/cloud/task/batch/autoconfigure/jdbc/JdbcBatchItemWriterProperties.java",
    "chars": 2658,
    "preview": "/*\n * Copyright 2020-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-starter-single-step-batch-job/src/main/java/org/springframework/cloud/task/batch/autoconfigure/jdbc/JdbcCursorItemReaderAutoConfiguration.java",
    "chars": 5639,
    "preview": "/*\n * Copyright 2020-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-starter-single-step-batch-job/src/main/java/org/springframework/cloud/task/batch/autoconfigure/jdbc/JdbcCursorItemReaderProperties.java",
    "chars": 9447,
    "preview": "/*\n * Copyright 2020-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-starter-single-step-batch-job/src/main/java/org/springframework/cloud/task/batch/autoconfigure/jdbc/package-info.java",
    "chars": 790,
    "preview": "/*\n * Copyright 2015-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-starter-single-step-batch-job/src/main/java/org/springframework/cloud/task/batch/autoconfigure/kafka/KafkaItemReaderAutoConfiguration.java",
    "chars": 3884,
    "preview": "/*\n * Copyright 2020-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-starter-single-step-batch-job/src/main/java/org/springframework/cloud/task/batch/autoconfigure/kafka/KafkaItemReaderProperties.java",
    "chars": 4509,
    "preview": "/*\n * Copyright 2020-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-starter-single-step-batch-job/src/main/java/org/springframework/cloud/task/batch/autoconfigure/kafka/KafkaItemWriterAutoConfiguration.java",
    "chars": 3911,
    "preview": "/*\n * Copyright 2020-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-starter-single-step-batch-job/src/main/java/org/springframework/cloud/task/batch/autoconfigure/kafka/KafkaItemWriterProperties.java",
    "chars": 2580,
    "preview": "/*\n * Copyright 2020-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-starter-single-step-batch-job/src/main/java/org/springframework/cloud/task/batch/autoconfigure/kafka/package-info.java",
    "chars": 795,
    "preview": "/*\n * Copyright 2015-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-starter-single-step-batch-job/src/main/java/org/springframework/cloud/task/batch/autoconfigure/package-info.java",
    "chars": 770,
    "preview": "/*\n * Copyright 2015-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-starter-single-step-batch-job/src/main/java/org/springframework/cloud/task/batch/autoconfigure/rabbit/AmqpItemReaderAutoConfiguration.java",
    "chars": 2853,
    "preview": "/*\n * Copyright 2020-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-starter-single-step-batch-job/src/main/java/org/springframework/cloud/task/batch/autoconfigure/rabbit/AmqpItemReaderProperties.java",
    "chars": 2298,
    "preview": "/*\n * Copyright 2020-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-starter-single-step-batch-job/src/main/java/org/springframework/cloud/task/batch/autoconfigure/rabbit/AmqpItemWriterAutoConfiguration.java",
    "chars": 2469,
    "preview": "/*\n * Copyright 2020-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-starter-single-step-batch-job/src/main/java/org/springframework/cloud/task/batch/autoconfigure/rabbit/AmqpItemWriterProperties.java",
    "chars": 2289,
    "preview": "/*\n * Copyright 2020-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-starter-single-step-batch-job/src/main/java/org/springframework/cloud/task/batch/autoconfigure/rabbit/package-info.java",
    "chars": 799,
    "preview": "/*\n * Copyright 2015-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-starter-single-step-batch-job/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports",
    "chars": 888,
    "preview": "org.springframework.cloud.task.batch.autoconfigure.flatfile.FlatFileItemReaderAutoConfiguration\norg.springframework.clou"
  },
  {
    "path": "spring-cloud-starter-single-step-batch-job/src/main/resources/META-INF/spring-configuration-metadata.json",
    "chars": 9106,
    "preview": "{\n\t\"groups\": [\n\t\t{\n\t\t\t\"name\": \"spring.batch.job\",\n\t\t\t\"type\": \"org.springframework.cloud.task.batch.autoconfigure.SingleS"
  },
  {
    "path": "spring-cloud-starter-single-step-batch-job/src/test/java/org/springframework/cloud/task/batch/autoconfigure/RangeConverterTests.java",
    "chars": 2048,
    "preview": "/*\n * Copyright 2020-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-starter-single-step-batch-job/src/test/java/org/springframework/cloud/task/batch/autoconfigure/SingleStepJobAutoConfigurationTests.java",
    "chars": 6135,
    "preview": "/*\n * Copyright 2020-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-starter-single-step-batch-job/src/test/java/org/springframework/cloud/task/batch/autoconfigure/flatfile/FlatFileItemReaderAutoConfigurationTests.java",
    "chars": 16616,
    "preview": "/*\n * Copyright 2020-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-starter-single-step-batch-job/src/test/java/org/springframework/cloud/task/batch/autoconfigure/flatfile/FlatFileItemWriterAutoConfigurationTests.java",
    "chars": 19926,
    "preview": "/*\n * Copyright 2020-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-starter-single-step-batch-job/src/test/java/org/springframework/cloud/task/batch/autoconfigure/jdbc/JdbcBatchItemWriterAutoConfigurationTests.java",
    "chars": 14006,
    "preview": "/*\n * Copyright 2020-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-starter-single-step-batch-job/src/test/java/org/springframework/cloud/task/batch/autoconfigure/jdbc/JdbcCursorItemReaderAutoConfigurationTests.java",
    "chars": 16710,
    "preview": "/*\n * Copyright 2020-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-starter-single-step-batch-job/src/test/java/org/springframework/cloud/task/batch/autoconfigure/kafka/KafkaItemReaderAutoConfigurationTests.java",
    "chars": 10783,
    "preview": "/*\n * Copyright 2020-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-starter-single-step-batch-job/src/test/java/org/springframework/cloud/task/batch/autoconfigure/kafka/KafkaItemWriterTests.java",
    "chars": 6956,
    "preview": "/*\n * Copyright 2020-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-starter-single-step-batch-job/src/test/java/org/springframework/cloud/task/batch/autoconfigure/rabbit/AmqpItemReaderAutoConfigurationTests.java",
    "chars": 8533,
    "preview": "/*\n * Copyright 2020-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-starter-single-step-batch-job/src/test/java/org/springframework/cloud/task/batch/autoconfigure/rabbit/AmqpItemWriterAutoConfigurationTests.java",
    "chars": 8004,
    "preview": "/*\n * Copyright 2020-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-starter-single-step-batch-job/src/test/resources/logback-test.xml",
    "chars": 261,
    "preview": "<configuration>\n\t<include resource=\"org/springframework/boot/logging/logback/base.xml\"/>\n\t<logger name=\"org.apache.http\""
  },
  {
    "path": "spring-cloud-starter-single-step-batch-job/src/test/resources/schema-h2.sql",
    "chars": 62,
    "preview": "CREATE TABLE IF NOT EXISTS item\n(\n   item_name varchar(55)\n);\n"
  },
  {
    "path": "spring-cloud-starter-single-step-batch-job/src/test/resources/test.txt",
    "chars": 152,
    "preview": "1 2 3 4 5 six\n# This should be ignored\n7 8 9 1011twelve\n$ So should this\n1314151617eighteen\n1920212223twenty four\n152627"
  },
  {
    "path": "spring-cloud-starter-single-step-batch-job/src/test/resources/testUTF8.csv",
    "chars": 275,
    "preview": "1@2@3@4@5@six\n# This should be ignored\n7@8@9@10@11@twelve\n$ So should this\n13@14@15@16@17@eighteen\n19@20@21@22@23@%twent"
  },
  {
    "path": "spring-cloud-starter-task/pom.xml",
    "chars": 1325,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
  },
  {
    "path": "spring-cloud-task-batch/pom.xml",
    "chars": 2755,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
  },
  {
    "path": "spring-cloud-task-batch/src/main/java/org/springframework/cloud/task/batch/configuration/JobLaunchCondition.java",
    "chars": 1434,
    "preview": "/*\n * Copyright 2016-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-task-batch/src/main/java/org/springframework/cloud/task/batch/configuration/TaskBatchAutoConfiguration.java",
    "chars": 3429,
    "preview": "/*\n * Copyright 2016-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-task-batch/src/main/java/org/springframework/cloud/task/batch/configuration/TaskBatchExecutionListenerBeanPostProcessor.java",
    "chars": 2626,
    "preview": "/*\n * Copyright 2016-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-task-batch/src/main/java/org/springframework/cloud/task/batch/configuration/TaskBatchExecutionListenerFactoryBean.java",
    "chars": 4482,
    "preview": "/*\n * Copyright 2016-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-task-batch/src/main/java/org/springframework/cloud/task/batch/configuration/TaskBatchProperties.java",
    "chars": 2816,
    "preview": "/*\n * Copyright 2015-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-task-batch/src/main/java/org/springframework/cloud/task/batch/configuration/TaskJobLauncherApplicationRunnerFactoryBean.java",
    "chars": 4012,
    "preview": "/*\n * Copyright 2020-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-task-batch/src/main/java/org/springframework/cloud/task/batch/configuration/TaskJobLauncherAutoConfiguration.java",
    "chars": 2653,
    "preview": "/*\n * Copyright 2018-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-task-batch/src/main/java/org/springframework/cloud/task/batch/configuration/package-info.java",
    "chars": 760,
    "preview": "/*\n * Copyright 2015-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-task-batch/src/main/java/org/springframework/cloud/task/batch/handler/TaskJobLauncherApplicationRunner.java",
    "chars": 11579,
    "preview": "/*\n * Copyright 2020-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-task-batch/src/main/java/org/springframework/cloud/task/batch/handler/package-info.java",
    "chars": 751,
    "preview": "/*\n * Copyright 2015-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-task-batch/src/main/java/org/springframework/cloud/task/batch/listener/TaskBatchDao.java",
    "chars": 1229,
    "preview": "/*\n * Copyright 2016-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-task-batch/src/main/java/org/springframework/cloud/task/batch/listener/TaskBatchExecutionListener.java",
    "chars": 2450,
    "preview": "/*\n * Copyright 2016-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-task-batch/src/main/java/org/springframework/cloud/task/batch/listener/package-info.java",
    "chars": 753,
    "preview": "/*\n * Copyright 2015-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-task-batch/src/main/java/org/springframework/cloud/task/batch/listener/support/JdbcTaskBatchDao.java",
    "chars": 2926,
    "preview": "/*\n * Copyright 2016-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-task-batch/src/main/java/org/springframework/cloud/task/batch/listener/support/MapTaskBatchDao.java",
    "chars": 1994,
    "preview": "/*\n * Copyright 2016-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-task-batch/src/main/java/org/springframework/cloud/task/batch/listener/support/package-info.java",
    "chars": 770,
    "preview": "/*\n * Copyright 2015-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-task-batch/src/main/resources/META-INF/additional-spring-configuration-metadata.json",
    "chars": 2390,
    "preview": "{\n\t\"properties\": [\n\t\t{\n\t\t\t\"defaultValue\": true,\n\t\t\t\"name\": \"spring.cloud.task.batch.listener.enabled\",\n\t\t\t\"description\":"
  },
  {
    "path": "spring-cloud-task-batch/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports",
    "chars": 162,
    "preview": "org.springframework.cloud.task.batch.configuration.TaskBatchAutoConfiguration\norg.springframework.cloud.task.batch.confi"
  },
  {
    "path": "spring-cloud-task-batch/src/test/java/org/springframework/cloud/task/batch/configuration/TaskBatchTest.java",
    "chars": 1228,
    "preview": "/*\n * Copyright 2018-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-task-batch/src/test/java/org/springframework/cloud/task/batch/configuration/TaskJobLauncherAutoConfigurationTests.java",
    "chars": 5259,
    "preview": "/*\n * Copyright 2018-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-task-batch/src/test/java/org/springframework/cloud/task/batch/handler/TaskJobLauncherApplicationRunnerCoreTests.java",
    "chars": 10262,
    "preview": "/*\n * Copyright 2018-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-task-batch/src/test/java/org/springframework/cloud/task/batch/handler/TaskJobLauncherApplicationRunnerTests.java",
    "chars": 11784,
    "preview": "/*\n * Copyright 2018-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-task-batch/src/test/java/org/springframework/cloud/task/batch/listener/PrefixTests.java",
    "chars": 3454,
    "preview": "/*\n * Copyright 2018-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-task-batch/src/test/java/org/springframework/cloud/task/batch/listener/PrimaryKeyTests.java",
    "chars": 3382,
    "preview": "/*\n * Copyright 2022-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-task-batch/src/test/java/org/springframework/cloud/task/batch/listener/TaskBatchExecutionListenerTests.java",
    "chars": 15575,
    "preview": "/*\n * Copyright 2016-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-task-batch/src/test/resources/META-INF/spring/org.springframework.cloud.task.batch.configuration.TaskBatchTest.imports",
    "chars": 372,
    "preview": "org.springframework.cloud.task.batch.configuration.TaskBatchAutoConfiguration\norg.springframework.boot.autoconfigure.con"
  },
  {
    "path": "spring-cloud-task-batch/src/test/resources/schema-h2.sql",
    "chars": 1010,
    "preview": "\nCREATE TABLE FOO_EXECUTION  (\n\tTASK_EXECUTION_ID BIGINT NOT NULL PRIMARY KEY ,\n\tSTART_TIME TIMESTAMP DEFAULT NULL ,\n\tEN"
  },
  {
    "path": "spring-cloud-task-batch/src/test/resources/schema-with-primary-keys-h2.sql",
    "chars": 1132,
    "preview": "\nCREATE TABLE TASK_EXECUTION  (\n\tTASK_EXECUTION_ID BIGINT NOT NULL PRIMARY KEY ,\n\tSTART_TIME TIMESTAMP DEFAULT NULL ,\n\tE"
  },
  {
    "path": "spring-cloud-task-core/pom.xml",
    "chars": 6356,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2"
  },
  {
    "path": "spring-cloud-task-core/src/main/java/org/springframework/cloud/task/configuration/DefaultTaskConfigurer.java",
    "chars": 8010,
    "preview": "/*\n * Copyright 2015-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-task-core/src/main/java/org/springframework/cloud/task/configuration/EnableTask.java",
    "chars": 1820,
    "preview": "/*\n * Copyright 2015-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-task-core/src/main/java/org/springframework/cloud/task/configuration/NoTransactionManagerProperty.java",
    "chars": 1261,
    "preview": "/*\n * Copyright 2022-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-task-core/src/main/java/org/springframework/cloud/task/configuration/SimpleTaskAutoConfiguration.java",
    "chars": 6412,
    "preview": "/*\n * Copyright 2015-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-task-core/src/main/java/org/springframework/cloud/task/configuration/SingleInstanceTaskListener.java",
    "chars": 6589,
    "preview": "/*\n * Copyright 2018-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-task-core/src/main/java/org/springframework/cloud/task/configuration/SingleTaskConfiguration.java",
    "chars": 2305,
    "preview": "/*\n * Copyright 2018-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-task-core/src/main/java/org/springframework/cloud/task/configuration/TaskConfigurer.java",
    "chars": 2250,
    "preview": "/*\n * Copyright 2015-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-task-core/src/main/java/org/springframework/cloud/task/configuration/TaskLifecycleConfiguration.java",
    "chars": 3824,
    "preview": "/*\n * Copyright 2018-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-task-core/src/main/java/org/springframework/cloud/task/configuration/TaskObservationCloudKeyValues.java",
    "chars": 2707,
    "preview": "/*\n * Copyright 2022-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-task-core/src/main/java/org/springframework/cloud/task/configuration/TaskProperties.java",
    "chars": 4916,
    "preview": "/*\n * Copyright 2016-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-task-core/src/main/java/org/springframework/cloud/task/configuration/TaskRepositoryDatabaseInitializerDetector.java",
    "chars": 1494,
    "preview": "/*\n * Copyright 2022-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-task-core/src/main/java/org/springframework/cloud/task/configuration/TaskRepositoryDependsOnDatabaseInitializationDetector.java",
    "chars": 1353,
    "preview": "/*\n * Copyright 2022-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-task-core/src/main/java/org/springframework/cloud/task/configuration/TaskRuntimeHints.java",
    "chars": 2840,
    "preview": "/*\n * Copyright 2022-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-task-core/src/main/java/org/springframework/cloud/task/configuration/observation/DefaultTaskObservationConvention.java",
    "chars": 1271,
    "preview": "/*\n * Copyright 2013-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-task-core/src/main/java/org/springframework/cloud/task/configuration/observation/ObservationApplicationRunner.java",
    "chars": 2389,
    "preview": "/*\n * Copyright 2018-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-task-core/src/main/java/org/springframework/cloud/task/configuration/observation/ObservationApplicationRunnerBeanPostProcessor.java",
    "chars": 1579,
    "preview": "/*\n * Copyright 2013-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-task-core/src/main/java/org/springframework/cloud/task/configuration/observation/ObservationCommandLineRunner.java",
    "chars": 2323,
    "preview": "/*\n * Copyright 2018-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-task-core/src/main/java/org/springframework/cloud/task/configuration/observation/ObservationCommandLineRunnerBeanPostProcessor.java",
    "chars": 1579,
    "preview": "/*\n * Copyright 2013-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-task-core/src/main/java/org/springframework/cloud/task/configuration/observation/ObservationTaskAutoConfiguration.java",
    "chars": 2039,
    "preview": "/*\n * Copyright 2013-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-task-core/src/main/java/org/springframework/cloud/task/configuration/observation/TaskDocumentedObservation.java",
    "chars": 1736,
    "preview": "/*\n * Copyright 2013-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-task-core/src/main/java/org/springframework/cloud/task/configuration/observation/TaskObservationContext.java",
    "chars": 1239,
    "preview": "/*\n * Copyright 2013-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-task-core/src/main/java/org/springframework/cloud/task/configuration/observation/TaskObservationConvention.java",
    "chars": 1142,
    "preview": "/*\n * Copyright 2013-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-task-core/src/main/java/org/springframework/cloud/task/configuration/observation/package-info.java",
    "chars": 760,
    "preview": "/*\n * Copyright 2015-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-task-core/src/main/java/org/springframework/cloud/task/configuration/package-info.java",
    "chars": 767,
    "preview": "/*\n * Copyright 2016-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-task-core/src/main/java/org/springframework/cloud/task/listener/DefaultTaskExecutionObservationConvention.java",
    "chars": 1861,
    "preview": "/*\n * Copyright 2022-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-task-core/src/main/java/org/springframework/cloud/task/listener/TaskException.java",
    "chars": 947,
    "preview": "/*\n * Copyright 2016-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-task-core/src/main/java/org/springframework/cloud/task/listener/TaskExecutionException.java",
    "chars": 985,
    "preview": "/*\n * Copyright 2016-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-task-core/src/main/java/org/springframework/cloud/task/listener/TaskExecutionListener.java",
    "chars": 1947,
    "preview": "/*\n * Copyright 2016-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-task-core/src/main/java/org/springframework/cloud/task/listener/TaskExecutionListenerSupport.java",
    "chars": 1044,
    "preview": "/*\n * Copyright 2017-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-task-core/src/main/java/org/springframework/cloud/task/listener/TaskExecutionObservation.java",
    "chars": 3659,
    "preview": "/*\n * Copyright 2022-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-task-core/src/main/java/org/springframework/cloud/task/listener/TaskExecutionObservationContext.java",
    "chars": 1837,
    "preview": "/*\n * Copyright 2022-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-task-core/src/main/java/org/springframework/cloud/task/listener/TaskExecutionObservationConvention.java",
    "chars": 1168,
    "preview": "/*\n * Copyright 2022-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-task-core/src/main/java/org/springframework/cloud/task/listener/TaskLifecycleListener.java",
    "chars": 16498,
    "preview": "/*\n * Copyright 2016-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-task-core/src/main/java/org/springframework/cloud/task/listener/TaskListenerExecutorObjectFactory.java",
    "chars": 5968,
    "preview": "/*\n * Copyright 2018-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-task-core/src/main/java/org/springframework/cloud/task/listener/TaskObservations.java",
    "chars": 5244,
    "preview": "/*\n * Copyright 2019-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-task-core/src/main/java/org/springframework/cloud/task/listener/annotation/AfterTask.java",
    "chars": 1503,
    "preview": "/*\n * Copyright 2016-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-task-core/src/main/java/org/springframework/cloud/task/listener/annotation/BeforeTask.java",
    "chars": 1509,
    "preview": "/*\n * Copyright 2016-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-task-core/src/main/java/org/springframework/cloud/task/listener/annotation/FailedTask.java",
    "chars": 1540,
    "preview": "/*\n * Copyright 2016-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-task-core/src/main/java/org/springframework/cloud/task/listener/annotation/TaskListenerExecutor.java",
    "chars": 4635,
    "preview": "/*\n * Copyright 2016-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-task-core/src/main/java/org/springframework/cloud/task/listener/annotation/package-info.java",
    "chars": 754,
    "preview": "/*\n * Copyright 2015-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-task-core/src/main/java/org/springframework/cloud/task/listener/package-info.java",
    "chars": 741,
    "preview": "/*\n * Copyright 2015-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-task-core/src/main/java/org/springframework/cloud/task/package-info.java",
    "chars": 713,
    "preview": "/*\n * Copyright 2015-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-task-core/src/main/java/org/springframework/cloud/task/repository/TaskExecution.java",
    "chars": 5026,
    "preview": "/*\n * Copyright 2015-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-task-core/src/main/java/org/springframework/cloud/task/repository/TaskExplorer.java",
    "chars": 5691,
    "preview": "/*\n * Copyright 2015-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-task-core/src/main/java/org/springframework/cloud/task/repository/TaskNameResolver.java",
    "chars": 934,
    "preview": "/*\n * Copyright 2016-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-task-core/src/main/java/org/springframework/cloud/task/repository/TaskRepository.java",
    "chars": 5824,
    "preview": "/*\n * Copyright 2015-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-task-core/src/main/java/org/springframework/cloud/task/repository/dao/JdbcTaskExecutionDao.java",
    "chars": 25162,
    "preview": "/*\n * Copyright 2015-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-task-core/src/main/java/org/springframework/cloud/task/repository/dao/MapTaskExecutionDao.java",
    "chars": 12473,
    "preview": "/*\n * Copyright 2015-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-task-core/src/main/java/org/springframework/cloud/task/repository/dao/TaskExecutionDao.java",
    "chars": 10144,
    "preview": "/*\n * Copyright 2015-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-task-core/src/main/java/org/springframework/cloud/task/repository/dao/package-info.java",
    "chars": 798,
    "preview": "/*\n * Copyright 2016-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-task-core/src/main/java/org/springframework/cloud/task/repository/database/PagingQueryProvider.java",
    "chars": 2077,
    "preview": "/*\n * Copyright 2015-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-task-core/src/main/java/org/springframework/cloud/task/repository/database/package-info.java",
    "chars": 760,
    "preview": "/*\n * Copyright 2015-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-task-core/src/main/java/org/springframework/cloud/task/repository/database/support/AbstractSqlPagingQueryProvider.java",
    "chars": 5009,
    "preview": "/*\n * Copyright 2015-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-task-core/src/main/java/org/springframework/cloud/task/repository/database/support/Db2PagingQueryProvider.java",
    "chars": 1968,
    "preview": "/*\n * Copyright 2016-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-task-core/src/main/java/org/springframework/cloud/task/repository/database/support/H2PagingQueryProvider.java",
    "chars": 1393,
    "preview": "/*\n * Copyright 2016-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-task-core/src/main/java/org/springframework/cloud/task/repository/database/support/HsqlPagingQueryProvider.java",
    "chars": 1327,
    "preview": "/*\n * Copyright 2015-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-task-core/src/main/java/org/springframework/cloud/task/repository/database/support/MariaDbPagingQueryProvider.java",
    "chars": 1334,
    "preview": "/*\n * Copyright 2022-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-task-core/src/main/java/org/springframework/cloud/task/repository/database/support/MySqlPagingQueryProvider.java",
    "chars": 1327,
    "preview": "/*\n * Copyright 2015-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-task-core/src/main/java/org/springframework/cloud/task/repository/database/support/OraclePagingQueryProvider.java",
    "chars": 1956,
    "preview": "/*\n * Copyright 2015-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-task-core/src/main/java/org/springframework/cloud/task/repository/database/support/PostgresPagingQueryProvider.java",
    "chars": 1346,
    "preview": "/*\n * Copyright 2015-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-task-core/src/main/java/org/springframework/cloud/task/repository/database/support/SqlPagingQueryProviderFactoryBean.java",
    "chars": 6018,
    "preview": "/*\n * Copyright 2015-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-task-core/src/main/java/org/springframework/cloud/task/repository/database/support/SqlPagingQueryUtils.java",
    "chars": 4272,
    "preview": "/*\n * Copyright 2015-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-task-core/src/main/java/org/springframework/cloud/task/repository/database/support/SqlServerPagingQueryProvider.java",
    "chars": 2043,
    "preview": "/*\n * Copyright 2015-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-task-core/src/main/java/org/springframework/cloud/task/repository/database/support/package-info.java",
    "chars": 789,
    "preview": "/*\n * Copyright 2015-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-task-core/src/main/java/org/springframework/cloud/task/repository/package-info.java",
    "chars": 750,
    "preview": "/*\n * Copyright 2015-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-task-core/src/main/java/org/springframework/cloud/task/repository/support/DatabaseType.java",
    "chars": 4671,
    "preview": "/*\n * Copyright 2015-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-task-core/src/main/java/org/springframework/cloud/task/repository/support/SimpleTaskExplorer.java",
    "chars": 3960,
    "preview": "/*\n * Copyright 2015-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-task-core/src/main/java/org/springframework/cloud/task/repository/support/SimpleTaskNameResolver.java",
    "chars": 2053,
    "preview": "/*\n * Copyright 2015-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-task-core/src/main/java/org/springframework/cloud/task/repository/support/SimpleTaskRepository.java",
    "chars": 7672,
    "preview": "/*\n * Copyright 2015-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-task-core/src/main/java/org/springframework/cloud/task/repository/support/TaskExecutionDaoFactoryBean.java",
    "chars": 5427,
    "preview": "/*\n * Copyright 2015-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-task-core/src/main/java/org/springframework/cloud/task/repository/support/TaskRepositoryInitializer.java",
    "chars": 4667,
    "preview": "/*\n * Copyright 2015-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-task-core/src/main/java/org/springframework/cloud/task/repository/support/package-info.java",
    "chars": 760,
    "preview": "/*\n * Copyright 2016-present the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \""
  },
  {
    "path": "spring-cloud-task-core/src/main/resources/META-INF/additional-spring-configuration-metadata.json",
    "chars": 583,
    "preview": "{\n\t\"properties\": [\n\t\t{\n\t\t\t\"defaultValue\": false,\n\t\t\t\"name\": \"spring.cloud.task.single-instance-enabled\",\n\t\t\t\"description"
  },
  {
    "path": "spring-cloud-task-core/src/main/resources/META-INF/spring/aot.factories",
    "chars": 115,
    "preview": "org.springframework.aot.hint.RuntimeHintsRegistrar=\\\norg.springframework.cloud.task.configuration.TaskRuntimeHints\n"
  },
  {
    "path": "spring-cloud-task-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports",
    "chars": 232,
    "preview": "org.springframework.cloud.task.configuration.SingleTaskConfiguration\norg.springframework.cloud.task.configuration.Simple"
  },
  {
    "path": "spring-cloud-task-core/src/main/resources/META-INF/spring.factories",
    "chars": 349,
    "preview": "org.springframework.boot.sql.init.dependency.DatabaseInitializerDetector=\\\norg.springframework.cloud.task.configuration."
  }
]

// ... and 241 more files (download for full content)

About this extraction

This page contains the full source code of the spring-cloud/spring-cloud-task GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 441 files (1.3 MB), approximately 341.6k tokens, and a symbol index with 1941 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!