diff --git a/li.strolch.model/src/main/java/li/strolch/model/json/StrolchElementToJsonVisitor.java b/li.strolch.model/src/main/java/li/strolch/model/json/StrolchElementToJsonVisitor.java index 9bda0dec2..eef4d0dc4 100644 --- a/li.strolch.model/src/main/java/li/strolch/model/json/StrolchElementToJsonVisitor.java +++ b/li.strolch.model/src/main/java/li/strolch/model/json/StrolchElementToJsonVisitor.java @@ -35,9 +35,9 @@ import li.strolch.utils.iso8601.ISO8601FormatFactory; public class StrolchElementToJsonVisitor implements StrolchElementVisitor { - private MapOfSets ignoredKeys; - private Set ignoredTimedStates; - private Set ignoredBagTypes; + private final MapOfSets ignoredKeys; + private final Set ignoredTimedStates; + private final Set ignoredBagTypes; private BiConsumer bagHook; private BiConsumer resourceHook; @@ -46,15 +46,17 @@ public class StrolchElementToJsonVisitor implements StrolchElementVisitor actionHook; private boolean flat; - private Set flatBags; - private Set flatBagsByType; + private final Set flatBags; + private final Set flatBagsByType; private boolean withoutElementName; private boolean withoutObjectType; private boolean withLocator; + private boolean withBagId; private boolean withoutVersion; private boolean withoutPolicies; private boolean withoutStateVariables; private boolean withoutValueChanges; + private boolean withListParametersAsArray; private int activityDepth = Integer.MAX_VALUE; public StrolchElementToJsonVisitor() { @@ -101,6 +103,15 @@ public class StrolchElementToJsonVisitor implements StrolchElementVisitor ignoredParamIds = this.ignoredKeys.getSet(bag.getId()); addParameterBagFlat(bagJ, ignoredParamIds, bag); @@ -634,6 +647,19 @@ public class StrolchElementToJsonVisitor implements StrolchElementVisitor ((FloatListParameter) param).streamValues() + .collect(JsonArray::new, JsonArray::add, JsonArray::addAll); + case INTEGER_LIST -> ((IntegerListParameter) param).streamValues() + .collect(JsonArray::new, JsonArray::add, JsonArray::addAll); + case STRING_LIST -> ((StringListParameter) param).streamValues() + .collect(JsonArray::new, JsonArray::add, JsonArray::addAll); + case LONG_LIST -> ((LongListParameter) param).streamValues() + .collect(JsonArray::new, JsonArray::add, JsonArray::addAll); + default -> throw new IllegalStateException("Unhandle list type " + type); + }; + rootJ.add(paramId, valuesJ); } else { rootJ.addProperty(paramId, param.getValueAsString()); } @@ -648,7 +674,8 @@ public class StrolchElementToJsonVisitor implements StrolchElementVisitor paramsJ.add(param.getId(), paramToJsonFull(param))); if (this.bagHook != null) diff --git a/li.strolch.model/src/main/java/li/strolch/model/json/StrolchRootElementToJsonVisitor.java b/li.strolch.model/src/main/java/li/strolch/model/json/StrolchRootElementToJsonVisitor.java index 321b2fa3c..f10b9db70 100644 --- a/li.strolch.model/src/main/java/li/strolch/model/json/StrolchRootElementToJsonVisitor.java +++ b/li.strolch.model/src/main/java/li/strolch/model/json/StrolchRootElementToJsonVisitor.java @@ -54,6 +54,11 @@ public class StrolchRootElementToJsonVisitor implements StrolchRootElementVisito return this::visitActivity; } + public StrolchRootElementToJsonVisitor withBagId() { + this.visitor.withBagId(); + return this; + } + public StrolchRootElementToJsonVisitor withLocator() { this.visitor.withLocator(); return this;