TSK-1996 taskana.properties file is optional

This commit is contained in:
arolfes 2023-02-03 17:09:58 +01:00 committed by Mustapha Zorgati
parent 61a5e32865
commit b96c68ac6f
19 changed files with 150 additions and 62 deletions

View File

@ -102,7 +102,9 @@ public abstract class AbstractAccTest {
}
}
TaskanaConfiguration tec =
new TaskanaConfiguration.Builder(dataSource, false, schemaNameTmp).build();
new TaskanaConfiguration.Builder(dataSource, false, schemaNameTmp)
.initTaskanaProperties()
.build();
initTaskanaEngine(tec);
SampleDataGenerator sampleDataGenerator =

View File

@ -18,6 +18,7 @@ class TaskanaEngineConfigurationTest extends AbstractAccTest {
DataSource ds = DataSourceGenerator.getDataSource();
TaskanaConfiguration taskEngineConfiguration =
new TaskanaConfiguration.Builder(ds, false, DataSourceGenerator.getSchemaName(), false)
.initTaskanaProperties()
.build();
TaskanaEngine te = TaskanaEngine.buildTaskanaEngine(taskEngineConfiguration);

View File

@ -54,7 +54,9 @@ public class TaskanaProducers {
}
}
this.taskanaEngineConfiguration =
new TaskanaConfiguration.Builder(dataSource, true, "TASKANA", false).build();
new TaskanaConfiguration.Builder(dataSource, true, "TASKANA", false)
.initTaskanaProperties()
.build();
} catch (NamingException | SQLException | IOException e) {
LOGGER.error("Could not start Taskana: ", e);
}

View File

@ -21,6 +21,7 @@ class TaskanaConfigurationTest {
TaskanaConfiguration configuration =
new TaskanaConfiguration.Builder(
TestContainerExtension.createDataSourceForH2(), false, "TASKANA")
.initTaskanaProperties()
.build();
Stream<Field> fields =
@ -47,6 +48,7 @@ class TaskanaConfigurationTest {
TaskanaConfiguration configuration =
new TaskanaConfiguration.Builder(
TestContainerExtension.createDataSourceForH2(), false, "TASKANA")
.initTaskanaProperties()
.build();
Stream<Field> fields =

View File

@ -433,22 +433,6 @@ public class TaskanaConfiguration {
boolean useManagedTransactions,
String schemaName,
boolean securityEnabled) {
this(
dataSource,
useManagedTransactions,
schemaName,
securityEnabled,
TASKANA_PROPERTIES,
TASKANA_PROPERTY_SEPARATOR);
}
public Builder(
DataSource dataSource,
boolean useManagedTransactions,
String schemaName,
boolean securityEnabled,
String propertiesFileName,
String propertySeparator) {
this.useManagedTransactions = useManagedTransactions;
this.securityEnabled = securityEnabled;
@ -459,8 +443,6 @@ public class TaskanaConfiguration {
}
this.schemaName = initSchemaName(schemaName);
this.initTaskanaProperties(propertiesFileName, propertySeparator);
}
@SuppressWarnings("unused")

View File

@ -55,6 +55,7 @@ public abstract class AbstractAccTest {
taskanaEngineConfiguration =
new TaskanaConfiguration.Builder(dataSource, false, schemaName)
.initTaskanaProperties()
.germanPublicHolidaysEnabled(true)
.build();
SampleDataGenerator sampleDataGenerator =

View File

@ -29,6 +29,7 @@ class TaskanaConfigAccTest {
taskanaEngineConfiguration =
new TaskanaConfiguration.Builder(
DataSourceGenerator.getDataSource(), true, DataSourceGenerator.getSchemaName())
.initTaskanaProperties()
.build();
}
@ -65,9 +66,8 @@ class TaskanaConfigAccTest {
DataSourceGenerator.getDataSource(),
true,
DataSourceGenerator.getSchemaName(),
true,
propertiesFileName,
delimiter)
true)
.initTaskanaProperties(propertiesFileName, delimiter)
.build();
assertThat(taskanaEngineConfiguration.getClassificationTypes()).isEmpty();
}
@ -81,9 +81,8 @@ class TaskanaConfigAccTest {
DataSourceGenerator.getDataSource(),
true,
DataSourceGenerator.getSchemaName(),
true,
propertiesFileName,
delimiter)
true)
.initTaskanaProperties(propertiesFileName, delimiter)
.build();
assertThat(taskanaEngineConfiguration.getClassificationCategoriesByTypeMap())
.containsExactly(
@ -100,9 +99,8 @@ class TaskanaConfigAccTest {
DataSourceGenerator.getDataSource(),
true,
DataSourceGenerator.getSchemaName(),
true,
propertiesFileName,
delimiter)
true)
.initTaskanaProperties(propertiesFileName, delimiter)
.build();
assertThat(taskanaEngineConfiguration.getClassificationCategoriesByTypeMap())
.containsExactly(

View File

@ -17,7 +17,9 @@ class TaskanaEngineConfigTest {
void should_ReturnTaskanaEngine_When_BuildingWithConfiguration() throws Exception {
DataSource ds = DataSourceGenerator.getDataSource();
TaskanaConfiguration taskEngineConfiguration =
new TaskanaConfiguration.Builder(ds, false, DataSourceGenerator.getSchemaName()).build();
new TaskanaConfiguration.Builder(ds, false, DataSourceGenerator.getSchemaName())
.initTaskanaProperties()
.build();
TaskanaEngine te = TaskanaEngine.buildTaskanaEngine(taskEngineConfiguration);
@ -28,13 +30,8 @@ class TaskanaEngineConfigTest {
void should_SetCorpusChristiEnabled_When_PropertyIsSet() throws Exception {
DataSource ds = DataSourceGenerator.getDataSource();
TaskanaConfiguration taskEngineConfiguration =
new TaskanaConfiguration.Builder(
ds,
false,
DataSourceGenerator.getSchemaName(),
true,
"/corpusChristiEnabled.properties",
"|")
new TaskanaConfiguration.Builder(ds, false, DataSourceGenerator.getSchemaName(), true)
.initTaskanaProperties("/corpusChristiEnabled.properties", "|")
.build();
assertThat(taskEngineConfiguration.isCorpusChristiEnabled()).isTrue();
@ -45,13 +42,8 @@ class TaskanaEngineConfigTest {
throws Exception {
DataSource ds = DataSourceGenerator.getDataSource();
TaskanaConfiguration taskEngineConfiguration =
new TaskanaConfiguration.Builder(
ds,
false,
DataSourceGenerator.getSchemaName(),
true,
"/custom_holiday_taskana.properties",
"|")
new TaskanaConfiguration.Builder(ds, false, DataSourceGenerator.getSchemaName(), true)
.initTaskanaProperties("/custom_holiday_taskana.properties", "|")
.build();
assertThat(taskEngineConfiguration.getCustomHolidays()).contains(CustomHoliday.of(31, 7));
assertThat(taskEngineConfiguration.getCustomHolidays()).contains(CustomHoliday.of(16, 12));
@ -62,13 +54,8 @@ class TaskanaEngineConfigTest {
throws Exception {
DataSource ds = DataSourceGenerator.getDataSource();
TaskanaConfiguration taskEngineConfiguration =
new TaskanaConfiguration.Builder(
ds,
false,
DataSourceGenerator.getSchemaName(),
true,
"/custom_holiday_with_wrong_format_taskana.properties",
"|")
new TaskanaConfiguration.Builder(ds, false, DataSourceGenerator.getSchemaName(), true)
.initTaskanaProperties("/custom_holiday_with_wrong_format_taskana.properties", "|")
.build();
assertThat(taskEngineConfiguration.getCustomHolidays()).isEmpty();
}

View File

@ -26,6 +26,7 @@ class TaskanaRoleConfigAccTest {
taskanaEngineConfiguration =
new TaskanaConfiguration.Builder(
DataSourceGenerator.getDataSource(), true, DataSourceGenerator.getSchemaName())
.initTaskanaProperties()
.build();
}
@ -77,9 +78,8 @@ class TaskanaRoleConfigAccTest {
DataSourceGenerator.getDataSource(),
true,
DataSourceGenerator.getSchemaName(),
true,
propertiesFileName,
delimiter)
true)
.initTaskanaProperties(propertiesFileName, delimiter)
.build();
Set<TaskanaRole> rolesConfigured = taskanaEngineConfiguration.getRoleMap().keySet();
@ -110,9 +110,8 @@ class TaskanaRoleConfigAccTest {
DataSourceGenerator.getDataSource(),
true,
DataSourceGenerator.getSchemaName(),
true,
propertiesFileName,
delimiter)
true)
.initTaskanaProperties(propertiesFileName, delimiter)
.build();
Set<TaskanaRole> rolesConfigured = taskanaEngineConfiguration.getRoleMap().keySet();

View File

@ -82,6 +82,7 @@ class TaskanaSecurityConfigAccTest {
false,
DataSourceGenerator.getSchemaName(),
securityEnabled)
.initTaskanaProperties()
.build());
}

View File

@ -19,6 +19,7 @@ public abstract class AbstractReportAccTest {
String schemaName = DataSourceGenerator.getSchemaName();
taskanaEngineConfiguration =
new TaskanaConfiguration.Builder(dataSource, false, schemaName)
.initTaskanaProperties()
.germanPublicHolidaysEnabled(false)
.build();
taskanaEngine = TaskanaEngine.buildTaskanaEngine(taskanaEngineConfiguration);

View File

@ -2,6 +2,7 @@ package pro.taskana.example;
import java.sql.SQLException;
import javax.sql.DataSource;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties;
import org.springframework.boot.context.properties.ConfigurationProperties;
@ -50,8 +51,23 @@ public class TaskanaConfig {
}
@Bean
public TaskanaConfiguration taskanaEngineConfiguration(DataSource dataSource) {
return new TaskanaConfiguration.Builder(dataSource, true, schemaName, false).build();
public TaskanaConfiguration taskanaEngineConfiguration(
DataSource dataSource,
@Qualifier("taskanaPropertiesFileName") String propertiesFileName,
@Qualifier("taskanaPropertiesDelimiter") String delimiter) {
return new TaskanaConfiguration.Builder(dataSource, true, schemaName, false)
.initTaskanaProperties(propertiesFileName, delimiter)
.build();
}
@Bean
public String taskanaPropertiesFileName() {
return "/taskana.properties";
}
@Bean
public String taskanaPropertiesDelimiter() {
return "|";
}
@Bean

View File

@ -106,7 +106,8 @@ public class TaskanaInitializationExtension implements TestInstancePostProcessor
throw new JUnitException("Expected dataSource to be defined in store, but it's not.");
}
return new TaskanaConfiguration.Builder(dataSource, false, schemaName);
return new TaskanaConfiguration.Builder(dataSource, false, schemaName)
.initTaskanaProperties();
}
private static Map<Class<?>, Object> generateTaskanaEntityMap(TaskanaEngine taskanaEngine)

View File

@ -3,6 +3,7 @@ package pro.taskana.common.rest;
import com.fasterxml.jackson.databind.cfg.HandlerInstantiator;
import java.sql.SQLException;
import javax.sql.DataSource;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.ApplicationContext;
@ -79,8 +80,23 @@ public class RestConfiguration {
@Bean
@ConditionalOnMissingBean(TaskanaConfiguration.class)
public TaskanaConfiguration taskanaEngineConfiguration(DataSource dataSource) {
return new TaskanaConfiguration.Builder(dataSource, true, schemaName).build();
public TaskanaConfiguration taskanaEngineConfiguration(
DataSource dataSource,
@Qualifier("taskanaPropertiesFileName") String propertiesFileName,
@Qualifier("taskanaPropertiesDelimiter") String delimiter) {
return new TaskanaConfiguration.Builder(dataSource, true, schemaName)
.initTaskanaProperties(propertiesFileName, delimiter)
.build();
}
@Bean
public String taskanaPropertiesFileName() {
return "/taskana.properties";
}
@Bean
public String taskanaPropertiesDelimiter() {
return "|";
}
// Needed for injection into jackson deserializer.

View File

@ -0,0 +1,27 @@
package pro.taskana.properties;
import static org.assertj.core.api.Assertions.assertThat;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.context.ApplicationContext;
import org.springframework.test.annotation.DirtiesContext;
import org.springframework.test.annotation.DirtiesContext.ClassMode;
@DirtiesContext(classMode = ClassMode.AFTER_CLASS)
@SpringBootTest(
classes = MyTaskanaTestConfiguration.class,
webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
class MyTaskanaConfigurationIntTest {
@Autowired private ApplicationContext appContext;
@Test
void should_loadApplicationContextWithMyTaskanaProperties_When_ApplicationStarts() {
assertThat(appContext.getBean("taskanaPropertiesFileName", String.class))
.isEqualTo("/mytaskana.properties");
assertThat(appContext.getBean("taskanaPropertiesDelimiter", String.class)).isEqualTo(";");
}
}

View File

@ -0,0 +1,31 @@
package pro.taskana.properties;
import javax.sql.DataSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.transaction.PlatformTransactionManager;
@Configuration
@ComponentScan("pro.taskana")
public class MyTaskanaTestConfiguration {
@Bean
@Primary
public String taskanaPropertiesFileName() {
return "/mytaskana.properties";
}
@Bean
@Primary
public String taskanaPropertiesDelimiter() {
return ";";
}
@Bean
public PlatformTransactionManager txManager(DataSource dataSource) {
return new DataSourceTransactionManager(dataSource);
}
}

View File

@ -0,0 +1,19 @@
## Used to test and demonstrate special configuration file
taskana.roles.user=cn=ksc-users,cn=groups,OU=Test,O=TASKANA ; teamlead-1 ; teamlead-2 ; user-1-1
taskana.roles.admin=admin ; uid=admin,cn=users,OU=Test,O=TASKANA
taskana.roles.businessadmin=businessadmin ; cn=business-admins,cn=groups,OU=Test,O=TASKANA
taskana.roles.monitor=monitor ; cn=monitor-users,cn=groups,OU=Test,O=TASKANA
taskana.roles.taskadmin=taskadmin
taskana.domains=DOMAIN_A,DOMAIN_B,DOMAIN_C,DOMAIN_TEST
taskana.user.minimalPermissionsToAssignDomains=READ ; OPEN
taskana.classification.types=TASK,DOCUMENT
taskana.classification.categories.task=EXTERNAL, manual, autoMAtic, Process
taskana.classification.categories.document=EXTERNAL
taskana.jobs.maxRetries=3
taskana.jobs.batchSize=50
taskana.jobs.cleanup.runEvery=P1D
taskana.jobs.cleanup.firstRunAt=2018-07-25T08:00:00Z
taskana.jobs.cleanup.minimumAge=P14D
taskana.german.holidays.enabled=true
taskana.history.deletion.on.task.deletion.enabled=true

View File

@ -46,6 +46,7 @@ class DmnConverterServiceAccTest {
String schemaName = "TASKANA";
TaskanaConfiguration taskanaEngineConfiguration =
new TaskanaConfiguration.Builder(dataSource, false, schemaName)
.initTaskanaProperties()
.germanPublicHolidaysEnabled(true)
.build();
SampleDataGenerator sampleDataGenerator =

View File

@ -34,6 +34,7 @@ public abstract class AbstractAccTest {
dataSource = DataSourceGenerator.getDataSource();
taskanaEngineConfiguration =
new TaskanaConfiguration.Builder(dataSource, false, schemaName)
.initTaskanaProperties()
.germanPublicHolidaysEnabled(true)
.build();
DbSchemaCreator dbSchemaCreator =