public static Object stubDMNResult(Object result) {
if ( result instanceof DMNContext ) {
Map<String, Object> stubbedContextValues = new HashMap<>();
for (Entry<String, Object> kv : ((DMNContext) result).getAll().entrySet()) {
stubbedContextValues.put(kv.getKey(), stubDMNResult(kv.getValue()));
}
return MapBackedDMNContext.of(stubbedContextValues);
} else if ( result instanceof Map<?, ?> ) {
Map<Object, Object> stubbedValues = new HashMap<>();
for (Entry<?, ?> kv : ((Map<?, ?>) result).entrySet()) {
stubbedValues.put(kv.getKey(), stubDMNResult(kv.getValue()));
}
return stubbedValues;
} else if ( result instanceof List<?> ) {
List<?> stubbedValues = ((List<?>) result).stream().map(DMNResultKS::stubDMNResult).collect(Collectors.toList());
return stubbedValues;
} else if ( result instanceof Set<?> ) {
Set<?> stubbedValues = ((Set<?>) result).stream().map(DMNResultKS::stubDMNResult).collect(Collectors.toSet());
return stubbedValues;
} else if ( result != null && result.getClass().getPackage().getName().startsWith("org.kie.dmn") ) {
return DMNNodeStub.of(result);
}
return result;
}