|
ABLE 2.3.0 07/13/2005 14:21:00 | |||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||||
java.lang.Objectcom.ibm.able.rules.AbleByteCodeClassBuilder
This class is used to construct inner classes defined using the ABLE Rule Language. It uses the JikesBT toolkit to dynamically construct the class bytecodes in memory for use by the associated inference engines.
| Field Summary | |
|---|---|
protected byte[] |
lastClassBytes
The bytecodes of the last created class. |
protected java.util.Vector |
myDeclaredInnerClassesOrder
|
protected java.util.Hashtable |
myInnerClassDefs
The list of inner class names (keys) and class definitions |
protected java.util.Hashtable |
myInnerClasses
The list of inner classes (Java Class objects) |
protected AbleRuleSet |
myRuleSet
The Ruleset that owns this class. |
| Fields inherited from interface com.ibm.jikesbt.BT_Opcodes |
|---|
opc_aaload, opc_aastore, opc_aconst_null, opc_aload, opc_aload_0, opc_aload_1, opc_aload_2, opc_aload_3, opc_anewarray, opc_areturn, opc_arraylength, opc_astore, opc_astore_0, opc_astore_1, opc_astore_2, opc_astore_3, opc_athrow, opc_baload, opc_bastore, opc_bipush, opc_caload, opc_castore, opc_checkcast, opc_d2f, opc_d2i, opc_d2l, opc_dadd, opc_daload, opc_dastore, opc_dcmpg, opc_dcmpl, opc_dconst_0, opc_dconst_1, opc_ddiv, opc_dload, opc_dload_0, opc_dload_1, opc_dload_2, opc_dload_3, opc_dmul, opc_dneg, opc_drem, opc_dreturn, opc_dstore, opc_dstore_0, opc_dstore_1, opc_dstore_2, opc_dstore_3, opc_dsub, opc_dup, opc_dup_x1, opc_dup_x2, opc_dup2, opc_dup2_x1, opc_dup2_x2, opc_f2d, opc_f2i, opc_f2l, opc_fadd, opc_faload, opc_fastore, opc_fcmpg, opc_fcmpl, opc_fconst_0, opc_fconst_1, opc_fconst_2, opc_fdiv, opc_fload, opc_fload_0, opc_fload_1, opc_fload_2, opc_fload_3, opc_fmul, opc_fneg, opc_frem, opc_freturn, opc_fstore, opc_fstore_0, opc_fstore_1, opc_fstore_2, opc_fstore_3, opc_fsub, opc_getfield, opc_getstatic, opc_goto, opc_goto_w, opc_i2d, opc_i2f, opc_i2l, opc_iadd, opc_iaload, opc_iand, opc_iastore, opc_iconst_0, opc_iconst_1, opc_iconst_2, opc_iconst_3, opc_iconst_4, opc_iconst_5, opc_iconst_m1, opc_idiv, opc_if_acmpeq, opc_if_acmpne, opc_if_icmpeq, opc_if_icmpge, opc_if_icmpgt, opc_if_icmple, opc_if_icmplt, opc_if_icmpne, opc_ifeq, opc_ifge, opc_ifgt, opc_ifle, opc_iflt, opc_ifne, opc_ifnonnull, opc_ifnull, opc_iinc, opc_iload, opc_iload_0, opc_iload_1, opc_iload_2, opc_iload_3, opc_imul, opc_ineg, opc_instanceof, opc_int2byte, opc_int2char, opc_int2short, opc_invokeinterface, opc_invokespecial, opc_invokestatic, opc_invokevirtual, opc_ior, opc_irem, opc_ireturn, opc_ishl, opc_ishr, opc_istore, opc_istore_0, opc_istore_1, opc_istore_2, opc_istore_3, opc_isub, opc_iushr, opc_ixor, opc_jsr, opc_jsr_w, opc_l2d, opc_l2f, opc_l2i, opc_ladd, opc_laload, opc_land, opc_lastore, opc_lcmp, opc_lconst_0, opc_lconst_1, opc_ldc, opc_ldc_w, opc_ldc2_w, opc_ldiv, opc_lload, opc_lload_0, opc_lload_1, opc_lload_2, opc_lload_3, opc_lmul, opc_lneg, opc_lookupswitch, opc_lor, opc_lrem, opc_lreturn, opc_lshl, opc_lshr, opc_lstore, opc_lstore_0, opc_lstore_1, opc_lstore_2, opc_lstore_3, opc_lsub, opc_lushr, opc_lxor, opc_monitorenter, opc_monitorexit, opc_multianewarray, opc_new, opc_newarray, opc_nop, opc_pop, opc_pop2, opc_putfield, opc_putstatic, opc_ret, opc_return, opc_saload, opc_sastore, opc_sipush, opc_swap, opc_tableswitch, opc_wide, opc_xxxunusedxxx |
| Constructor Summary | |
|---|---|
AbleByteCodeClassBuilder(AbleRuleSet theRuleSet)
Create a new bytecode class builder. |
|
AbleByteCodeClassBuilder(AbleRuleSet theRuleSet,
java.lang.ClassLoader parent)
Create a new bytecode class builder. |
|
| Method Summary | |
|---|---|
void |
addClassDef(java.lang.String theClassName,
com.ibm.able.rules.AbleByteCodeClass theClassDef)
Add a generated inner class definiton to the environment |
void |
appendRepositoryClassPath(java.lang.String thePath)
|
java.lang.Class |
createClassWithFields(java.lang.String theClassName,
java.lang.String theSuperClassName,
java.lang.String[] theFieldInfo)
Create a Class object that contains fields of the specified types and specified names. |
void |
emptyRepositoryClasses()
Empty the repository of created classes. |
byte[] |
getClassBytes()
Retrieve the bytecode array of the last created class. |
java.lang.ClassLoader |
getClassLoader()
Retrieve the classloader . |
java.util.Hashtable |
getInnerClasses()
Retrieve the list of inner classes defined for this ruleset |
java.util.Vector |
getInnerClassesOrder()
Retrieve the list of inner classes defined for this ruleset |
com.ibm.jikesbt.BT_Repository |
getRepository()
Returns the repository. |
void |
prependRepositoryClassPath(java.lang.String thePath)
|
void |
resetRepositoryClassPath()
Remove paths previously added to the CLASSPATH. |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
protected byte[] lastClassBytes
protected AbleRuleSet myRuleSet
protected java.util.Hashtable myInnerClasses
protected java.util.Vector myDeclaredInnerClassesOrder
protected java.util.Hashtable myInnerClassDefs
| Constructor Detail |
public AbleByteCodeClassBuilder(AbleRuleSet theRuleSet)
public AbleByteCodeClassBuilder(AbleRuleSet theRuleSet,
java.lang.ClassLoader parent)
| Method Detail |
public java.lang.Class createClassWithFields(java.lang.String theClassName,
java.lang.String theSuperClassName,
java.lang.String[] theFieldInfo)
throws java.lang.ClassFormatError
theClassName - The name to be given to the newly created class.
theSuperClassName - The name of the class to be extended (if any); can be
null, and if so, java.lang.Object is used as the super
class.
theFieldInfo - A list of data members to be created in the new class.
There must be an even number of elements in the array,
and the array must be made up of pairs as follows:
element[i] (0, 2, 4, etc) is a string and specifies the class type of the field; this must be one of: "boolean", "byte", "char", "double", "float", "int", "long", "short", "java.lang.Object", "java.lang.String", or "java.util.Vector".
element[i+1] (1, 3, 5, etc) is a string and specifies the name of the field. The name can be any valid Java identifier.
Example: [ "java.lang.String" "carMake"
"int" "carYear"
"int" "carModel" ]
java.lang.ClassFormatError - if the Class cannot be dynamically defined.public byte[] getClassBytes()
public void emptyRepositoryClasses()
public void prependRepositoryClassPath(java.lang.String thePath)
public void appendRepositoryClassPath(java.lang.String thePath)
public void resetRepositoryClassPath()
public com.ibm.jikesbt.BT_Repository getRepository()
public java.lang.ClassLoader getClassLoader()
public java.util.Hashtable getInnerClasses()
public java.util.Vector getInnerClassesOrder()
public void addClassDef(java.lang.String theClassName,
com.ibm.able.rules.AbleByteCodeClass theClassDef)
theClassName - - the name of the inner classtheClassDef - - the class definition (includes bytecodes) of the inner class
|
ABLE 2.3.0 07/13/2005 14:21:00 | |||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||||