From 5415f0b138ac6ccae3677415b95957b55fa61fab Mon Sep 17 00:00:00 2001 From: Jonathan Shook Date: Thu, 24 Jun 2021 11:27:00 -0500 Subject: [PATCH] require typed construction of CommandTemplate --- .../engine/api/templating/CommandTemplate.java | 9 +++++---- .../engine/api/templating/CommandTemplateTest.java | 8 ++++---- .../io/nosqlbench/virtdata/core/bindings/VirtData.java | 4 ++-- 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/templating/CommandTemplate.java b/engine-api/src/main/java/io/nosqlbench/engine/api/templating/CommandTemplate.java index e6ffbba36..ab6487494 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/templating/CommandTemplate.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/templating/CommandTemplate.java @@ -60,14 +60,14 @@ public class CommandTemplate { * is non-null, then it taken as a line-oriented value and parsed according to default {@link ParamsParser} behavior. * However, the provided parsers (if any) are used first in order to match alternate forms of syntax. * - * See {@link CommandTemplate#CommandTemplate(String, Object, Map, Map, List)} for full details on the provided + * See {@link CommandTemplate#CommandTemplate(String, String, Map, Map, List)} for full details on the provided * parsers. * * @param optpl An OpTemplate * @param parsers A list of parser functions */ public CommandTemplate(OpTemplate optpl, List>> parsers) { - this(optpl.getName(), optpl.getOp(), optpl.getParamsAsValueType(String.class), optpl.getBindings(), parsers); + this(optpl.getName(), optpl.getStmt().orElseThrow(), optpl.getParamsAsValueType(String.class), optpl.getBindings(), parsers); } /** @@ -94,7 +94,7 @@ public class CommandTemplate { */ public CommandTemplate( String name, - Object op, + String op, Map params, Map bindings, List>> optionalParsers @@ -108,8 +108,9 @@ public class CommandTemplate { // If none of the supplemental parsers work, the default params parser is used String oneline; + if (op instanceof CharSequence) { - oneline = op.toString(); + oneline = op; } else { throw new BasicError("Unable to create a oneline version of the CommandTemplate with op type of " + op.getClass().getSimpleName()); } diff --git a/engine-api/src/test/java/io/nosqlbench/engine/api/templating/CommandTemplateTest.java b/engine-api/src/test/java/io/nosqlbench/engine/api/templating/CommandTemplateTest.java index 502daebd7..17f1b26fe 100644 --- a/engine-api/src/test/java/io/nosqlbench/engine/api/templating/CommandTemplateTest.java +++ b/engine-api/src/test/java/io/nosqlbench/engine/api/templating/CommandTemplateTest.java @@ -16,8 +16,8 @@ public class CommandTemplateTest { StmtsDocList stmtsDocs = StatementsLoader.loadString("" + "statements:\n" + " - s1: test1=foo test2=bar"); - OpTemplate stmtDef = stmtsDocs.getStmts().get(0); - CommandTemplate ct = new CommandTemplate(stmtDef); + OpTemplate optpl = stmtsDocs.getStmts().get(0); + CommandTemplate ct = new CommandTemplate(optpl); assertThat(ct.isStatic()).isTrue(); } @@ -29,8 +29,8 @@ public class CommandTemplateTest { " - s1: test1=foo test2={bar}\n" + " bindings:\n" + " bar: NumberNameToString();\n"); - OpTemplate stmtDef = stmtsDocs.getStmts().get(0); - CommandTemplate ct = new CommandTemplate(stmtDef); + OpTemplate optpl = stmtsDocs.getStmts().get(0); + CommandTemplate ct = new CommandTemplate(optpl); String format = gson.toJson(ct); System.out.println(format); diff --git a/virtdata-api/src/main/java/io/nosqlbench/virtdata/core/bindings/VirtData.java b/virtdata-api/src/main/java/io/nosqlbench/virtdata/core/bindings/VirtData.java index d37941541..9f9a0d150 100644 --- a/virtdata-api/src/main/java/io/nosqlbench/virtdata/core/bindings/VirtData.java +++ b/virtdata-api/src/main/java/io/nosqlbench/virtdata/core/bindings/VirtData.java @@ -27,7 +27,7 @@ public class VirtData { } List bindPoints = new ArrayList<>(); for (int i = 0; i < namesAndSpecs.length; i += 2) { - bindPoints.add(new BindPoint(namesAndSpecs[i],namesAndSpecs[i+1])); + bindPoints.add(new BindPoint(namesAndSpecs[i],namesAndSpecs[i+1], BindPoint.Type.definition)); } return getTemplate(config, bindPoints); } @@ -169,7 +169,7 @@ public class VirtData { T actualTestValue = mapper.get().get(1L); if (!ClassUtils.isAssignable(actualTestValue.getClass(),clazz,true)) { throw new RuntimeException("The flow specifier '" + flowSpec + "' successfully created a function, but the test value" + - "(" + String.valueOf(actualTestValue) + ") of type [" + actualTestValue.getClass() + "] produced by it was not " + + "(" + actualTestValue + ") of type [" + actualTestValue.getClass() + "] produced by it was not " + "assignable to the type '" + clazz.getCanonicalName() + "' which was explicitly set" + " at the API level."); }