Generated stub classes: same as user-defined classes, except
resolveClassName generates bytecode on the fly, and some of the
bytecode security checks are skipped.
Methods inherited from class java.lang.Object
|
, clone, equals, finalize, getClass, hashCode, notify, notifyAll, registerNatives, toString, wait, wait, wait |
task
Task task
nf
cornell.slk.compiler.name.NameFactory nf
qf
cornell.slk.compiler.quickclass.QcFactory qf
classLoader
DClassLoader classLoader
stubResolver
GenCodeResolver stubResolver
resolvers
CompoundResolver resolvers
classNodeTable
java.util.Hashtable classNodeTable
TaskClassNodeLoader
TaskClassNodeLoader(Task task,
Resolver resolver)
addResolver
void addResolver(Resolver resolver)
getClassNode
ClassNode getClassNode(java.lang.String origName) throws java.lang.ClassNotFoundException
- Given a class name, return the corresponding ClassNode. Which
ClassNode a name maps to depends on the loader; different loaders
may have different mappings.
For the moment, getClassNode need not work for arrays.
For the moment, getClassNode need not work for primitive types.
The J-Kernel allows for limited class renaming. This means that
it is possible that getClassNode(name).getName() != name.
This shouldn't be too disconcerting - even in a standard applet
class loader, the remote system might return bytecode whose
name doesn't match the name expected by the class loader (of
course, internally, the class loader will reject the bytecode).
The point is that at this stage, when we've just brought in
new bytecode, it may be the case that the class that the
bytecode has a different name than expected.
Whether this is acceptable depends on the situation. In
the J-Kernel, sometimes it is acceptable, sometimes not.
Currently, the J-Kernel's class renaming is very limited.
If a resolver returns a renamed class, the J-Kernel will
attempt to modify classes that refer to the renamed class
in order to make things match. However, no attempt is made
to fix up reflection, Class.getName(), and so on, so renaming
is still a limited tool at the moment.
origName is an unrenamed class name, while reName is renamed
class name. "name" could mean either one - I'm still working
on some of this.
getResourceAsStream
public java.io.InputStream getResourceAsStream(java.lang.String name)