in src/main/java/org/apache/sling/feature/io/json/ManifestUtils.java [67:92]
private static void marshal(String key, Object value, BiConsumer<String, String> sink) {
StringBuilder keyBuilder = new StringBuilder(key);
if (value instanceof List) {
List list = (List) value;
keyBuilder.append(":List");
if (!list.isEmpty()) {
String type = type(list.get(0));
if (!type.equals("String")) {
keyBuilder.append('<').append(type).append('>');
}
value = list.stream().map(
v -> v.toString().replace(",", "\\,")
).collect(Collectors.joining(","));
}
else {
value = "";
}
}
else {
String type = type(value);
if (!type.equals("String")) {
keyBuilder.append(':').append(type);
}
}
sink.accept(keyBuilder.toString(), value.toString());
}