1 package bsh; 2 3 import bsh.Capabilities.Unavailable; 4 import java.lang.reflect.InvocationTargetException ; 5 6 public abstract class ClassGenerator 7 { 8 private static ClassGenerator cg; 9 10 public static ClassGenerator getClassGenerator() 11 throws UtilEvalError 12 { 13 if ( cg == null ) 14 { 15 try { 16 Class clas = Class.forName( "bsh.ClassGeneratorImpl" ); 17 cg = (ClassGenerator)clas.newInstance(); 18 } catch ( Exception e ) { 19 throw new Unavailable("ClassGenerator unavailable: "+e); 20 } 21 } 22 23 return cg; 24 } 25 26 29 public abstract Class generateClass( 30 String name, Modifiers modifiers, 31 Class [] interfaces, Class superClass, BSHBlock block, 32 boolean isInterface, CallStack callstack, Interpreter interpreter 33 ) 34 throws EvalError; 35 36 41 public abstract Object invokeSuperclassMethod( 42 BshClassManager bcm, Object instance, String methodName, Object [] args 43 ) 44 throws UtilEvalError, ReflectError, InvocationTargetException ; 45 46 51 public abstract void setInstanceNameSpaceParent( 52 Object instance, String className, NameSpace parent ); 53 54 } 55 | Popular Tags |