Top Description Fields Constructors Methods
org.codehaus.janino

public abstract Class IClassLoader

extends Object
Class Inheritance
Known Direct Subclasses
org.codehaus.janino.JavaSourceIClassLoader, org.codehaus.janino.ResourceFinderIClassLoader, org.codehaus.janino.ClassLoaderIClassLoader, org.codehaus.janino.Compiler.CompilerIClassLoader
Imports
java.io.File, java.util.HashMap, .HashSet, .Map, .Set, java.util.logging.Level, .Logger, org.codehaus.commons.compiler.CompileException, .InternalCompilerException, org.codehaus.commons.compiler.util.StringUtil, org.codehaus.commons.compiler.util.resource.JarDirectoriesResourceFinder, .PathResourceFinder, .ResourceFinder, org.codehaus.commons.nullanalysis.Nullable, org.codehaus.janino.IClass.IConstructor, .IClass.IMethod

Loads an IClass by type name.

Field Summary

Modifier and TypeField and Description
private final Map<IClass, IClass>
public IClass.IConstructor
private final Map<String, IClass>
private static final Logger
public IClass.IMethod
public IClass.IMethod
public IClass.IMethod
public IClass.IMethod
public IClass.IMethod
public IClass.IMethod
public IClass.IMethod
public IClass.IMethod
public IClass.IMethod
public IClass.IMethod
public IClass.IMethod
public IClass.IMethod
public IClass.IMethod
public IClass.IMethod
public IClass.IMethod
public IClass.IMethod
public IClass.IMethod
public IClass.IMethod
public IClass.IMethod
public IClass.IMethod
public IClass.IMethod
public IClass.IMethod
public IClass.IMethod
public IClass.IMethod
private final IClassLoader
public IClass
public IClass
public IClass
public IClass
public IClass
public IClass
public IClass
public IClass
public IClass
public IClass
public IClass
public IClass
public IClass
public IClass
public IClass
public IClass
public IClass
public IClass
public IClass
public IClass
public IClass
public IClass
public IClass
public IClass
public IClass
public IClass
private final Set<String>

Constructor Summary

AccessConstructor and Description
public
IClassLoader(IClassLoader
null iff this IClassLoader has no parent
parentIClassLoader
)

Method Summary

Modifier and TypeMethod and Description
public static IClassLoader
createJavacLikePathIClassLoader(final File[] bootClassPath, final File[] extDirs, final File[] classPath)

Creates an IClassLoader that looks for classes in the given "boot class path", then in the given "extension directories", and then in the given "class path".

protected final void
defineIClass(IClass iClass)

Defines an IClass in the context of this IClassLoader.

protected abstract IClass

Returns:

null if a class with that descriptor could not be found
findIClass
(String descriptor)

Finds a new IClass by descriptor and calls defineIClass(IClass).

public IClass
getArrayIClass(IClass
Required because the superclass of an array class is Object by definition
componentType
,
int
Dimension count
n
)

Gets an IClass that represents an n-dimensional array of this type.

public synchronized IClass
getArrayIClass(IClass
Required because the superclass of an array class is Object by definition
componentType
)

Gets an IClass that represents an array of this type.

private IClass
getArrayIClass2(final IClass componentType)

private static IClass.IMethod

Returns:

null iff the declaringType does not declare a method with that name and parameter types
getMethod
(IClass declaringType, String name, IClass... parameterTypes)

public IClassLoader
public final IClass

Returns:

null if an IClass could not be loaded
loadIClass
(String
E.g. 'Lpkg1/pkg2/Outer$Inner;'
fieldDescriptor
)

Gets an IClass by field descriptor.

protected final void
postConstruct()

This method must be called by the constructor of the derived class.

private static IClass.IConstructor
requireConstructor(IClass declaringType, IClass... parameterTypes)

private static IClass.IMethod
requireMethod(IClass declaringType, String name, IClass... parameterTypes)

private IClass
requireType(String descriptor)

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

arrayIClassesback to summary
private final Map<IClass, IClass> arrayIClasses
CTOR_java_lang_StringBuilder__java_lang_Stringback to summary
public IClass.IConstructor CTOR_java_lang_StringBuilder__java_lang_String
loadedIClassesback to summary
private final Map<String, IClass> loadedIClasses
LOGGERback to summary
private static final Logger LOGGER
METH_java_lang_Enum__ordinalback to summary
public IClass.IMethod METH_java_lang_Enum__ordinal
METH_java_lang_Iterable__iteratorback to summary
public IClass.IMethod METH_java_lang_Iterable__iterator
METH_java_lang_String__concat__java_lang_Stringback to summary
public IClass.IMethod METH_java_lang_String__concat__java_lang_String
METH_java_lang_String__equals__java_lang_Objectback to summary
public IClass.IMethod METH_java_lang_String__equals__java_lang_Object
METH_java_lang_String__hashCodeback to summary
public IClass.IMethod METH_java_lang_String__hashCode
METH_java_lang_String__valueOf__booleanback to summary
public IClass.IMethod METH_java_lang_String__valueOf__boolean
METH_java_lang_String__valueOf__charback to summary
public IClass.IMethod METH_java_lang_String__valueOf__char
METH_java_lang_String__valueOf__doubleback to summary
public IClass.IMethod METH_java_lang_String__valueOf__double
METH_java_lang_String__valueOf__floatback to summary
public IClass.IMethod METH_java_lang_String__valueOf__float
METH_java_lang_String__valueOf__intback to summary
public IClass.IMethod METH_java_lang_String__valueOf__int
METH_java_lang_String__valueOf__java_lang_Objectback to summary
public IClass.IMethod METH_java_lang_String__valueOf__java_lang_Object
METH_java_lang_String__valueOf__longback to summary
public IClass.IMethod METH_java_lang_String__valueOf__long
METH_java_lang_StringBuilder__append__booleanback to summary
public IClass.IMethod METH_java_lang_StringBuilder__append__boolean
METH_java_lang_StringBuilder__append__charback to summary
public IClass.IMethod METH_java_lang_StringBuilder__append__char
METH_java_lang_StringBuilder__append__doubleback to summary
public IClass.IMethod METH_java_lang_StringBuilder__append__double
METH_java_lang_StringBuilder__append__floatback to summary
public IClass.IMethod METH_java_lang_StringBuilder__append__float
METH_java_lang_StringBuilder__append__intback to summary
public IClass.IMethod METH_java_lang_StringBuilder__append__int
METH_java_lang_StringBuilder__append__java_lang_Objectback to summary
public IClass.IMethod METH_java_lang_StringBuilder__append__java_lang_Object
METH_java_lang_StringBuilder__append__java_lang_Stringback to summary
public IClass.IMethod METH_java_lang_StringBuilder__append__java_lang_String
METH_java_lang_StringBuilder__append__longback to summary
public IClass.IMethod METH_java_lang_StringBuilder__append__long
METH_java_lang_StringBuilder__toStringback to summary
public IClass.IMethod METH_java_lang_StringBuilder__toString
METH_java_lang_Throwable__addSuppressedback to summary
public IClass.IMethod METH_java_lang_Throwable__addSuppressed
Annotations
@Nullable
METH_java_util_Iterator__hasNextback to summary
public IClass.IMethod METH_java_util_Iterator__hasNext
METH_java_util_Iterator__nextback to summary
public IClass.IMethod METH_java_util_Iterator__next
parentIClassLoaderback to summary
private final IClassLoader parentIClassLoader
TYPE_java_io_Serializableback to summary
public IClass TYPE_java_io_Serializable
TYPE_java_lang_annotation_Retentionback to summary
public IClass TYPE_java_lang_annotation_Retention
TYPE_java_lang_AssertionErrorback to summary
public IClass TYPE_java_lang_AssertionError
TYPE_java_lang_Booleanback to summary
public IClass TYPE_java_lang_Boolean
TYPE_java_lang_Byteback to summary
public IClass TYPE_java_lang_Byte
TYPE_java_lang_Characterback to summary
public IClass TYPE_java_lang_Character
TYPE_java_lang_Classback to summary
public IClass TYPE_java_lang_Class
TYPE_java_lang_Cloneableback to summary
public IClass TYPE_java_lang_Cloneable
TYPE_java_lang_Doubleback to summary
public IClass TYPE_java_lang_Double
TYPE_java_lang_Enumback to summary
public IClass TYPE_java_lang_Enum
TYPE_java_lang_Errorback to summary
public IClass TYPE_java_lang_Error
TYPE_java_lang_Exceptionback to summary
public IClass TYPE_java_lang_Exception
TYPE_java_lang_Floatback to summary
public IClass TYPE_java_lang_Float
TYPE_java_lang_Integerback to summary
public IClass TYPE_java_lang_Integer
TYPE_java_lang_Iterableback to summary
public IClass TYPE_java_lang_Iterable
TYPE_java_lang_Longback to summary
public IClass TYPE_java_lang_Long
TYPE_java_lang_Objectback to summary
public IClass TYPE_java_lang_Object
TYPE_java_lang_Overrideback to summary
public IClass TYPE_java_lang_Override
TYPE_java_lang_RuntimeExceptionback to summary
public IClass TYPE_java_lang_RuntimeException
TYPE_java_lang_Shortback to summary
public IClass TYPE_java_lang_Short
TYPE_java_lang_Stringback to summary
public IClass TYPE_java_lang_String
TYPE_java_lang_StringBuilderback to summary
public IClass TYPE_java_lang_StringBuilder
TYPE_java_lang_Systemback to summary
public IClass TYPE_java_lang_System
TYPE_java_lang_Throwableback to summary
public IClass TYPE_java_lang_Throwable
TYPE_java_lang_Voidback to summary
public IClass TYPE_java_lang_Void
TYPE_java_util_Iteratorback to summary
public IClass TYPE_java_util_Iterator
unloadableIClassesback to summary
private final Set<String> unloadableIClasses

Constructor Detail

IClassLoaderback to summary
public IClassLoader(IClassLoader parentIClassLoader)
Parameters
parentIClassLoader:IClassLoader

null iff this IClassLoader has no parent

Annotations
@SuppressWarnings:null

Method Detail

createJavacLikePathIClassLoaderback to summary
public static IClassLoader createJavacLikePathIClassLoader(final File[] bootClassPath, final File[] extDirs, final File[] classPath)

Creates an IClassLoader that looks for classes in the given "boot class path", then in the given "extension directories", and then in the given "class path".

The default for the bootClassPath is the path defined in the system property "sun.boot.class.path", and the default for the extensionDirs is the path defined in the "java.ext.dirs" system property.

defineIClassback to summary
protected final void defineIClass(IClass iClass)

Defines an IClass in the context of this IClassLoader.

This method should only be called from an implementation of findIClass(String).

Exceptions
InternalCompilerException:
A different IClass object is already defined for this type
findIClassback to summary
protected abstract IClass findIClass(String descriptor) throws ClassNotFoundException

Finds a new IClass by descriptor and calls defineIClass(IClass).

Similar java.lang.ClassLoader#findClass(java.lang.String), this method must

The format of a descriptor is defined in JVMS 4.3.2. Typical descriptors are:

  • I (Integer)
  • Lpkg1/pkg2/Clazz; (Class declared in package)
  • Lpkg1/pkg2/Outer$Inner; Member class

Notice that this method is never called for array types.

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 thread-safe.

Returns:IClass

null if a class with that descriptor could not be found

Annotations
@Nullable
Exceptions
ClassNotFoundException:
An exception was raised while loading the class
getArrayIClassback to summary
public IClass getArrayIClass(IClass componentType, int n)

Gets an IClass that represents an n-dimensional array of this type.

Parameters
componentType:IClass

Required because the superclass of an array class is Object by definition

n:int

Dimension count

getArrayIClassback to summary
public synchronized IClass getArrayIClass(IClass componentType)

Gets an IClass that represents an array of this type.

Parameters
componentType:IClass

Required because the superclass of an array class is Object by definition

getArrayIClass2back to summary
private IClass getArrayIClass2(final IClass componentType)
Parameters
componentType:IClass

Must pass IClassLoader#TYPE_java_lang_Object here

getMethodback to summary
private static IClass.IMethod getMethod(IClass declaringType, String name, IClass... parameterTypes)
Returns:IClass.IMethod

null iff the declaringType does not declare a method with that name and parameter types

Annotations
@Nullable
getParentIClassLoaderback to summary
public IClassLoader getParentIClassLoader()
loadIClassback to summary
public final IClass loadIClass(String fieldDescriptor) throws ClassNotFoundException

Gets an IClass by field descriptor.

Parameters
fieldDescriptor:String

E.g. 'Lpkg1/pkg2/Outer$Inner;'

Returns:IClass

null if an IClass could not be loaded

Annotations
@Nullable
Exceptions
ClassNotFoundException:
An exception was raised while loading the IClass
postConstructback to summary
protected final void postConstruct()

This method must be called by the constructor of the derived class. (The reason being is that this method invokes abstract loadIClass(String) which will not work until the derived class is constructed.)

requireConstructorback to summary
private static IClass.IConstructor requireConstructor(IClass declaringType, IClass... parameterTypes)
requireMethodback to summary
private static IClass.IMethod requireMethod(IClass declaringType, String name, IClass... parameterTypes)
Exceptions
AssertionError:
The declaringType does not declare a method with that name and parameter types
requireTypeback to summary
private IClass requireType(String descriptor)