diff --git a/adapters-api/pom.xml b/adapters-api/pom.xml
index d6f0929c6..910afaed1 100644
--- a/adapters-api/pom.xml
+++ b/adapters-api/pom.xml
@@ -57,4 +57,13 @@
+
+
+
+ src/main/resources
+ true
+
+
+
+
diff --git a/adapters-api/src/main/java/io/nosqlbench/engine/api/activityconfig/rawyaml/RawStmtsDoc.java b/adapters-api/src/main/java/io/nosqlbench/engine/api/activityconfig/rawyaml/RawStmtsDoc.java
index 6c413e34c..0d6aa3d8d 100644
--- a/adapters-api/src/main/java/io/nosqlbench/engine/api/activityconfig/rawyaml/RawStmtsDoc.java
+++ b/adapters-api/src/main/java/io/nosqlbench/engine/api/activityconfig/rawyaml/RawStmtsDoc.java
@@ -16,9 +16,13 @@
package io.nosqlbench.engine.api.activityconfig.rawyaml;
+import io.nosqlbench.engine.api.util.AdaptersApiVersionInfo;
+import io.nosqlbench.nb.api.errors.OpConfigError;
+
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
+import java.util.regex.Pattern;
/**
* A statements doc can have both a list of statement blocks and/or a
@@ -33,6 +37,7 @@ public class RawStmtsDoc extends StatementsOwner {
private RawScenarios scenarios = new RawScenarios();
private final List blocks = new ArrayList<>();
+ private String versionRegex = ".+";
// no-args ctor is required
public RawStmtsDoc() {
@@ -45,6 +50,17 @@ public class RawStmtsDoc extends StatementsOwner {
}
public void setFieldsByReflection(Map properties) {
+ if (properties.containsKey("version_regex")) {
+ String versionRegex = properties.remove("version_regex").toString();
+ if (versionRegex!=null) {
+ Pattern versionpattern = Pattern.compile(versionRegex);
+ String version = new AdaptersApiVersionInfo().getVersion();
+ if (!versionpattern.matcher(version).matches()) {
+ throw new OpConfigError("Unable to load yaml with this version '" + version + " since " +
+ "the required version doesn't match version_regex '" + versionRegex + "' from yaml.");
+ }
+ }
+ }
Object blocksObjects = properties.remove("blocks");
if (blocksObjects instanceof List) {
List