From 71e273c71d984324c26e607459a99076b6798266 Mon Sep 17 00:00:00 2001
From: Manuel Spuhler <manuel.spuhler@chuv.ch>
Date: Mon, 30 Apr 2018 18:33:38 +0200
Subject: [PATCH] Throw exception for non-variables

---
 .../java/eu/hbp/mip/controllers/RequestsApi.java | 16 +++++++++++-----
 1 file changed, 11 insertions(+), 5 deletions(-)

diff --git a/src/main/java/eu/hbp/mip/controllers/RequestsApi.java b/src/main/java/eu/hbp/mip/controllers/RequestsApi.java
index 9d5d2ecee..8c3537527 100644
--- a/src/main/java/eu/hbp/mip/controllers/RequestsApi.java
+++ b/src/main/java/eu/hbp/mip/controllers/RequestsApi.java
@@ -39,6 +39,8 @@ public class RequestsApi {
 
     private static final Gson gson = new Gson();
 
+    private static final Pattern variableExpression = Pattern.compile("\\w+");
+
     @Autowired
     @Qualifier("dataUtil")
     private DataUtil dataUtil;
@@ -63,6 +65,7 @@ public class RequestsApi {
         List<String> variables = extractVarCodes(q, "variables");
         List<String> groupings = extractVarCodes(q, "grouping");
         List<String> covariables = extractVarCodes(q, "covariables");
+
         String filters = extractFilters(q);
 
         List<String> allVars = new LinkedList<>();
@@ -80,16 +83,19 @@ public class RequestsApi {
         return ResponseEntity.ok(gson.fromJson(dataset, Object.class));
     }
 
-    private List<String> extractVarCodes(JsonObject q, String field) {
+    private List<String> extractVarCodes(JsonObject q, String field) throws IllegalArgumentException {
         List<String> codes = new LinkedList<>();
         JsonArray elements = q.getAsJsonArray(field) != null ? q.getAsJsonArray(field) : new JsonArray();
-        Pattern p = Pattern.compile("\\w+");
+
         for (JsonElement var : elements) {
             String varCode = var.getAsJsonObject().get("code").getAsString();
-            Boolean isValidString = p.matcher(varCode).matches();
-            if (isValidString) {
-                codes.add(varCode);
+
+            Boolean isValidString = variableExpression.matcher(varCode).matches();
+            if (!isValidString) {
+                throw new IllegalArgumentException("You must provide valid variables");
             }
+
+            codes.add(varCode);
         }
         return codes;
     }
-- 
GitLab