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 f99f7977d..7d5b59660 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 @@ -1,5 +1,7 @@ package li.strolch.model.json; +import static java.util.Arrays.asList; +import static li.strolch.model.Tags.Json.PARAMETER_BAGS; import static li.strolch.utils.helper.StringHelper.isNotEmpty; import java.util.*; @@ -41,6 +43,7 @@ public class StrolchElementToJsonVisitor implements StrolchElementVisitor actionHook; private boolean flat; + private Set flatBags; private boolean withoutElementName; private boolean withLocator; private boolean withoutVersion; @@ -51,12 +54,17 @@ public class StrolchElementToJsonVisitor implements StrolchElementVisitor(); this.ignoredTimedStates = new HashSet<>(); this.ignoredBagTypes = new HashSet<>(); + this.flatBags = new HashSet<>(); } public boolean isFlat() { return this.flat; } + public boolean isBagFlat(String badId) { + return this.flatBags.contains(badId); + } + public boolean isWithVersion() { return !this.withoutVersion; } @@ -122,6 +130,11 @@ public class StrolchElementToJsonVisitor implements StrolchElementVisitor bagKeySet = element.getParameterBagKeySet(); - for (String bagId : bagKeySet) { + for (String bagId : element.getParameterBagKeySet()) { + ParameterBag bag = element.getParameterBag(bagId); + if (!bag.hasParameters()) + continue; // see if we have to ignore this bag i.e. empty set existing Set ignoredParamIds = this.ignoredKeys.getSet(bagId); @@ -503,10 +514,25 @@ public class StrolchElementToJsonVisitor implements StrolchElementVisitor