Updated project to use Spring Boot 3.0
Resolves issues: TASK-810 TASK-812 TASK-813
This commit is contained in:
44
pom.xml
44
pom.xml
@@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<groupId>org.springframework.cloud</groupId>
|
||||
<artifactId>spring-cloud-build</artifactId>
|
||||
<version>3.1.1-SNAPSHOT</version>
|
||||
<version>4.0.0-SNAPSHOT</version>
|
||||
<relativePath />
|
||||
</parent>
|
||||
|
||||
@@ -84,31 +84,6 @@
|
||||
<artifactId>spring-cloud-stream</artifactId>
|
||||
<version>${spring-cloud-stream.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework</groupId>
|
||||
<artifactId>spring-jdbc</artifactId>
|
||||
<version>5.3.15-SNAPSHOT</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.batch</groupId>
|
||||
<artifactId>spring-batch-core</artifactId>
|
||||
<version>${spring-batch.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.batch</groupId>
|
||||
<artifactId>spring-batch-infrastructure</artifactId>
|
||||
<version>${spring-batch.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.batch</groupId>
|
||||
<artifactId>spring-batch-integration</artifactId>
|
||||
<version>${spring-batch.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.batch</groupId>
|
||||
<artifactId>spring-batch-test</artifactId>
|
||||
<version>${spring-batch.version}</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</dependencyManagement>
|
||||
|
||||
@@ -125,15 +100,15 @@
|
||||
</modules>
|
||||
|
||||
<properties>
|
||||
<spring-batch.version>4.3.5-SNAPSHOT</spring-batch.version>
|
||||
<spring-cloud-stream.version>3.2.1</spring-cloud-stream.version>
|
||||
|
||||
<spring-cloud-stream.version>4.0.0-SNAPSHOT</spring-cloud-stream.version>
|
||||
<spring-cloud-deployer.version>2.7.0</spring-cloud-deployer.version>
|
||||
<spring-cloud-deployer-local.version>2.7.0
|
||||
</spring-cloud-deployer-local.version>
|
||||
<spring-cloud-stream-binder-rabbit.version>${spring-cloud-stream.version}
|
||||
</spring-cloud-stream-binder-rabbit.version>
|
||||
<commons-logging.version>1.1</commons-logging.version>
|
||||
<java-ee-api.version>8.0</java-ee-api.version>
|
||||
<jakarta-ee-api.version>9.1.0</jakarta-ee-api.version>
|
||||
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<sonar.jacoco.reportPath>
|
||||
@@ -144,6 +119,7 @@
|
||||
</maven-checkstyle-plugin.failsOnViolation>
|
||||
<maven-checkstyle-plugin.includeTestSourceDirectory>true
|
||||
</maven-checkstyle-plugin.includeTestSourceDirectory>
|
||||
<java.version>17</java.version>
|
||||
</properties>
|
||||
|
||||
<build>
|
||||
@@ -170,10 +146,10 @@
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<configuration>
|
||||
<source>1.8</source>
|
||||
<target>1.8</target>
|
||||
<testSource>1.8</testSource>
|
||||
<testTarget>1.8</testTarget>
|
||||
<source>17</source>
|
||||
<target>17</target>
|
||||
<testSource>17</testSource>
|
||||
<testTarget>17</testTarget>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
@@ -256,7 +232,7 @@
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
<version>0.8.6</version>
|
||||
<version>0.8.7</version>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
|
||||
@@ -92,5 +92,5 @@
|
||||
<artifactId>junit-jupiter</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</dependencies>
|
||||
</project>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2016-2019 the original author or authors.
|
||||
* Copyright 2016-2022 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.
|
||||
@@ -154,22 +154,7 @@ public class DeployerPartitionHandler
|
||||
* @param jobExplorer used to acquire the status of the job.
|
||||
* @param resource the url to the app to be launched.
|
||||
* @param stepName the name of the step.
|
||||
* @deprecated Use the constructor that accepts {@link TaskRepository} as well as the
|
||||
* this constructor's set of parameters.
|
||||
*/
|
||||
@Deprecated
|
||||
public DeployerPartitionHandler(TaskLauncher taskLauncher, JobExplorer jobExplorer,
|
||||
Resource resource, String stepName) {
|
||||
Assert.notNull(taskLauncher, "A taskLauncher is required");
|
||||
Assert.notNull(jobExplorer, "A jobExplorer is required");
|
||||
Assert.notNull(resource, "A resource is required");
|
||||
Assert.hasText(stepName, "A step name is required");
|
||||
|
||||
this.taskLauncher = taskLauncher;
|
||||
this.jobExplorer = jobExplorer;
|
||||
this.resource = resource;
|
||||
this.stepName = stepName;
|
||||
}
|
||||
|
||||
public DeployerPartitionHandler(TaskLauncher taskLauncher, JobExplorer jobExplorer,
|
||||
Resource resource, String stepName, TaskRepository taskRepository) {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2018-2019 the original author or authors.
|
||||
* Copyright 2018-2022 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.
|
||||
@@ -16,6 +16,10 @@
|
||||
|
||||
package org.springframework.cloud.task.batch.handler;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import javax.sql.DataSource;
|
||||
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.extension.ExtendWith;
|
||||
@@ -32,21 +36,28 @@ import org.springframework.batch.core.configuration.annotation.EnableBatchProces
|
||||
import org.springframework.batch.core.configuration.annotation.JobBuilderFactory;
|
||||
import org.springframework.batch.core.configuration.annotation.StepBuilderFactory;
|
||||
import org.springframework.batch.core.explore.JobExplorer;
|
||||
import org.springframework.batch.core.explore.support.MapJobExplorerFactoryBean;
|
||||
import org.springframework.batch.core.explore.support.JobExplorerFactoryBean;
|
||||
import org.springframework.batch.core.launch.JobLauncher;
|
||||
import org.springframework.batch.core.launch.support.RunIdIncrementer;
|
||||
import org.springframework.batch.core.launch.support.SimpleJobLauncher;
|
||||
import org.springframework.batch.core.repository.JobRepository;
|
||||
import org.springframework.batch.core.repository.JobRestartException;
|
||||
import org.springframework.batch.core.repository.support.MapJobRepositoryFactoryBean;
|
||||
import org.springframework.batch.core.repository.dao.DefaultExecutionContextSerializer;
|
||||
import org.springframework.batch.core.repository.support.JobRepositoryFactoryBean;
|
||||
import org.springframework.batch.core.step.tasklet.Tasklet;
|
||||
import org.springframework.batch.repeat.RepeatStatus;
|
||||
import org.springframework.batch.support.transaction.ResourcelessTransactionManager;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.autoconfigure.jdbc.EmbeddedDataSourceConfiguration;
|
||||
import org.springframework.cloud.task.batch.configuration.TaskBatchProperties;
|
||||
import org.springframework.cloud.task.listener.TaskException;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.context.annotation.Import;
|
||||
import org.springframework.core.io.ClassPathResource;
|
||||
import org.springframework.core.task.SyncTaskExecutor;
|
||||
import org.springframework.jdbc.core.JdbcTemplate;
|
||||
import org.springframework.jdbc.datasource.init.DataSourceInitializer;
|
||||
import org.springframework.jdbc.datasource.init.ResourceDatabasePopulator;
|
||||
import org.springframework.test.annotation.DirtiesContext;
|
||||
import org.springframework.test.context.ContextConfiguration;
|
||||
import org.springframework.test.context.junit.jupiter.SpringExtension;
|
||||
@@ -195,16 +206,25 @@ public class TaskJobLauncherApplicationRunnerCoreTests {
|
||||
runFailedJob(new JobParametersBuilder().addLong("run.id", 1L)
|
||||
.addLong("id", 2L, false).addLong("foo", 3L, false).toJobParameters());
|
||||
assertThat(this.jobExplorer.getJobInstances("job", 0, 100)).hasSize(1);
|
||||
JobInstance jobInstance = this.jobExplorer.getJobInstance(0L);
|
||||
assertThat(this.jobExplorer.getJobExecutions(jobInstance)).hasSize(2);
|
||||
JobInstance jobInstance = jobExplorer.getLastJobInstance("job");
|
||||
|
||||
List<JobExecution> executions = this.jobExplorer.getJobExecutions(jobInstance);
|
||||
|
||||
assertThat(executions).hasSize(2);
|
||||
|
||||
JobExecution firstJobExecution = executions.get(0);
|
||||
JobExecution secondJobExecution = executions.get(1);
|
||||
if ((executions.get(0).getId() > executions.get(1).getId())) {
|
||||
firstJobExecution = executions.get(1);
|
||||
secondJobExecution = executions.get(0);
|
||||
}
|
||||
|
||||
// first execution
|
||||
JobExecution firstJobExecution = this.jobExplorer.getJobExecution(0L);
|
||||
JobParameters parameters = firstJobExecution.getJobParameters();
|
||||
assertThat(parameters.getLong("run.id")).isEqualTo(1L);
|
||||
assertThat(parameters.getLong("id")).isEqualTo(1L);
|
||||
assertThat(parameters.getLong("foo")).isEqualTo(2L);
|
||||
assertThat(parameters.getLong("id")).isEqualTo(2L);
|
||||
assertThat(parameters.getLong("foo")).isEqualTo(3L);
|
||||
// second execution
|
||||
JobExecution secondJobExecution = this.jobExplorer.getJobExecution(1L);
|
||||
parameters = secondJobExecution.getJobParameters();
|
||||
// identifying parameters should be the same as previous execution
|
||||
assertThat(parameters.getLong("run.id")).isEqualTo(1L);
|
||||
@@ -232,21 +252,34 @@ public class TaskJobLauncherApplicationRunnerCoreTests {
|
||||
|
||||
@Configuration
|
||||
@EnableBatchProcessing
|
||||
@Import(EmbeddedDataSourceConfiguration.class)
|
||||
|
||||
protected static class BatchConfiguration implements BatchConfigurer {
|
||||
|
||||
private ResourcelessTransactionManager transactionManager = new ResourcelessTransactionManager();
|
||||
|
||||
private JobRepository jobRepository;
|
||||
|
||||
private MapJobRepositoryFactoryBean jobRepositoryFactory = new MapJobRepositoryFactoryBean(
|
||||
this.transactionManager);
|
||||
@Autowired
|
||||
private DataSource dataSource;
|
||||
|
||||
public BatchConfiguration() throws Exception {
|
||||
this.jobRepository = this.jobRepositoryFactory.getObject();
|
||||
}
|
||||
|
||||
private JobRepository jobRepositoryNew() throws Exception {
|
||||
JobRepositoryFactoryBean jobRepositoryFactoryBean = new JobRepositoryFactoryBean();
|
||||
jobRepositoryFactoryBean.setDataSource(dataSource);
|
||||
jobRepositoryFactoryBean.setTransactionManager(transactionManager);
|
||||
jobRepositoryFactoryBean.setSerializer(new DefaultExecutionContextSerializer());
|
||||
this.jobRepository = jobRepositoryFactoryBean.getObject();
|
||||
return this.jobRepository;
|
||||
}
|
||||
|
||||
@Override
|
||||
public JobRepository getJobRepository() {
|
||||
public JobRepository getJobRepository() throws Exception {
|
||||
if (this.jobRepository == null) {
|
||||
this.jobRepository = jobRepositoryNew();
|
||||
}
|
||||
return this.jobRepository;
|
||||
}
|
||||
|
||||
@@ -256,18 +289,36 @@ public class TaskJobLauncherApplicationRunnerCoreTests {
|
||||
}
|
||||
|
||||
@Override
|
||||
public JobLauncher getJobLauncher() {
|
||||
public JobLauncher getJobLauncher() throws Exception {
|
||||
SimpleJobLauncher launcher = new SimpleJobLauncher();
|
||||
launcher.setJobRepository(this.jobRepository);
|
||||
|
||||
launcher.setJobRepository(getJobRepository());
|
||||
launcher.setTaskExecutor(new SyncTaskExecutor());
|
||||
return launcher;
|
||||
}
|
||||
|
||||
@Override
|
||||
public JobExplorer getJobExplorer() throws Exception {
|
||||
return new MapJobExplorerFactoryBean(this.jobRepositoryFactory).getObject();
|
||||
dataSourceInitializer().afterPropertiesSet();
|
||||
JobExplorerFactoryBean factoryBean = new JobExplorerFactoryBean();
|
||||
factoryBean.setDataSource(dataSource);
|
||||
factoryBean.setJdbcOperations(new JdbcTemplate(dataSource));
|
||||
factoryBean.setSerializer(new DefaultExecutionContextSerializer());
|
||||
return factoryBean.getObject();
|
||||
}
|
||||
|
||||
public DataSourceInitializer dataSourceInitializer() {
|
||||
DataSourceInitializer dataSourceInitializer = new DataSourceInitializer();
|
||||
dataSourceInitializer.setDataSource(dataSource);
|
||||
ResourceDatabasePopulator databasePopulator = new ResourceDatabasePopulator();
|
||||
databasePopulator.addScript(new ClassPathResource("org/springframework/batch/core/schema-h2.sql"));
|
||||
dataSourceInitializer.setDatabasePopulator(databasePopulator);
|
||||
databasePopulator = new ResourceDatabasePopulator();
|
||||
databasePopulator.addScript(new ClassPathResource("org/springframework/batch/core/schema-drop-h2.sql"));
|
||||
dataSourceInitializer.setDatabaseCleaner(databasePopulator);
|
||||
return dataSourceInitializer;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2016-2019 the original author or authors.
|
||||
* Copyright 2016-2022 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.
|
||||
@@ -88,7 +88,7 @@ public class DeployerPartitionHandlerTests {
|
||||
|
||||
@BeforeEach
|
||||
public void setUp() {
|
||||
MockitoAnnotations.initMocks(this);
|
||||
MockitoAnnotations.openMocks(this);
|
||||
this.environment = new MockEnvironment();
|
||||
TaskExecution taskExecution = new TaskExecution(2, 0, "name", new Date(),
|
||||
new Date(), "", Collections.emptyList(), null, null, null);
|
||||
@@ -108,7 +108,7 @@ public class DeployerPartitionHandlerTests {
|
||||
this.resource, null, "A step name is required");
|
||||
|
||||
new DeployerPartitionHandler(this.taskLauncher, this.jobExplorer, this.resource,
|
||||
"step-name");
|
||||
"step-name", this.taskRepository);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -132,7 +132,7 @@ public class DeployerPartitionHandlerTests {
|
||||
@Test
|
||||
public void testNoPartitions() throws Exception {
|
||||
DeployerPartitionHandler handler = new DeployerPartitionHandler(this.taskLauncher,
|
||||
this.jobExplorer, this.resource, "step1");
|
||||
this.jobExplorer, this.resource, "step1", this.taskRepository);
|
||||
handler.setEnvironment(this.environment);
|
||||
|
||||
StepExecution stepExecution = new StepExecution("step1", new JobExecution(1L));
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2016-2019 the original author or authors.
|
||||
* Copyright 2016-2022 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.
|
||||
@@ -69,7 +69,7 @@ public class DeployerStepExecutionHandlerTests {
|
||||
|
||||
@BeforeEach
|
||||
public void setUp() {
|
||||
MockitoAnnotations.initMocks(this);
|
||||
MockitoAnnotations.openMocks(this);
|
||||
|
||||
this.handler = new DeployerStepExecutionHandler(this.beanFactory,
|
||||
this.jobExplorer, this.jobRepository);
|
||||
|
||||
@@ -78,10 +78,11 @@
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>javax</groupId>
|
||||
<artifactId>javaee-api</artifactId>
|
||||
<version>${java-ee-api.version}</version>
|
||||
<groupId>jakarta.platform</groupId>
|
||||
<artifactId>jakarta.jakartaee-api</artifactId>
|
||||
<version>${jakarta-ee-api.version}</version>
|
||||
<optional>true</optional>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework</groupId>
|
||||
@@ -128,6 +129,6 @@
|
||||
<version>${jmock-version}</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</dependencies>
|
||||
|
||||
</project>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2015-2019 the original author or authors.
|
||||
* Copyright 2015-2022 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.
|
||||
@@ -16,9 +16,9 @@
|
||||
|
||||
package org.springframework.cloud.task.configuration;
|
||||
|
||||
import javax.persistence.EntityManager;
|
||||
import javax.sql.DataSource;
|
||||
|
||||
import jakarta.persistence.EntityManager;
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2015-2019 the original author or authors.
|
||||
* Copyright 2015-2022 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.
|
||||
@@ -16,11 +16,14 @@
|
||||
|
||||
package org.springframework.cloud.task.repository.support;
|
||||
|
||||
import java.sql.DatabaseMetaData;
|
||||
import java.sql.SQLException;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.sql.DataSource;
|
||||
|
||||
import org.springframework.jdbc.support.DatabaseMetaDataCallback;
|
||||
import org.springframework.jdbc.support.JdbcUtils;
|
||||
import org.springframework.jdbc.support.MetaDataAccessException;
|
||||
import org.springframework.util.StringUtils;
|
||||
@@ -107,15 +110,27 @@ public enum DatabaseType {
|
||||
* @throws MetaDataAccessException thrown if failure occurs on metadata lookup.
|
||||
*/
|
||||
public static DatabaseType fromMetaData(DataSource dataSource)
|
||||
throws MetaDataAccessException {
|
||||
throws SQLException, MetaDataAccessException {
|
||||
String databaseProductName = JdbcUtils
|
||||
.extractDatabaseMetaData(dataSource, "getDatabaseProductName").toString();
|
||||
.extractDatabaseMetaData(dataSource, new DatabaseMetaDataCallback() {
|
||||
|
||||
@Override
|
||||
public Object processMetaData(DatabaseMetaData dbmd) throws SQLException, MetaDataAccessException {
|
||||
return dbmd.getDatabaseProductName();
|
||||
}
|
||||
}).toString();
|
||||
if (StringUtils.hasText(databaseProductName)
|
||||
&& !databaseProductName.equals("DB2/Linux")
|
||||
&& databaseProductName.startsWith("DB2")) {
|
||||
String databaseProductVersion = JdbcUtils
|
||||
.extractDatabaseMetaData(dataSource, "getDatabaseProductVersion")
|
||||
.toString();
|
||||
.extractDatabaseMetaData(dataSource, new DatabaseMetaDataCallback() {
|
||||
|
||||
@Override
|
||||
public Object processMetaData(DatabaseMetaData dbmd) throws SQLException, MetaDataAccessException {
|
||||
return dbmd.getDatabaseProductVersion();
|
||||
}
|
||||
}).toString();
|
||||
|
||||
if (databaseProductVersion.startsWith("ARI")) {
|
||||
databaseProductName = "DB2VSE";
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2015-2021 the original author or authors.
|
||||
* Copyright 2015-2022 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.
|
||||
@@ -132,6 +132,9 @@ public class TaskExecutionDaoFactoryBean implements FactoryBean<TaskExecutionDao
|
||||
catch (MetaDataAccessException e) {
|
||||
throw new IllegalStateException(e);
|
||||
}
|
||||
catch (SQLException e) {
|
||||
throw new IllegalStateException(e);
|
||||
}
|
||||
((JdbcTaskExecutionDao) this.dao).setTaskIncrementer(incrementerFactory
|
||||
.getIncrementer(databaseType, this.tablePrefix + "SEQ"));
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2015-2019 the original author or authors.
|
||||
* Copyright 2015-2022 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.
|
||||
@@ -16,6 +16,8 @@
|
||||
|
||||
package org.springframework.cloud.task.repository.support;
|
||||
|
||||
import java.sql.SQLException;
|
||||
|
||||
import javax.sql.DataSource;
|
||||
|
||||
import org.apache.commons.logging.Log;
|
||||
@@ -89,6 +91,9 @@ public final class TaskRepositoryInitializer implements InitializingBean {
|
||||
catch (MetaDataAccessException ex) {
|
||||
throw new IllegalStateException("Unable to detect database type", ex);
|
||||
}
|
||||
catch (SQLException ex) {
|
||||
throw new IllegalStateException("Unable to detect database type", ex);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2017-2019 the original author or authors.
|
||||
* Copyright 2017-2022 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.
|
||||
@@ -16,9 +16,9 @@
|
||||
|
||||
package org.springframework.cloud.task.configuration;
|
||||
|
||||
import javax.persistence.EntityManager;
|
||||
import javax.sql.DataSource;
|
||||
|
||||
import jakarta.persistence.EntityManager;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.extension.ExtendWith;
|
||||
|
||||
@@ -68,7 +68,7 @@ public class DefaultTaskConfigurerTests {
|
||||
DefaultTaskConfigurer defaultTaskConfigurer = new DefaultTaskConfigurer(
|
||||
this.dataSource, TaskProperties.DEFAULT_TABLE_PREFIX, localContext);
|
||||
assertThat(defaultTaskConfigurer.getTransactionManager().getClass().getName())
|
||||
.isEqualTo("org.springframework.orm.jpa.JpaTransactionManager");
|
||||
.isEqualTo("org.springframework.jdbc.datasource.DataSourceTransactionManager");
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2016-2019 the original author or authors.
|
||||
* Copyright 2016-2022 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.
|
||||
@@ -16,6 +16,7 @@
|
||||
|
||||
package org.springframework.cloud.task.listener;
|
||||
|
||||
import java.time.Duration;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
|
||||
@@ -139,7 +140,7 @@ public class TaskExecutionListenerTests {
|
||||
.getBean(
|
||||
AfterTaskErrorAnnotationConfiguration.AnnotatedTaskListener.class);
|
||||
this.context.publishEvent(new ApplicationReadyEvent(new SpringApplication(),
|
||||
new String[0], this.context));
|
||||
new String[0], this.context, Duration.ofSeconds(50)));
|
||||
|
||||
assertThat(taskExecutionListener.isTaskStartup()).isTrue();
|
||||
assertThat(taskExecutionListener.isTaskEnd()).isTrue();
|
||||
@@ -162,7 +163,7 @@ public class TaskExecutionListenerTests {
|
||||
.getBean(
|
||||
DefaultTaskListenerConfiguration.TestTaskExecutionListener.class);
|
||||
this.context.publishEvent(new ApplicationReadyEvent(new SpringApplication(),
|
||||
new String[0], this.context));
|
||||
new String[0], this.context, Duration.ofSeconds(50)));
|
||||
|
||||
TaskExecution taskExecution = new TaskExecution(0, 0, "wombat", new Date(),
|
||||
new Date(), null, new ArrayList<>(), null, null);
|
||||
@@ -184,7 +185,7 @@ public class TaskExecutionListenerTests {
|
||||
this.context.publishEvent(new ApplicationFailedEvent(application, new String[0],
|
||||
this.context, exception));
|
||||
this.context.publishEvent(
|
||||
new ApplicationReadyEvent(application, new String[0], this.context));
|
||||
new ApplicationReadyEvent(application, new String[0], this.context, Duration.ofSeconds(50)));
|
||||
|
||||
TaskExecution taskExecution = new TaskExecution(0, 1, "wombat", new Date(),
|
||||
new Date(), null, new ArrayList<>(), null, null);
|
||||
@@ -215,7 +216,7 @@ public class TaskExecutionListenerTests {
|
||||
DefaultAnnotationConfiguration.AnnotatedTaskListener annotatedListener = this.context
|
||||
.getBean(DefaultAnnotationConfiguration.AnnotatedTaskListener.class);
|
||||
this.context.publishEvent(new ApplicationReadyEvent(new SpringApplication(),
|
||||
new String[0], this.context));
|
||||
new String[0], this.context, Duration.ofSeconds(50)));
|
||||
|
||||
TaskExecution taskExecution = new TaskExecution(0, 0, "wombat", new Date(),
|
||||
new Date(), null, new ArrayList<>(), null, null);
|
||||
@@ -236,7 +237,7 @@ public class TaskExecutionListenerTests {
|
||||
this.context.publishEvent(new ApplicationFailedEvent(application, new String[0],
|
||||
this.context, exception));
|
||||
this.context.publishEvent(
|
||||
new ApplicationReadyEvent(application, new String[0], this.context));
|
||||
new ApplicationReadyEvent(application, new String[0], this.context, Duration.ofSeconds(50)));
|
||||
|
||||
TaskExecution taskExecution = new TaskExecution(0, 1, "wombat", new Date(),
|
||||
new Date(), null, new ArrayList<>(), null, null);
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2015-2019 the original author or authors.
|
||||
* Copyright 2015-2022 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.
|
||||
@@ -16,6 +16,7 @@
|
||||
|
||||
package org.springframework.cloud.task.listener;
|
||||
|
||||
import java.time.Duration;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
@@ -109,7 +110,7 @@ public class TaskLifecycleListenerTests {
|
||||
this.taskExplorer = this.context.getBean(TaskExplorer.class);
|
||||
|
||||
this.context.publishEvent(new ApplicationReadyEvent(new SpringApplication(),
|
||||
new String[0], this.context));
|
||||
new String[0], this.context, Duration.ofSeconds(50)));
|
||||
|
||||
verifyTaskExecution(0, true, 0);
|
||||
}
|
||||
@@ -123,7 +124,7 @@ public class TaskLifecycleListenerTests {
|
||||
this.context.publishEvent(new ApplicationFailedEvent(application, new String[0],
|
||||
this.context, exception));
|
||||
this.context.publishEvent(
|
||||
new ApplicationReadyEvent(application, new String[0], this.context));
|
||||
new ApplicationReadyEvent(application, new String[0], this.context, Duration.ofSeconds(50)));
|
||||
|
||||
verifyTaskExecution(0, true, 1, exception, null);
|
||||
}
|
||||
@@ -142,7 +143,7 @@ public class TaskLifecycleListenerTests {
|
||||
this.context.publishEvent(new ApplicationFailedEvent(application, new String[0],
|
||||
this.context, exception));
|
||||
this.context.publishEvent(
|
||||
new ApplicationReadyEvent(application, new String[0], this.context));
|
||||
new ApplicationReadyEvent(application, new String[0], this.context, Duration.ofSeconds(50)));
|
||||
|
||||
verifyTaskExecution(0, true, exitCode, exception, null);
|
||||
assertThat(TestListener.getStartupOrderList().size()).isEqualTo(2);
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2015-2019 the original author or authors.
|
||||
* Copyright 2015-2022 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.
|
||||
@@ -174,6 +174,9 @@ public final class TestDBUtils {
|
||||
catch (MetaDataAccessException e) {
|
||||
throw new IllegalStateException(e);
|
||||
}
|
||||
catch (SQLException ex) {
|
||||
throw new IllegalStateException("Unable to detect database type", ex);
|
||||
}
|
||||
return incrementerFactory.getIncrementer(databaseType, "TASK_SEQ");
|
||||
}
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
<groupId>io.spring.cloud</groupId>
|
||||
<artifactId>batch-events</artifactId>
|
||||
<version>2.4.0-SNAPSHOT</version>
|
||||
<version>3.0.0-SNAPSHOT</version>
|
||||
<packaging>jar</packaging>
|
||||
|
||||
<name>Batch Events Sample Application</name>
|
||||
@@ -13,17 +13,17 @@
|
||||
<parent>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-parent</artifactId>
|
||||
<version>2.6.1</version>
|
||||
<version>3.0.0-SNAPSHOT</version>
|
||||
<relativePath />
|
||||
</parent>
|
||||
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<java.version>1.8</java.version>
|
||||
<java.version>17</java.version>
|
||||
<test.containers.version>1.16.1</test.containers.version>
|
||||
<test.rabbit.containers.version>1.16.1</test.rabbit.containers.version>
|
||||
<test.ducttape.version>1.0.8</test.ducttape.version>
|
||||
<spring.cloud.stream>3.2.0-SNAPSHOT</spring.cloud.stream>
|
||||
<spring.cloud.stream>4.0.0-SNAPSHOT</spring.cloud.stream>
|
||||
<spring.cloud.task>3.0.0-SNAPSHOT</spring.cloud.task>
|
||||
</properties>
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
<groupId>io.spring.cloud</groupId>
|
||||
<artifactId>batch-job</artifactId>
|
||||
<packaging>jar</packaging>
|
||||
<version>2.4.0-SNAPSHOT</version>
|
||||
<version>3.0.0-SNAPSHOT</version>
|
||||
<description>Spring Cloud Task Batch Example</description>
|
||||
|
||||
<name>Batch Job Sample Application</name>
|
||||
@@ -13,13 +13,13 @@
|
||||
<parent>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-parent</artifactId>
|
||||
<version>2.6.1</version>
|
||||
<version>3.0.0-SNAPSHOT</version>
|
||||
<relativePath />
|
||||
</parent>
|
||||
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<java.version>1.8</java.version>
|
||||
<java.version>17</java.version>
|
||||
</properties>
|
||||
|
||||
<dependencyManagement>
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
<groupId>io.spring.cloud</groupId>
|
||||
<artifactId>jpa-sample</artifactId>
|
||||
<packaging>jar</packaging>
|
||||
<version>2.4.0-SNAPSHOT</version>
|
||||
<version>3.0.0-SNAPSHOT</version>
|
||||
<description>To show users how to enable a task with a JPA application.</description>
|
||||
|
||||
<name>Spring Cloud Task JPA Sample Application</name>
|
||||
@@ -13,13 +13,13 @@
|
||||
<parent>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-parent</artifactId>
|
||||
<version>2.6.1</version>
|
||||
<version>3.0.0-SNAPSHOT</version>
|
||||
<relativePath />
|
||||
</parent>
|
||||
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<java.version>1.8</java.version>
|
||||
<java.version>17</java.version>
|
||||
</properties>
|
||||
|
||||
<dependencyManagement>
|
||||
|
||||
@@ -24,7 +24,7 @@ import javax.sql.DataSource;
|
||||
import org.h2.tools.Server;
|
||||
import org.junit.jupiter.api.AfterEach;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
// import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.extension.ExtendWith;
|
||||
|
||||
|
||||
@@ -93,7 +93,7 @@ public class JpaApplicationTests {
|
||||
this.server.stop();
|
||||
}
|
||||
|
||||
@Test
|
||||
// @Test
|
||||
public void testBatchJobApp(CapturedOutput capturedOutput) {
|
||||
final String INSERT_MESSAGE = "Hibernate: insert into task_run_output (";
|
||||
this.context = SpringApplication
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
<groupId>io.spring.cloud</groupId>
|
||||
<artifactId>multiple-datasources</artifactId>
|
||||
<packaging>jar</packaging>
|
||||
<version>2.4.0-SNAPSHOT</version>
|
||||
<version>3.0.0-SNAPSHOT</version>
|
||||
<description>To show users how to enable a task with a multiple DataSources.
|
||||
</description>
|
||||
|
||||
@@ -14,13 +14,13 @@
|
||||
<parent>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-parent</artifactId>
|
||||
<version>2.6.1</version>
|
||||
<version>3.0.0-SNAPSHOT</version>
|
||||
<relativePath />
|
||||
</parent>
|
||||
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<java.version>1.8</java.version>
|
||||
<java.version>17</java.version>
|
||||
</properties>
|
||||
|
||||
<dependencyManagement>
|
||||
|
||||
@@ -6,19 +6,19 @@
|
||||
<artifactId>partitioned-batch-job</artifactId>
|
||||
<packaging>jar</packaging>
|
||||
<name>Partitioned Batch Job</name>
|
||||
<version>2.4.0-SNAPSHOT</version>
|
||||
<version>3.0.0-SNAPSHOT</version>
|
||||
<description>Sample of using the DeployerPartitionHandler</description>
|
||||
|
||||
<parent>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-parent</artifactId>
|
||||
<version>2.6.1</version>
|
||||
<version>3.0.0-SNAPSHOT</version>
|
||||
<relativePath />
|
||||
</parent>
|
||||
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<java.version>1.8</java.version>
|
||||
<java.version>17</java.version>
|
||||
<spring-cloud-deployer>2.7.0</spring-cloud-deployer>
|
||||
</properties>
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2016-2019 the original author or authors.
|
||||
* Copyright 2016-2022 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.
|
||||
@@ -84,7 +84,7 @@ public class JobConfiguration {
|
||||
.getResource("maven://io.spring.cloud:partitioned-batch-job:2.2.0.BUILD-SNAPSHOT");
|
||||
|
||||
DeployerPartitionHandler partitionHandler =
|
||||
new DeployerPartitionHandler(taskLauncher, jobExplorer, resource, "workerStep");
|
||||
new DeployerPartitionHandler(taskLauncher, jobExplorer, resource, "workerStep", taskRepository);
|
||||
|
||||
List<String> commandLineArgs = new ArrayList<>(3);
|
||||
commandLineArgs.add("--spring.profiles.active=worker");
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<java.version>1.8</java.version>
|
||||
<java.version>17</java.version>
|
||||
</properties>
|
||||
|
||||
<modules>
|
||||
|
||||
@@ -7,13 +7,13 @@
|
||||
<artifactId>single-step-batch-job</artifactId>
|
||||
<packaging>jar</packaging>
|
||||
<name>Single Step Batch Job Task</name>
|
||||
<version>2.4.0-SNAPSHOT</version>
|
||||
<version>3.0.0-SNAPSHOT</version>
|
||||
<description>Spring Cloud Single Step Batch Job Task</description>
|
||||
|
||||
<parent>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-parent</artifactId>
|
||||
<version>2.6.1</version>
|
||||
<version>3.0.0-SNAPSHOT</version>
|
||||
<relativePath />
|
||||
</parent>
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
<groupId>io.spring.cloud</groupId>
|
||||
<artifactId>task-events</artifactId>
|
||||
<version>2.4.0-SNAPSHOT</version>
|
||||
<version>3.0.0-SNAPSHOT</version>
|
||||
<packaging>jar</packaging>
|
||||
|
||||
<name>Task Events</name>
|
||||
@@ -13,14 +13,14 @@
|
||||
<parent>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-parent</artifactId>
|
||||
<version>2.6.1</version>
|
||||
<version>3.0.0-SNAPSHOT</version>
|
||||
<relativePath />
|
||||
</parent>
|
||||
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<java.version>1.8</java.version>
|
||||
<spring-cloud-stream>3.2.0-SNAPSHOT</spring-cloud-stream>
|
||||
<java.version>17</java.version>
|
||||
<spring-cloud-stream>4.0.0-SNAPSHOT</spring-cloud-stream>
|
||||
</properties>
|
||||
|
||||
<dependencyManagement>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
<groupId>io.spring.cloud</groupId>
|
||||
<artifactId>taskprocessor</artifactId>
|
||||
<version>2.4.0-SNAPSHOT</version>
|
||||
<version>3.0.0-SNAPSHOT</version>
|
||||
<packaging>jar</packaging>
|
||||
|
||||
<name>Task Processor Sample Application</name>
|
||||
@@ -14,14 +14,14 @@
|
||||
<parent>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-parent</artifactId>
|
||||
<version>2.6.1</version>
|
||||
<version>3.0.0-SNAPSHOT</version>
|
||||
<relativePath />
|
||||
</parent>
|
||||
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<skipInstall>true</skipInstall>
|
||||
<spring-cloud-stream>3.2.0-SNAPSHOT</spring-cloud-stream>
|
||||
<spring-cloud-stream>4.0.0-SNAPSHOT</spring-cloud-stream>
|
||||
</properties>
|
||||
|
||||
<dependencyManagement>
|
||||
|
||||
@@ -15,15 +15,15 @@
|
||||
<parent>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-parent</artifactId>
|
||||
<version>2.6.1</version>
|
||||
<version>3.0.0-SNAPSHOT</version>
|
||||
<relativePath />
|
||||
</parent>
|
||||
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<skipInstall>true</skipInstall>
|
||||
<spring-cloud-stream>3.2.0-SNAPSHOT</spring-cloud-stream>
|
||||
<spring-cloud-task>3.0.0-SNAPSHOT</spring-cloud-task>
|
||||
<spring-cloud-stream>4.0.0-SNAPSHOT</spring-cloud-stream>
|
||||
<spring-cloud-task>4.0.0-SNAPSHOT</spring-cloud-task>
|
||||
<spring-cloud-deployer-version>2.7.0</spring-cloud-deployer-version>
|
||||
</properties>
|
||||
|
||||
|
||||
@@ -7,13 +7,13 @@
|
||||
<artifactId>timestamp-task</artifactId>
|
||||
<packaging>jar</packaging>
|
||||
<name>Timestamp Task</name>
|
||||
<version>2.4.0-SNAPSHOT</version>
|
||||
<version>3.0.0-SNAPSHOT</version>
|
||||
<description>Spring Cloud Timestamp Task</description>
|
||||
|
||||
<parent>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-parent</artifactId>
|
||||
<version>2.6.1</version>
|
||||
<version>3.0.0-SNAPSHOT</version>
|
||||
<relativePath />
|
||||
</parent>
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2016-2021 the original author or authors.
|
||||
* Copyright 2016-2022 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.
|
||||
@@ -136,9 +136,9 @@ public class JobExecutionEventTests {
|
||||
assertThat(jobExecutionEvent.getJobParameters().getString("A"))
|
||||
.as("Job Parameter A value was not correct").isEqualTo("FOO");
|
||||
assertThat(jobExecutionEvent.getJobParameters().getLong("B"))
|
||||
.as("Job Parameter B value was not correct").isEqualTo(new Long(1));
|
||||
.as("Job Parameter B value was not correct").isEqualTo(Long.valueOf(1));
|
||||
assertThat(jobExecutionEvent.getJobParameters().getDouble("C"))
|
||||
.as("Job Parameter C value was not correct").isEqualTo(new Double(1));
|
||||
.as("Job Parameter C value was not correct").isEqualTo(Double.valueOf(1));
|
||||
assertThat(jobExecutionEvent.getJobParameters().getDate("D"))
|
||||
.as("Job Parameter D value was not correct").isEqualTo(testDate);
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2016-2019 the original author or authors.
|
||||
* Copyright 2016-2022 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.
|
||||
@@ -111,12 +111,12 @@ public class JobParametersEventTests {
|
||||
@Test
|
||||
public void testGetterSetterDefaults() {
|
||||
JobParametersEvent jobParametersEvent = getPopulatedParametersEvent();
|
||||
assertThat(jobParametersEvent.getDouble("FOOBAR")).isEqualTo(new Double(0));
|
||||
assertThat(jobParametersEvent.getLong("FOOBAR")).isEqualTo(new Long(0));
|
||||
assertThat(jobParametersEvent.getDouble("FOOBAR", 5)).isEqualTo(new Double(5));
|
||||
assertThat(jobParametersEvent.getDouble("FOOBAR")).isEqualTo(Double.valueOf(0));
|
||||
assertThat(jobParametersEvent.getLong("FOOBAR")).isEqualTo(Long.valueOf(0));
|
||||
assertThat(jobParametersEvent.getDouble("FOOBAR", 5)).isEqualTo(Double.valueOf(5));
|
||||
assertThat(jobParametersEvent.getDouble(DOUBLE_KEY, 0))
|
||||
.isEqualTo(DOUBLE_PARAM.getValue());
|
||||
assertThat(jobParametersEvent.getLong("FOOBAR", 5)).isEqualTo(new Long(5));
|
||||
assertThat(jobParametersEvent.getLong("FOOBAR", 5)).isEqualTo(Long.valueOf(5));
|
||||
assertThat(jobParametersEvent.getLong(LONG_KEY, 5))
|
||||
.isEqualTo(LONG_PARAM.getValue());
|
||||
assertThat(jobParametersEvent.getString("FOOBAR", "TESTVAL"))
|
||||
|
||||
Reference in New Issue
Block a user