[Fix] Sort Parameters in StrolchElementToJsonVisitor by their index
This commit is contained in:
parent
6785c54cd5
commit
2b84df3c39
|
@ -1,6 +1,7 @@
|
||||||
package li.strolch.model.json;
|
package li.strolch.model.json;
|
||||||
|
|
||||||
import static java.util.Arrays.asList;
|
import static java.util.Arrays.asList;
|
||||||
|
import static java.util.Comparator.comparing;
|
||||||
import static li.strolch.model.Tags.Json.PARAMETER_BAGS;
|
import static li.strolch.model.Tags.Json.PARAMETER_BAGS;
|
||||||
import static li.strolch.utils.helper.StringHelper.isNotEmpty;
|
import static li.strolch.utils.helper.StringHelper.isNotEmpty;
|
||||||
|
|
||||||
|
@ -582,21 +583,18 @@ public class StrolchElementToJsonVisitor implements StrolchElementVisitor<JsonEl
|
||||||
}
|
}
|
||||||
|
|
||||||
private void addParameterBagFlat(JsonObject rootJ, Set<String> ignoredParamIds, ParameterBag parameterBag) {
|
private void addParameterBagFlat(JsonObject rootJ, Set<String> ignoredParamIds, ParameterBag parameterBag) {
|
||||||
|
parameterBag.streamOfParameters().sorted(comparing(Parameter::getIndex)).forEach(param -> {
|
||||||
Set<String> parameterKeySet = parameterBag.getParameterKeySet();
|
String paramId = param.getId();
|
||||||
for (String paramId : parameterKeySet) {
|
|
||||||
|
|
||||||
// see if this parameter must be ignored
|
// see if this parameter must be ignored
|
||||||
if (ignoredParamIds != null && ignoredParamIds.contains(paramId))
|
if (ignoredParamIds != null && ignoredParamIds.contains(paramId))
|
||||||
continue;
|
return;
|
||||||
|
|
||||||
if (rootJ.has(paramId)) {
|
if (rootJ.has(paramId)) {
|
||||||
throw new StrolchModelException(
|
throw new StrolchModelException(
|
||||||
"JsonObject already has a member with ID " + paramId + ": " + parameterBag.getLocator());
|
"JsonObject already has a member with ID " + paramId + ": " + parameterBag.getLocator());
|
||||||
}
|
}
|
||||||
|
|
||||||
Parameter<?> param = parameterBag.getParameter(paramId);
|
|
||||||
|
|
||||||
StrolchValueType type = StrolchValueType.parse(param.getType());
|
StrolchValueType type = StrolchValueType.parse(param.getType());
|
||||||
if (type.isBoolean()) {
|
if (type.isBoolean()) {
|
||||||
rootJ.addProperty(paramId, (Boolean) param.getValue());
|
rootJ.addProperty(paramId, (Boolean) param.getValue());
|
||||||
|
@ -605,7 +603,7 @@ public class StrolchElementToJsonVisitor implements StrolchElementVisitor<JsonEl
|
||||||
} else {
|
} else {
|
||||||
rootJ.addProperty(paramId, param.getValueAsString());
|
rootJ.addProperty(paramId, param.getValueAsString());
|
||||||
}
|
}
|
||||||
}
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private JsonObject parameterBagToJsonFull(ParameterBag bag) {
|
private JsonObject parameterBagToJsonFull(ParameterBag bag) {
|
||||||
|
@ -616,10 +614,8 @@ public class StrolchElementToJsonVisitor implements StrolchElementVisitor<JsonEl
|
||||||
JsonObject paramsJ = new JsonObject();
|
JsonObject paramsJ = new JsonObject();
|
||||||
bagJ.add(Json.PARAMETERS, paramsJ);
|
bagJ.add(Json.PARAMETERS, paramsJ);
|
||||||
|
|
||||||
for (String paramKey : bag.getParameterKeySet()) {
|
bag.streamOfParameters().sorted(comparing(Parameter::getIndex))
|
||||||
Parameter<?> param = bag.getParameter(paramKey);
|
.forEach(param -> paramsJ.add(param.getId(), paramToJsonFull(param)));
|
||||||
paramsJ.add(paramKey, paramToJsonFull(param));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.bagHook != null)
|
if (this.bagHook != null)
|
||||||
this.bagHook.accept(bag, bagJ);
|
this.bagHook.accept(bag, bagJ);
|
||||||
|
|
Loading…
Reference in New Issue