From 262df5710196354cbb1d1f9bff14d6fbce3a5213 Mon Sep 17 00:00:00 2001 From: Jonathan Shook Date: Fri, 23 Oct 2020 02:35:50 -0500 Subject: [PATCH] improved error messages --- .../api/activityconfig/yaml/StmtDef.java | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityconfig/yaml/StmtDef.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityconfig/yaml/StmtDef.java index 8dfb37575..3f9e48ac6 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityconfig/yaml/StmtDef.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityconfig/yaml/StmtDef.java @@ -57,10 +57,21 @@ public class StmtDef implements OpTemplate { } @Override - public Map getParamsAsValueType(Class type) { - MultiMapLookup lookup = new MultiMapLookup<>(rawStmtDef.getParams(), block.getParams()); - Map map = new LinkedHashMap<>(); - lookup.forEach((k,v)->map.put(k,type.cast(v))); + public Map getParamsAsValueType(Class type) { + MultiMapLookup lookup = new MultiMapLookup<>(rawStmtDef.getParams(), block.getParams()); + Map map = new LinkedHashMap<>(); + //TODO put type guard around casting below + for (String pname : lookup.keySet()) { + Object object = lookup.get(pname); + if (type.isAssignableFrom(object.getClass())) { + map.put(pname, type.cast(object)); + } else { + throw new RuntimeException("With param named '" + pname + "" + + "' You can't assign an object of type '" + object.getClass().getSimpleName() + "" + + "' to '" + type.getSimpleName() + "'"); + } + } +// lookup.forEach((k,v)->map.put(k,type.cast(v))); return map; }