/** * Use an external set of visited classes - this is used to avoid recursive iteration * * @param visited the visited set. A copy is _not_ made. The original instance will be mutated * @return new iterator that uses the given visited set instance */ public GuiceDependencyIterator substituteVisitedSet(Set<Key<?>> visited) { return new GuiceDependencyIterator(creationClass, creationTypeLiteral, visited); }
private GuiceDependencyIterator(Class<?> clazz, TypeLiteral<?> typeLiteral, Set<Key<?>> visited) { this.creationClass = clazz; this.creationTypeLiteral = typeLiteral; this.visited = visited; // must be called last currentDependencyIterator = initInjectionPoint(); }
private void checkReset() { if (!needsReset) { return; } needsReset = false; currentClass = null; if (currentDependencyIterator != null) { if (currentDependencyIterator.hasNext()) { currentClass = currentDependencyIterator.next(); } else { currentDependencyIterator = null; } } while ((currentClass == null) && keyIterator.hasNext()) { Key<?> key = keyIterator.next(); currentClass = parseKey(visited, key); if (currentClass == null) { continue; } currentDependencyIterator = new GuiceDependencyIterator(key.getTypeLiteral()); currentDependencyIterator = currentDependencyIterator.substituteVisitedSet(visited); } }
@Override public Class<?> next() { if (!hasNext()) { throw new NoSuchElementException(); } Class<?> localClass = currentClass; currentClass = null; return localClass; }
private void checkReset() { if (!needsReset) { return; } needsReset = false; currentClass = null; if (currentDependencyIterator != null) { if (currentDependencyIterator.hasNext()) { currentClass = currentDependencyIterator.next(); } else { currentDependencyIterator = null; } } while ((currentClass == null) && keyIterator.hasNext()) { Key<?> key = keyIterator.next(); currentClass = parseKey(visited, key); if (currentClass == null) { continue; } currentDependencyIterator = new GuiceDependencyIterator(key.getTypeLiteral()); currentDependencyIterator = currentDependencyIterator.substituteVisitedSet(visited); } }
@Override public Class<?> next() { if (!hasNext()) { throw new NoSuchElementException(); } Class<?> localClass = currentClass; currentClass = null; return localClass; }
private void checkReset() { if (!needsReset) { return; } needsReset = false; currentClass = null; if (currentDependencyIterator != null) { if (currentDependencyIterator.hasNext()) { currentClass = currentDependencyIterator.next(); } else { currentDependencyIterator = null; } } while ((currentClass == null) && keyIterator.hasNext()) { Key<?> key = keyIterator.next(); currentClass = parseKey(visited, key); if (currentClass == null) { continue; } currentDependencyIterator = new GuiceDependencyIterator(key.getTypeLiteral()); currentDependencyIterator = currentDependencyIterator.substituteVisitedSet(visited); } }
/** * Use an external set of visited classes - this is used to avoid recursive iteration * * @param visited the visited set. A copy is _not_ made. The original instance will be mutated * @return new iterator that uses the given visited set instance */ public GuiceDependencyIterator substituteVisitedSet(Set<Key<?>> visited) { return new GuiceDependencyIterator(creationClass, creationTypeLiteral, visited); }
private GuiceDependencyIterator(Class<?> clazz, TypeLiteral<?> typeLiteral, Set<Key<?>> visited) { this.creationClass = clazz; this.creationTypeLiteral = typeLiteral; this.visited = visited; // must be called last currentDependencyIterator = initInjectionPoint(); }
@Override public Class<?> next() { if (!hasNext()) { throw new NoSuchElementException(); } Class<?> localClass = currentClass; currentClass = null; return localClass; }
@Override public Iterator<Class<?>> iterator() { return new GuiceDependencyIterator(creationClass, creationTypeLiteral, visited); }
private GuiceDependencyIterator(Class<?> clazz, TypeLiteral<?> typeLiteral, Set<Key<?>> visited) { this.creationClass = clazz; this.creationTypeLiteral = typeLiteral; this.visited = visited; // must be called last currentDependencyIterator = initInjectionPoint(); }
/** * Use an external set of visited classes - this is used to avoid recursive iteration * * @param visited the visited set. A copy is _not_ made. The original instance will be mutated * @return new iterator that uses the given visited set instance */ public GuiceDependencyIterator substituteVisitedSet(Set<Key<?>> visited) { return new GuiceDependencyIterator(creationClass, creationTypeLiteral, visited); }
@Override public Iterator<Class<?>> iterator() { return new GuiceDependencyIterator(creationClass, creationTypeLiteral, visited); }
@Override public Iterator<Class<?>> iterator() { return new GuiceDependencyIterator(creationClass, creationTypeLiteral, visited); }