weka.core
Class ClassDiscovery

java.lang.Object
  extended by weka.core.ClassDiscovery
All Implemented Interfaces:
RevisionHandler

public class ClassDiscovery
extends Object
implements RevisionHandler

This class is used for discovering classes that implement a certain interface or a derived from a certain class.

Version:
$Revision: 8034 $
Author:
FracPete (fracpete at waikato dot ac dot nz)
See Also:
ClassDiscovery.StringCompare

Nested Class Summary
static class ClassDiscovery.StringCompare
          compares two strings.
 
Field Summary
static boolean VERBOSE
          whether to output some debug information.
 
Constructor Summary
ClassDiscovery()
           
 
Method Summary
static void clearCache()
          clears the cache for class/classnames queries.
static void clearClassCache()
          Calls clearCache() and resets the cache of classes on the classpath (i.e.
static Vector<String> find(Class cls, String pkgname)
          Checks the given package for classes that inherited from the given class, in case it's a class, or implement this class, in case it's an interface.
static Vector<String> find(Class cls, String[] pkgnames)
          Checks the given packages for classes that inherited from the given class, in case it's a class, or implement this class, in case it's an interface.
static ArrayList<String> find(String matchText)
          Find all classes that have the supplied matchText String in their suffix.
static Vector<String> find(String classname, String pkgname)
          Checks the given package for classes that inherited from the given class, in case it's a class, or implement this class, in case it's an interface.
static Vector<String> find(String classname, String[] pkgnames)
          Checks the given packages for classes that inherited from the given class, in case it's a class, or implement this class, in case it's an interface.
static Vector<String> findPackages()
          Lists all packages it can find in the classpath.
 String getRevision()
          Returns the revision string.
static boolean hasInterface(Class intf, Class cls)
          Checks whether the given class implements the given interface.
static boolean hasInterface(String intf, String cls)
          Checks whether the given class implements the given interface.
static boolean isSubclass(Class superclass, Class otherclass)
          Checks whether the "otherclass" is a subclass of the given "superclass".
static boolean isSubclass(String superclass, String otherclass)
          Checks whether the "otherclass" is a subclass of the given "superclass".
static void main(String[] args)
          Possible calls: weka.core.ClassDiscovery <packages>
Prints all the packages in the current classpath weka.core.ClassDiscovery <classname> <packagename(s)>
Prints the classes it found.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

VERBOSE

public static final boolean VERBOSE
whether to output some debug information.

See Also:
Constant Field Values
Constructor Detail

ClassDiscovery

public ClassDiscovery()
Method Detail

isSubclass

public static boolean isSubclass(String superclass,
                                 String otherclass)
Checks whether the "otherclass" is a subclass of the given "superclass".

Parameters:
superclass - the superclass to check against
otherclass - this class is checked whether it is a subclass of the the superclass
Returns:
TRUE if "otherclass" is a true subclass

isSubclass

public static boolean isSubclass(Class superclass,
                                 Class otherclass)
Checks whether the "otherclass" is a subclass of the given "superclass".

Parameters:
superclass - the superclass to check against
otherclass - this class is checked whether it is a subclass of the the superclass
Returns:
TRUE if "otherclass" is a true subclass

hasInterface

public static boolean hasInterface(String intf,
                                   String cls)
Checks whether the given class implements the given interface.

Parameters:
intf - the interface to look for in the given class
cls - the class to check for the interface
Returns:
TRUE if the class contains the interface

hasInterface

public static boolean hasInterface(Class intf,
                                   Class cls)
Checks whether the given class implements the given interface.

Parameters:
intf - the interface to look for in the given class
cls - the class to check for the interface
Returns:
TRUE if the class contains the interface

find

public static Vector<String> find(String classname,
                                  String[] pkgnames)
Checks the given packages for classes that inherited from the given class, in case it's a class, or implement this class, in case it's an interface.

Parameters:
classname - the class/interface to look for
pkgnames - the packages to search in
Returns:
a list with all the found classnames

find

public static Vector<String> find(String classname,
                                  String pkgname)
Checks the given package for classes that inherited from the given class, in case it's a class, or implement this class, in case it's an interface.

Parameters:
classname - the class/interface to look for
pkgname - the package to search in
Returns:
a list with all the found classnames

find

public static Vector<String> find(Class cls,
                                  String[] pkgnames)
Checks the given packages for classes that inherited from the given class, in case it's a class, or implement this class, in case it's an interface.

Parameters:
cls - the class/interface to look for
pkgnames - the packages to search in
Returns:
a list with all the found classnames

find

public static ArrayList<String> find(String matchText)
Find all classes that have the supplied matchText String in their suffix.

Parameters:
matchText - the text to match
Returns:
an array list of matching fully qualified class names.

find

public static Vector<String> find(Class cls,
                                  String pkgname)
Checks the given package for classes that inherited from the given class, in case it's a class, or implement this class, in case it's an interface.

Parameters:
cls - the class/interface to look for
pkgname - the package to search in
Returns:
a list with all the found classnames

findPackages

public static Vector<String> findPackages()
Lists all packages it can find in the classpath.

Returns:
a list with all the found packages

clearCache

public static void clearCache()
clears the cache for class/classnames queries.


clearClassCache

public static void clearClassCache()
Calls clearCache() and resets the cache of classes on the classpath (i.e. forces a rescan of the classpath).


getRevision

public String getRevision()
Returns the revision string.

Specified by:
getRevision in interface RevisionHandler
Returns:
the revision

main

public static void main(String[] args)
Possible calls:

Parameters:
args - the commandline arguments


Copyright © 2013 University of Waikato, Hamilton, NZ. All Rights Reserved.