public class JavaSourceIClassLoader extends IClassLoader
IClassLoader
finds, scans and parses compilation units.
Notice that it does not compile them!
Modifier and Type | Field and Description |
---|---|
private static boolean |
DEBUG |
private java.lang.String |
optionalCharacterEncoding |
private ErrorHandler |
optionalCompileErrorHandler |
private WarningHandler |
optionalWarningHandler |
private ResourceFinder |
sourceFinder |
private java.util.Set<UnitCompiler> |
unitCompilers
Collection of parsed compilation units.
|
ANNO_java_lang_Override, CTOR_java_lang_StringBuilder__java_lang_String, METH_java_lang_Iterable__iterator, METH_java_lang_String__concat__java_lang_String, METH_java_lang_String__valueOf__boolean, METH_java_lang_String__valueOf__char, METH_java_lang_String__valueOf__double, METH_java_lang_String__valueOf__float, METH_java_lang_String__valueOf__int, METH_java_lang_String__valueOf__java_lang_Object, METH_java_lang_String__valueOf__long, METH_java_lang_StringBuilder__append__java_lang_String, METH_java_lang_StringBuilder__toString, METH_java_util_Iterator__hasNext, METH_java_util_Iterator__next, TYPE_java_io_Serializable, TYPE_java_lang_AssertionError, TYPE_java_lang_Boolean, TYPE_java_lang_Byte, TYPE_java_lang_Character, TYPE_java_lang_Class, TYPE_java_lang_Cloneable, TYPE_java_lang_Double, TYPE_java_lang_Error, TYPE_java_lang_Exception, TYPE_java_lang_Float, TYPE_java_lang_Integer, TYPE_java_lang_Iterable, TYPE_java_lang_Long, TYPE_java_lang_Object, TYPE_java_lang_RuntimeException, TYPE_java_lang_Short, TYPE_java_lang_String, TYPE_java_lang_StringBuilder, TYPE_java_lang_Throwable, TYPE_java_util_Iterator
Constructor and Description |
---|
JavaSourceIClassLoader(ResourceFinder sourceFinder,
java.lang.String optionalCharacterEncoding,
IClassLoader optionalParentIClassLoader) |
Modifier and Type | Method and Description |
---|---|
protected Java.CompilationUnit |
findCompilationUnit(java.lang.String className)
Finds the Java™ source file for the named class through the configured 'source resource finder' and
parses it.
|
IClass |
findIClass(java.lang.String fieldDescriptor)
|
java.util.Set<UnitCompiler> |
getUnitCompilers()
Returns the set of
UnitCompiler s that were created so far. |
void |
setCharacterEncoding(java.lang.String optionalCharacterEncoding) |
void |
setCompileErrorHandler(ErrorHandler optionalCompileErrorHandler) |
void |
setSourceFinder(ResourceFinder pathResourceFinder) |
void |
setWarningHandler(WarningHandler optionalWarningHandler) |
createJavacLikePathIClassLoader, defineIClass, loadIClass, postConstruct
private static final boolean DEBUG
private ResourceFinder sourceFinder
private java.lang.String optionalCharacterEncoding
private final java.util.Set<UnitCompiler> unitCompilers
private ErrorHandler optionalCompileErrorHandler
private WarningHandler optionalWarningHandler
public JavaSourceIClassLoader(ResourceFinder sourceFinder, java.lang.String optionalCharacterEncoding, IClassLoader optionalParentIClassLoader)
public java.util.Set<UnitCompiler> getUnitCompilers()
UnitCompiler
s that were created so far.public void setSourceFinder(ResourceFinder pathResourceFinder)
pathResourceFinder
- The source pathpublic void setCharacterEncoding(java.lang.String optionalCharacterEncoding)
optionalCharacterEncoding
- The name of the charset that is used to read source files, or null
to
use the platform's 'default charset'public void setCompileErrorHandler(ErrorHandler optionalCompileErrorHandler)
public void setWarningHandler(WarningHandler optionalWarningHandler)
public IClass findIClass(java.lang.String fieldDescriptor) throws java.lang.ClassNotFoundException
IClassLoader
IClass
by descriptor; return null
if a class
for that descriptor
could not be found.
Similar ClassLoader.findClass(java.lang.String)
, this method
must
IClass
object from somewhere for the given type
IClassLoader.defineIClass(IClass)
with that IClass
object as
the argument
IClass
object
The format of a descriptor
is defined in JVMS 4.3.2. Typical
descriptors are:
I
(Integer)
Lpkg1/pkg2/Cls;
(Class declared in package)
Lpkg1/pkg2/Outer$Inner;
Member class
Notice that this method is never called from more than one thread at a time. In other words, implementations of this method need not be synchronized.
findIClass
in class IClassLoader
fieldDescriptor
- Field descriptor of the IClass
to load, e.g. "Lpkg1/pkg2/Outer$Inner;"null
if a class with that descriptor could not be foundjava.lang.ClassNotFoundException
- An exception was raised while loading the IClass
protected Java.CompilationUnit findCompilationUnit(java.lang.String className) throws java.io.IOException, CompileException
null
iff the source file could not be foundjava.io.IOException
CompileException