in jitexecutor/jitexecutor-dmn/src/main/java/org/kie/kogito/jitexecutor/dmn/LocalDMNPredictionProvider.java [81:112]
private Map<String, Object> toMap(List<Feature> features) {
Map<String, Object> map = new HashMap<>();
for (Feature f : features) {
if (Type.COMPOSITE.equals(f.getType())) {
List<Feature> compositeFeatures = (List<Feature>) f.getValue().getUnderlyingObject();
boolean isList = compositeFeatures.stream().allMatch(feature -> feature.getName().startsWith(f.getName() + "_"));
if (isList) {
List<Object> objects = new ArrayList<>(compositeFeatures.size());
for (Feature fs : compositeFeatures) {
objects.add(fs.getValue().getUnderlyingObject());
}
map.put(f.getName(), objects);
} else {
Map<String, Object> maps = new HashMap<>();
for (Feature cf : compositeFeatures) {
Map<String, Object> compositeFeatureMap = toMap(Collections.singletonList((cf)));
maps.putAll(compositeFeatureMap);
}
map.put(f.getName(), maps);
}
} else {
if (Type.UNDEFINED.equals(f.getType())) {
Feature underlyingFeature = (Feature) f.getValue().getUnderlyingObject();
map.put(f.getName(), toMap(Collections.singletonList(underlyingFeature)));
} else {
Object underlyingObject = f.getValue().getUnderlyingObject();
map.put(f.getName(), underlyingObject);
}
}
}
return map;
}