org.apache.tools.ant.taskdefs.optional.sitraka.bytecode

Class ClassPathLoader


public class ClassPathLoader
extends java.lang.Object

Core of the bytecode analyzer. It loads classes from a given classpath.

Nested Class Summary

static interface
ClassPathLoader.FileLoader
the interface to implement to look up for specific resources

Field Summary

static ClassPathLoader.FileLoader
NULL_LOADER

Constructor Summary

ClassPathLoader(File[] entries)
create a new instance with a given set of urls
ClassPathLoader(String classPath)
create a new instance with a given classpath.
ClassPathLoader(String[] entries)
create a new instance with a given set of urls.

Method Summary

static InputStream
getCachedStream(InputStream is)
useful methods to read the whole input stream in memory so that it can be accessed faster.
Hashtable
getClasses()
return the whole set of classes in the classpath.
Enumeration
loaders()

Field Details

NULL_LOADER

public static final ClassPathLoader.FileLoader NULL_LOADER

Constructor Details

ClassPathLoader

public ClassPathLoader(File[] entries)
create a new instance with a given set of urls
Parameters:
entries - file urls to look for classes (.jar, .zip or directory)

ClassPathLoader

public ClassPathLoader(String classPath)
create a new instance with a given classpath. It must be urls separated by the platform specific path separator.
Parameters:
classPath - the classpath to load all the classes from.

ClassPathLoader

public ClassPathLoader(String[] entries)
create a new instance with a given set of urls.
Parameters:
entries - valid file urls (either .jar, .zip or directory)

Method Details

getCachedStream

public static InputStream getCachedStream(InputStream is)
            throws IOException
useful methods to read the whole input stream in memory so that it can be accessed faster. Processing rt.jar and tools.jar from JDK 1.3.1 brings time from 50s to 7s.

getClasses

public Hashtable getClasses()
            throws IOException
return the whole set of classes in the classpath. Note that this method can be very resource demanding since it must load all bytecode from all classes in all resources in the classpath at a time. To process it in a less resource demanding way, it is maybe better to use the loaders() that will return loader one by one.
Returns:
the hashtable containing ALL classes that are found in the given classpath. Note that the first entry of a given classname will shadow classes with the same name (as a classloader does)

loaders

public Enumeration loaders()
Returns:
the set of FileLoader loaders matching the given classpath.

Copyright B) 2000-2006 Apache Software Foundation. All Rights Reserved.