Overview | Package | Class | Use | Tree | Serialized | Deprecated | Index | Help
| 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

## com.ibm.able.rules
Class AbleByteCodeClassBuilder

    java.lang.Object
      com.ibm.able.rules.AbleByteCodeClassBuilder

All Implemented Interfaces:
  com.ibm.jikesbt.BT_Opcodes, java.io.Serializable

public class AbleByteCodeClassBuilder
extends java.lang.Object
implements com.ibm.jikesbt.BT_Opcodes, java.io.Serializable

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.

See Also:
  Serialized Form

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

### lastClassBytes

    protected byte[] lastClassBytes

  The bytecodes of the last created class.

### myRuleSet

    protected AbleRuleSet myRuleSet

  The Ruleset that owns this class.

### myInnerClasses

    protected java.util.Hashtable myInnerClasses

  The list of inner classes (Java Class objects)

### myDeclaredInnerClassesOrder

    protected java.util.Vector myDeclaredInnerClassesOrder

### myInnerClassDefs

    protected java.util.Hashtable myInnerClassDefs

  The list of inner class names (keys) and class definitions

Constructor Detail

### AbleByteCodeClassBuilder

    public AbleByteCodeClassBuilder(AbleRuleSet theRuleSet)

  Create a new bytecode class builder.

### AbleByteCodeClassBuilder

    public AbleByteCodeClassBuilder(AbleRuleSet theRuleSet,
                                    java.lang.ClassLoader parent)

  Create a new bytecode class builder.

Method Detail

### createClassWithFields

    public java.lang.Class createClassWithFields(java.lang.String theClassName,
                                                 java.lang.String theSuperClassName,
                                                 java.lang.String[] theFieldInfo)
                                          throws java.lang.ClassFormatError

  Create a Class object that contains fields of the specified types and specified names.

  Parameters:
    `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" ]

  Returns:
    the newly created Class object.
  Throws:
    `java.lang.ClassFormatError` - if the Class cannot be dynamically defined.

### getClassBytes

    public byte[] getClassBytes()

  Retrieve the bytecode array of the last created class.

### emptyRepositoryClasses

    public void emptyRepositoryClasses()

  Empty the repository of created classes.

### prependRepositoryClassPath

    public void prependRepositoryClassPath(java.lang.String thePath)

### appendRepositoryClassPath

    public void appendRepositoryClassPath(java.lang.String thePath)

### resetRepositoryClassPath

    public void resetRepositoryClassPath()

  Remove paths previously added to the CLASSPATH.

### getRepository

    public com.ibm.jikesbt.BT_Repository getRepository()

  Returns the repository.

### getClassLoader

    public java.lang.ClassLoader getClassLoader()

  Retrieve the classloader .

### getInnerClasses

    public java.util.Hashtable getInnerClasses()

  Retrieve the list of inner classes defined for this ruleset

  Returns:
    a collection of inner classes.

### getInnerClassesOrder

    public java.util.Vector getInnerClassesOrder()

  Retrieve the list of inner classes defined for this ruleset

  Returns:
    a collection of inner classes in the order they were defined.

### addClassDef

    public void addClassDef(java.lang.String theClassName,
                            com.ibm.able.rules.AbleByteCodeClass theClassDef)

  Add a generated inner class definiton to the environment

  Parameters:
    `theClassName` - - the name of the inner class
    `theClassDef` - - the class definition (includes bytecodes) of the inner class

Overview | Package | Class | Use | Tree | Serialized | Deprecated | Index | Help
| 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

(C) Copyright IBM Corporation 1999, 2005