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..da49da4f 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 @@ -1,5 +1,5 @@ /* - * Copyright 2015-2016 the original author or authors. + * Copyright 2015-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. @@ -114,10 +114,9 @@ public class SimpleTaskConfiguration { @Bean 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..3fcce0e7 --- /dev/null +++ b/spring-cloud-task-core/src/test/java/org/springframework/cloud/task/TaskRepositoryInitializerDefaultTaskConfigurerTests.java @@ -0,0 +1,58 @@ +/* + * 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 2.0.0 + */ +@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(4); + } +} 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..0705ba20 --- /dev/null +++ b/spring-cloud-task-core/src/test/java/org/springframework/cloud/task/TaskRepositoryInitializerNoDataSourceTaskConfigurerTests.java @@ -0,0 +1,60 @@ +/* + * 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 2.0.0 + */ +@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); + } +}