oscript.compiler
Class CompilerClassLoader

java.lang.Object
  extended byjava.lang.ClassLoader
      extended byoscript.compiler.CompilerClassLoader

public class CompilerClassLoader
extends java.lang.ClassLoader

A helper to create loaded java classes from a JavaClass instance.

Classes created with this class-loader are also stored to .cache so they will be available to future instances of the interpreter... note: I may change this in the future, I would like to make sure that the classes are stored in the same file as cache.db...

Version:
1.10
Author:
Rob Clark (rob@ti.com)

Method Summary
static java.lang.Class forName(java.lang.String className, boolean initialize, java.lang.ClassLoader loader)
           
static CompilerClassLoader getCompilerClassLoader()
           
 java.lang.Class makeClass(java.lang.String className, org.apache.bcel.classfile.JavaClass javaClass)
          Make a class...
 java.lang.String makeClassName(java.lang.String suggestedClassName)
          In order to ensure that new classes are not generated with the same name as a previously generated class, the process of selecting the the name for the class to generate is delegated to this class-loader.
 java.lang.String makeClassName(java.lang.String suggestedClassName, boolean overwrite)
           
 
Methods inherited from class java.lang.ClassLoader
clearAssertionStatus, defineClass, defineClass, defineClass, definePackage, findClass, findLibrary, findLoadedClass, findResource, findResources, findSystemClass, getPackage, getPackages, getParent, getResource, getResourceAsStream, getResources, getSystemClassLoader, getSystemResource, getSystemResourceAsStream, getSystemResources, loadClass, loadClass, resolveClass, setClassAssertionStatus, setDefaultAssertionStatus, setPackageAssertionStatus, setSigners
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

forName

public static java.lang.Class forName(java.lang.String className,
                                      boolean initialize,
                                      java.lang.ClassLoader loader)
                               throws java.lang.ClassNotFoundException
Throws:
java.lang.ClassNotFoundException

getCompilerClassLoader

public static CompilerClassLoader getCompilerClassLoader()

makeClassName

public java.lang.String makeClassName(java.lang.String suggestedClassName)
In order to ensure that new classes are not generated with the same name as a previously generated class, the process of selecting the the name for the class to generate is delegated to this class-loader. This is a wierd thing for a class loader to do, but maybe I can think of a cleaner way to do this...

Parameters:
suggestedClassName - is used to seed the class name generation, so that the name that is generated sort of "makes sense"

makeClassName

public java.lang.String makeClassName(java.lang.String suggestedClassName,
                                      boolean overwrite)

makeClass

public java.lang.Class makeClass(java.lang.String className,
                                 org.apache.bcel.classfile.JavaClass javaClass)
Make a class... perhaps this method should take a ClassGen???