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

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

public class InheritanceSearch
extends java.lang.Object
implements java.util.Iterator<java.lang.Class>, java.lang.Iterable<java.lang.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(java.lang.Class searchClass)
           
 
Method Summary
 boolean hasNext()
           
 java.util.Iterator<java.lang.Class> iterator()
           
 java.lang.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(java.lang.Class searchClass)
Method Detail

iterator

public java.util.Iterator<java.lang.Class> iterator()
Specified by:
iterator in interface java.lang.Iterable<java.lang.Class>

hasNext

public boolean hasNext()
Specified by:
hasNext in interface java.util.Iterator<java.lang.Class>

next

public java.lang.Class next()
Specified by:
next in interface java.util.Iterator<java.lang.Class>

remove

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


Copyright © 2003-2012 The Apache Software Foundation.