public static Collection toCollection()

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);
    }