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