TSK-720 - NullpointerException in ClassificationServiceImpl:293 if no categories are configured for classification types

This commit is contained in:
Jose Ignacio Recuerda Cambil 2018-10-17 12:38:23 +02:00 committed by Holger Hagen
parent 83918d9af5
commit 5d2861a6cd
2 changed files with 93 additions and 0 deletions

View File

@ -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");
}
}
}

View File

@ -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);
}
}
}