in src/main/java/org/apache/sling/scripting/sightly/render/ObjectModel.java [280:318]
public static Collection<Object> toCollection(Object object) {
if (object == null) {
return Collections.emptyList();
}
if (object instanceof Object[]) {
return Collections.unmodifiableList(Arrays.asList((Object[]) object));
}
if (object.getClass().isArray()) {
int length = Array.getLength(object);
List<Object> list = new ArrayList<>();
for (int i = 0; i < length; i++) {
list.add(Array.get(object, i));
}
return Collections.unmodifiableList(list);
}
if (object instanceof Optional) {
return toCollection(((Optional) object).orElse(Collections.emptyList()));
}
if (object instanceof List) {
return Collections.unmodifiableList((List<Object>) object);
}
if (object instanceof Collection) {
return Collections.unmodifiableCollection((Collection<Object>) object);
}
if (object instanceof Map) {
return Collections.unmodifiableCollection(((Map) object).keySet());
}
if (object instanceof Enumeration) {
return Collections.unmodifiableList(Collections.list((Enumeration<Object>) object));
}
if (object instanceof Iterator) {
return fromIterator((Iterator<Object>) object);
}
if (object instanceof Iterable) {
Iterable<Object> iterable = (Iterable<Object>) object;
return fromIterator(iterable.iterator());
}
return Collections.singletonList(object);
}