edu.umd.cs.findbugs.ba.ch
Class Subtypes

java.lang.Object
  extended by edu.umd.cs.findbugs.ba.ch.Subtypes

public class Subtypes
extends java.lang.Object

Support for class hierarchy queries.

Author:
Bill Pugh, David Hovemeyer

Constructor Summary
Subtypes()
           
 
Method Summary
 void addApplicationClass(org.apache.bcel.classfile.JavaClass c)
           
 void addClass(org.apache.bcel.classfile.JavaClass c)
           
static java.lang.String extractClassName(java.lang.String name)
           
 java.util.Set<org.apache.bcel.classfile.JavaClass> getAllClasses()
          Get set of all known classes and interfaces.
 java.util.Set<org.apache.bcel.classfile.JavaClass> getImmediateSubtypes(org.apache.bcel.classfile.JavaClass c)
          Get immediate subtypes of given class or interface.
 java.util.Set<org.apache.bcel.classfile.JavaClass> getTransitiveCommonSubtypes(org.apache.bcel.classfile.JavaClass a, org.apache.bcel.classfile.JavaClass b)
          Get set of all known transitive classes and interfaces which are subtypes of both of the given classes and/or interfaces.
 java.util.Set<org.apache.bcel.classfile.JavaClass> getTransitiveSubtypes(org.apache.bcel.classfile.JavaClass c)
          Get set of all transitive subtypes of given class or interface, not including the class or interface itself.
 boolean hasSubtypes(org.apache.bcel.classfile.JavaClass c)
          Determine if a class or interface has subtypes
 boolean isApplicationClass(org.apache.bcel.classfile.JavaClass javaClass)
          Determine whether or not the given class is an application class.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

Subtypes

public Subtypes()
Method Detail

getImmediateSubtypes

public java.util.Set<org.apache.bcel.classfile.JavaClass> getImmediateSubtypes(org.apache.bcel.classfile.JavaClass c)
Get immediate subtypes of given class or interface.

Parameters:
c - a class or interface
Returns:
set of immediate subtypes

hasSubtypes

public boolean hasSubtypes(org.apache.bcel.classfile.JavaClass c)
Determine if a class or interface has subtypes

Parameters:
c - a class or interface
Returns:
true if c has any subtypes/interfaces

getAllClasses

public java.util.Set<org.apache.bcel.classfile.JavaClass> getAllClasses()
Get set of all known classes and interfaces.

Returns:
set of all known classes and interfaces

getTransitiveSubtypes

public java.util.Set<org.apache.bcel.classfile.JavaClass> getTransitiveSubtypes(org.apache.bcel.classfile.JavaClass c)
Get set of all transitive subtypes of given class or interface, not including the class or interface itself.

Parameters:
c - a class or interface
Returns:
set of all transitive subtypes

getTransitiveCommonSubtypes

public java.util.Set<org.apache.bcel.classfile.JavaClass> getTransitiveCommonSubtypes(org.apache.bcel.classfile.JavaClass a,
                                                                                      org.apache.bcel.classfile.JavaClass b)
Get set of all known transitive classes and interfaces which are subtypes of both of the given classes and/or interfaces. Note that in this method, we consider a class to be a subtype of itself. Therefore, this method can be used to determine, e.g., if there are any classes implementing both of two given interfaces.

Parameters:
a - a class or interface
b - another class or interface
Returns:
set of all common subtypes of a and b

addApplicationClass

public void addApplicationClass(org.apache.bcel.classfile.JavaClass c)

addClass

public void addClass(org.apache.bcel.classfile.JavaClass c)

extractClassName

public static java.lang.String extractClassName(java.lang.String name)

isApplicationClass

public boolean isApplicationClass(org.apache.bcel.classfile.JavaClass javaClass)
Determine whether or not the given class is an application class.

Parameters:
javaClass - a class
Returns:
true if it's an application class, false if not