TSK-720 - NullpointerException in ClassificationServiceImpl:293 if no categories are configured for classification types
This commit is contained in:
parent
83918d9af5
commit
5d2861a6cd
|
@ -246,6 +246,8 @@ public class TaskanaEngineConfiguration {
|
|||
while (st.hasMoreTokens()) {
|
||||
classificationTypes.add(st.nextToken().trim().toUpperCase());
|
||||
}
|
||||
} else {
|
||||
LOGGER.warn("Configuration issue. Classification type is missing");
|
||||
}
|
||||
LOGGER.debug("Configured classificationTypes: {}", classificationTypes);
|
||||
}
|
||||
|
@ -265,6 +267,8 @@ public class TaskanaEngineConfiguration {
|
|||
classificationCategoriesAux.add(st.nextToken().trim().toUpperCase());
|
||||
}
|
||||
classificationCategoriesByTypeMap.put(type, classificationCategoriesAux);
|
||||
} else {
|
||||
LOGGER.warn("Configuration issue. Classification categories by type is missing");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,10 +2,18 @@ package acceptance.config;
|
|||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertFalse;
|
||||
import static org.junit.Assert.assertNull;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.io.PrintWriter;
|
||||
import java.sql.SQLException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
import org.h2.store.fs.FileUtils;
|
||||
import org.junit.Test;
|
||||
|
||||
import pro.taskana.configuration.TaskanaEngineConfiguration;
|
||||
|
@ -50,4 +58,85 @@ public class TaskanaConfigAccTest extends TaskanaEngineImpl {
|
|||
assertFalse(getConfiguration().getClassificationCategoriesByType("TASK").contains("manual"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDoesNotExistPropertyClassificationTypeOrItIsEmpty() throws IOException {
|
||||
taskanaEngineConfiguration.setClassificationTypes(new ArrayList<>());
|
||||
String propertiesFileName = createNewConfigFile("/dummyTestConfig.properties", false, true);
|
||||
String delimiter = ";";
|
||||
try {
|
||||
getConfiguration().initTaskanaProperties(propertiesFileName, delimiter);
|
||||
} finally {
|
||||
deleteFile(propertiesFileName);
|
||||
}
|
||||
assertTrue(taskanaEngineConfiguration.getClassificationTypes().isEmpty());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDoesNotExistPropertyClassificatioCategoryOrItIsEmpty() throws IOException {
|
||||
taskanaEngineConfiguration.setClassificationTypes(new ArrayList<>());
|
||||
taskanaEngineConfiguration.setClassificationCategoriesByType(new HashMap<>());
|
||||
String propertiesFileName = createNewConfigFile("/dummyTestConfig.properties", true, false);
|
||||
String delimiter = ";";
|
||||
try {
|
||||
getConfiguration().initTaskanaProperties(propertiesFileName, delimiter);
|
||||
} finally {
|
||||
deleteFile(propertiesFileName);
|
||||
}
|
||||
assertNull(taskanaEngineConfiguration.getClassificationCategoriesByType(
|
||||
taskanaEngineConfiguration.getClassificationTypes().get(0)));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testWithCategoriesAndClassificationFilled() throws IOException {
|
||||
taskanaEngineConfiguration.setClassificationTypes(new ArrayList<String>());
|
||||
taskanaEngineConfiguration.setClassificationCategoriesByType(new HashMap<String, List<String>>());
|
||||
String propertiesFileName = createNewConfigFile("/dummyTestConfig.properties", true, true);
|
||||
String delimiter = ";";
|
||||
try {
|
||||
getConfiguration().initTaskanaProperties(propertiesFileName, delimiter);
|
||||
} finally {
|
||||
deleteFile(propertiesFileName);
|
||||
}
|
||||
assertFalse(taskanaEngineConfiguration.getClassificationTypes().isEmpty());
|
||||
assertFalse(taskanaEngineConfiguration.getClassificationCategoriesByType(
|
||||
taskanaEngineConfiguration.getClassificationTypes().get(0)).isEmpty());
|
||||
assertEquals(taskanaEngineConfiguration.getClassificationTypes().size(), 2);
|
||||
assertEquals(taskanaEngineConfiguration.getClassificationCategoriesByType(
|
||||
taskanaEngineConfiguration.getClassificationTypes().get(0)).size(), 4);
|
||||
assertEquals(taskanaEngineConfiguration.getClassificationCategoriesByType(
|
||||
taskanaEngineConfiguration.getClassificationTypes().get(1)).size(), 1);
|
||||
}
|
||||
|
||||
private String createNewConfigFile(String filename, boolean addingTypes, boolean addingClassification)
|
||||
throws IOException {
|
||||
String userHomeDirectroy = System.getProperty("user.home");
|
||||
String propertiesFileName = userHomeDirectroy + filename;
|
||||
File f = new File(propertiesFileName);
|
||||
if (!f.exists()) {
|
||||
try (PrintWriter writer = new PrintWriter(propertiesFileName, "UTF-8")) {
|
||||
writer.println("taskana.roles.Admin =Holger|Stefan");
|
||||
writer.println("taskana.roles.businessadmin = ebe | konstantin ");
|
||||
writer.println("taskana.roles.user = nobody");
|
||||
if (addingTypes) {
|
||||
writer.println("taskana.classification.types= TASK , document");
|
||||
}
|
||||
if (addingClassification) {
|
||||
writer.println("taskana.classification.categories.task= EXTERNAL, manual, autoMAtic, Process");
|
||||
writer.println("taskana.classification.categories.document= EXTERNAL");
|
||||
}
|
||||
} catch (IOException e) {
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
return propertiesFileName;
|
||||
}
|
||||
|
||||
private void deleteFile(String propertiesFileName) {
|
||||
System.out.println("about to delete " + propertiesFileName);
|
||||
File f = new File(propertiesFileName);
|
||||
if (f.exists() && !f.isDirectory()) {
|
||||
FileUtils.delete(propertiesFileName);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue