From 2ca9a38fa98318a3f16fbdb482454c49b05dccb2 Mon Sep 17 00:00:00 2001 From: mrbq Date: Sat, 6 Oct 2018 15:13:01 +0200 Subject: [PATCH] Obtain the TaskRepositoryInitializer from the Default Configurer Added tests during merge Updated to set proper version --- pom.xml | 1 + spring-cloud-task-core/pom.xml | 6 +++ .../SimpleTaskConfiguration.java | 8 +-- ...InitializerDefaultTaskConfigurerTests.java | 49 ++++++++++++++++++ ...alizerNoDataSourceTaskConfigurerTests.java | 51 +++++++++++++++++++ 5 files changed, 112 insertions(+), 3 deletions(-) create mode 100644 spring-cloud-task-core/src/test/java/org/springframework/cloud/task/TaskRepositoryInitializerDefaultTaskConfigurerTests.java create mode 100644 spring-cloud-task-core/src/test/java/org/springframework/cloud/task/TaskRepositoryInitializerNoDataSourceTaskConfigurerTests.java diff --git a/pom.xml b/pom.xml index 1af24858..9010f3c9 100755 --- a/pom.xml +++ b/pom.xml @@ -146,6 +146,7 @@ 3.0.8.RELEASE 1.1 7.0 + 3.11.0 UTF-8 ${project.build.directory}/coverage-reports/jacoco-ut.exec diff --git a/spring-cloud-task-core/pom.xml b/spring-cloud-task-core/pom.xml index 5383a4a4..fe0c6222 100755 --- a/spring-cloud-task-core/pom.xml +++ b/spring-cloud-task-core/pom.xml @@ -77,6 +77,12 @@ hibernate-validator test + + org.assertj + assertj-core + ${assertj.version} + test + diff --git a/spring-cloud-task-core/src/main/java/org/springframework/cloud/task/configuration/SimpleTaskConfiguration.java b/spring-cloud-task-core/src/main/java/org/springframework/cloud/task/configuration/SimpleTaskConfiguration.java index 28e6c5cd..92b54c07 100644 --- a/spring-cloud-task-core/src/main/java/org/springframework/cloud/task/configuration/SimpleTaskConfiguration.java +++ b/spring-cloud-task-core/src/main/java/org/springframework/cloud/task/configuration/SimpleTaskConfiguration.java @@ -115,9 +115,11 @@ public class SimpleTaskConfiguration { public TaskRepositoryInitializer taskRepositoryInitializer() { TaskRepositoryInitializer taskRepositoryInitializer = new TaskRepositoryInitializer(); - if(!CollectionUtils.isEmpty(this.dataSources) && this.dataSources.size() == 1) { - DataSource next = this.dataSources.iterator().next(); - taskRepositoryInitializer.setDataSource(next); + + DataSource initializerDataSource = getDefaultConfigurer().getTaskDataSource(); + + if(initializerDataSource != null) { + taskRepositoryInitializer.setDataSource(initializerDataSource); } return taskRepositoryInitializer; diff --git a/spring-cloud-task-core/src/test/java/org/springframework/cloud/task/TaskRepositoryInitializerDefaultTaskConfigurerTests.java b/spring-cloud-task-core/src/test/java/org/springframework/cloud/task/TaskRepositoryInitializerDefaultTaskConfigurerTests.java new file mode 100644 index 00000000..6ec077eb --- /dev/null +++ b/spring-cloud-task-core/src/test/java/org/springframework/cloud/task/TaskRepositoryInitializerDefaultTaskConfigurerTests.java @@ -0,0 +1,49 @@ +/* + * Copyright 2018 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 + * + * 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. + */ +package org.springframework.cloud.task; +import java.util.List; +import java.util.Map; +import javax.sql.DataSource; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.jdbc.EmbeddedDataSourceConfiguration; +import org.springframework.cloud.task.configuration.SimpleTaskConfiguration; +import org.springframework.cloud.task.configuration.TaskConfigurer; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringRunner; +import static org.assertj.core.api.AssertionsForInterfaceTypes.assertThat; +/** + * Verifies that TaskRepositoryInitializer creates tables if a {@link TaskConfigurer} + * has a {@link DataSource}. + * + * @author Glenn Renfro + * @since 1.3.1 + */ +@RunWith(SpringRunner.class) +@ContextConfiguration(classes = {SimpleTaskConfiguration.class, + EmbeddedDataSourceConfiguration.class}) +public class TaskRepositoryInitializerDefaultTaskConfigurerTests { + @Autowired + private DataSource dataSource; + @Test + public void testTablesCreated() throws Exception { + JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource); + List> rows= jdbcTemplate.queryForList("SHOW TABLES"); + assertThat(rows.size()).isEqualTo(3); + } +} diff --git a/spring-cloud-task-core/src/test/java/org/springframework/cloud/task/TaskRepositoryInitializerNoDataSourceTaskConfigurerTests.java b/spring-cloud-task-core/src/test/java/org/springframework/cloud/task/TaskRepositoryInitializerNoDataSourceTaskConfigurerTests.java new file mode 100644 index 00000000..3d98922f --- /dev/null +++ b/spring-cloud-task-core/src/test/java/org/springframework/cloud/task/TaskRepositoryInitializerNoDataSourceTaskConfigurerTests.java @@ -0,0 +1,51 @@ +/* + * Copyright 2018 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 + * + * 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. + */ +package org.springframework.cloud.task; +import java.util.List; +import java.util.Map; +import javax.sql.DataSource; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.jdbc.EmbeddedDataSourceConfiguration; +import org.springframework.cloud.task.configuration.DefaultTaskConfigurer; +import org.springframework.cloud.task.configuration.SimpleTaskConfiguration; +import org.springframework.cloud.task.configuration.TaskConfigurer; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringRunner; +import static org.assertj.core.api.AssertionsForInterfaceTypes.assertThat; +/** + * Verifies that TaskRepositoryInitializer does not create tables if a {@link TaskConfigurer} + * has no {@link DataSource}. + * + * @author Glenn Renfro + * @since 1.3.1 + */ +@RunWith(SpringRunner.class) +@ContextConfiguration(classes = {SimpleTaskConfiguration.class, + EmbeddedDataSourceConfiguration.class, + DefaultTaskConfigurer.class}) +public class TaskRepositoryInitializerNoDataSourceTaskConfigurerTests { + @Autowired + private DataSource dataSource; + @Test + public void testNoTablesCreated() throws Exception { + JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource); + List> rows= jdbcTemplate.queryForList("SHOW TABLES"); + assertThat(rows.size()).isEqualTo(0); + } +}