From 12c3451e1198795001e62758effc6aa1a6e18b6d Mon Sep 17 00:00:00 2001
From: Piotr Gawron <piotr.gawron@uni.lu>
Date: Wed, 28 Aug 2019 21:04:07 +0200
Subject: [PATCH] when processing file throw proper exception if type in is
 invalid

---
 .../lcsb/mapviewer/services/utils/ColorSchemaReader.java | 9 ++++++++-
 .../mapviewer/services/utils/ColorSchemaReaderTest.java  | 9 +++++++++
 service/testFiles/coloring/invalidType.txt               | 5 +++++
 3 files changed, 22 insertions(+), 1 deletion(-)
 create mode 100644 service/testFiles/coloring/invalidType.txt

diff --git a/service/src/main/java/lcsb/mapviewer/services/utils/ColorSchemaReader.java b/service/src/main/java/lcsb/mapviewer/services/utils/ColorSchemaReader.java
index e9f8739556..b5a4c40b94 100644
--- a/service/src/main/java/lcsb/mapviewer/services/utils/ColorSchemaReader.java
+++ b/service/src/main/java/lcsb/mapviewer/services/utils/ColorSchemaReader.java
@@ -104,7 +104,14 @@ public class ColorSchemaReader {
         return readGenericColorSchema(colorInputStream);
       }
     } else {
-      ColorSchemaType type = ColorSchemaType.valueOf(params.get(ZipEntryFileFactory.LAYOUT_HEADER_PARAM_TYPE));
+      ColorSchemaType type = null;
+      try {
+        type = ColorSchemaType.valueOf(params.get(ZipEntryFileFactory.LAYOUT_HEADER_PARAM_TYPE));
+      } catch (IllegalArgumentException e) {
+        String options = StringUtils.join(ColorSchemaType.values(), ", ");
+        throw new InvalidColorSchemaException("Invalid overlay type: "
+            + params.get(ZipEntryFileFactory.LAYOUT_HEADER_PARAM_TYPE) + ". Allowed options: " + options);
+      }
       if (type == null) {
         logger.warn("Unknown type of layout file: " + params.get(ZipEntryFileFactory.LAYOUT_HEADER_PARAM_TYPE));
         return readGenericColorSchema(colorInputStream);
diff --git a/service/src/test/java/lcsb/mapviewer/services/utils/ColorSchemaReaderTest.java b/service/src/test/java/lcsb/mapviewer/services/utils/ColorSchemaReaderTest.java
index 7041b25dfc..7d23c6b137 100644
--- a/service/src/test/java/lcsb/mapviewer/services/utils/ColorSchemaReaderTest.java
+++ b/service/src/test/java/lcsb/mapviewer/services/utils/ColorSchemaReaderTest.java
@@ -480,5 +480,14 @@ public class ColorSchemaReaderTest extends ServiceTestFunctions {
     }
   }
 
+  @Test(expected = InvalidColorSchemaException.class)
+  public void testReadColorSchemaWithInvalidType() throws Exception {
+    FileInputStream fis = new FileInputStream("testFiles/coloring/invalidType.txt");
+    FileInputStream fis2 = new FileInputStream("testFiles/coloring/invalidType.txt");
+    ColorSchemaReader reader = new ColorSchemaReader();
+    reader.readColorSchema(fis, TextFileUtils.getHeaderParametersFromFile(fis2));
+
+  }
+  
 
 }
diff --git a/service/testFiles/coloring/invalidType.txt b/service/testFiles/coloring/invalidType.txt
new file mode 100644
index 0000000000..c669cb9dad
--- /dev/null
+++ b/service/testFiles/coloring/invalidType.txt
@@ -0,0 +1,5 @@
+#TYPE=gen
+value	identifier	Chebi
+-0,943978048	HGNC:11138	
+-0,941309505		CHEBI:15377
+1		CHEBI:15376
-- 
GitLab