org.apache.tapestry5.ioc.internal.util
Class InheritanceSearch

java.lang.Object
  extended by org.apache.tapestry5.ioc.internal.util.InheritanceSearch
All Implemented Interfaces:
Iterable<Class>, Iterator<Class>

public class InheritanceSearch
extends Object
implements Iterator<Class>, Iterable<Class>

Used to search from a particular class up the inheritance hierarchy of extended classes and implemented interfaces.

The search starts with the initial class (provided in the constructor). It progresses up the inheritance chain, but skips java.lang.Object.

Once classes are exhausted, the inheritance hiearchy is searched. This is a breadth-first search, rooted in the interfaces implemented by the initial class at its super classes.

Once all interfaces are exhausted, java.lang.Object is returned (it is always returned last).

Two minor tweak to normal inheritance rules:

This class implements the Iterable interface, so it can be used directly in a for loop: for (Class search : new InheritanceSearch(startClass)) { ... }

This class is not threadsafe.


Constructor Summary
InheritanceSearch(Class searchClass)
           
 
Method Summary
 boolean hasNext()
           
 Iterator<Class> iterator()
           
 Class next()
           
 void remove()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

InheritanceSearch

public InheritanceSearch(Class searchClass)
Method Detail

iterator

public Iterator<Class> iterator()
Specified by:
iterator in interface Iterable<Class>

hasNext

public boolean hasNext()
Specified by:
hasNext in interface Iterator<Class>

next

public Class next()
Specified by:
next in interface Iterator<Class>

remove

public void remove()
Specified by:
remove in interface Iterator<Class>
Throws:
UnsupportedOperationException - always


Copyright © 2003-2012 The Apache Software Foundation.