diff --git a/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityconfig/OpsLoader.java b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityconfig/OpsLoader.java index 99169836b..cb99faf90 100644 --- a/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityconfig/OpsLoader.java +++ b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityconfig/OpsLoader.java @@ -17,6 +17,7 @@ package io.nosqlbench.adapters.api.activityconfig; import com.amazonaws.util.StringInputStream; +import com.google.gson.GsonBuilder; import io.nosqlbench.nb.api.nbio.Content; import io.nosqlbench.nb.api.nbio.NBIO; import io.nosqlbench.nb.api.errors.BasicError; @@ -27,6 +28,8 @@ import io.nosqlbench.adapters.api.activityconfig.yaml.OpsDocList; import io.nosqlbench.adapters.api.templating.StrInterpolator; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import org.snakeyaml.engine.v2.api.Load; +import org.snakeyaml.engine.v2.api.LoadSettings; import scala.Option; import sjsonnet.DefaultParseCache; import sjsonnet.SjsonnetMain; @@ -146,4 +149,25 @@ public class OpsLoader { return stdoutOutput; } + // TODO These should not be exception based, use explicit pattern checks instead, or tap + // into the parsers in a non-exception way + public static boolean isJson(String workload) { + try { + new GsonBuilder().setPrettyPrinting().create().fromJson(workload, Map.class); + return true; + } catch (Exception e) { + return false; + } + } + + // TODO These should not be exception based, use explicit pattern checks instead, or tap + // into the parsers in a non-exception way + public static boolean isYaml(String workload) { + try { + new Load(LoadSettings.builder().build()).loadFromString(workload); + return true; + } catch (Exception e) { + return false; + } + } } diff --git a/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityconfig/rawyaml/OpsOwner.java b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityconfig/rawyaml/OpsOwner.java index b355a4be6..223372f1a 100644 --- a/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityconfig/rawyaml/OpsOwner.java +++ b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityconfig/rawyaml/OpsOwner.java @@ -22,7 +22,7 @@ import java.util.*; public class OpsOwner extends RawOpFields { - private final static List opsFieldNames = List.of("op","ops","operation","statement","statements"); + private final static List opsFieldNames = List.of("op","ops","operation","stmt","statement","statements"); private List rawOpDefs = new ArrayList<>(); diff --git a/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityconfig/rawyaml/RawOpsLoader.java b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityconfig/rawyaml/RawOpsLoader.java index 32bd76f65..b7fc11ab3 100644 --- a/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityconfig/rawyaml/RawOpsLoader.java +++ b/adapters-api/src/main/java/io/nosqlbench/adapters/api/activityconfig/rawyaml/RawOpsLoader.java @@ -16,6 +16,8 @@ package io.nosqlbench.adapters.api.activityconfig.rawyaml; +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; import io.nosqlbench.nb.api.nbio.Content; import io.nosqlbench.nb.api.nbio.NBIO; import io.nosqlbench.nb.api.errors.BasicError; @@ -36,6 +38,11 @@ public class RawOpsLoader { private final ArrayList> transformers = new ArrayList<>(); + private static LoadSettings loadSettings = LoadSettings.builder().build(); + private final Load yaml = new Load(loadSettings); + private final Gson gson = new GsonBuilder().setPrettyPrinting().create(); + + public RawOpsLoader(Function transformer) { addTransformer(transformer); } @@ -44,6 +51,15 @@ public class RawOpsLoader { addTransformer(new StrInterpolator()); } + public boolean isJson(String workload) { + try { + Object canLoad = gson.fromJson(workload, Object.class); + } catch (Exception e) { + return false; + } + return true; + } + private void addTransformer(Function newTransformer) { Collections.addAll(this.transformers, newTransformer); } @@ -79,8 +95,6 @@ public class RawOpsLoader { } public RawOpsDocList parseYaml(String data) { - LoadSettings loadSettings = LoadSettings.builder().build(); - Load yaml = new Load(loadSettings); Iterable objects = yaml.loadAllFromString(data); List newDocList = new ArrayList<>();