public static Iterator getIterator()

in modules/aop-ext/src/main/java/org/apache/ignite/internal/util/gridify/GridifyUtils.java [112:187]


    public static Iterator<?> getIterator(final Object obj) {
        assert obj != null;

        if (obj instanceof Iterable)
            return ((Iterable<?>)obj).iterator();
        else if (obj instanceof Enumeration) {
            final Enumeration<?> enumeration = (Enumeration<?>)obj;

            return new Iterator<Object>() {
                @Override public boolean hasNext() {
                    return enumeration.hasMoreElements();
                }

                @Override public Object next() {
                    if (!hasNext())
                        throw new NoSuchElementException();

                    return enumeration.nextElement();
                }

                @Override public void remove() {
                    throw new UnsupportedOperationException("Not implemented.");
                }
            };
        }
        else if (obj instanceof Iterator)
            return (Iterator<?>)obj;
        else if (obj instanceof CharSequence) {
            final CharSequence cSeq = (CharSequence)obj;

            return new Iterator<Object>() {
                private int idx;

                @Override public boolean hasNext() {
                    return idx < cSeq.length();
                }

                @Override public Object next() {
                    if (!hasNext())
                        throw new NoSuchElementException();

                    idx++;

                    return cSeq.charAt(idx - 1);
                }

                @Override public void remove() {
                    throw new UnsupportedOperationException("Not implemented.");
                }
            };
        }
        else if (obj.getClass().isArray()) {
            return new Iterator<Object>() {
                private int idx;

                @Override public boolean hasNext() {
                    return idx < Array.getLength(obj);
                }

                @Override public Object next() {
                    if (!hasNext())
                        throw new NoSuchElementException();

                    idx++;

                    return Array.get(obj, idx - 1);
                }

                @Override public void remove() {
                    throw new UnsupportedOperationException("Not implemented.");
                }
            };
        }

        throw new IllegalArgumentException("Unknown parameter type: " + obj.getClass().getName());
    }