Interface EditorContext

All Known Implementing Classes:
BloatContext, CachingBloatContext, PersistentBloatContext

public interface EditorContext
An EditorContext supplies a means of loading and editing classes. Note that a number of these methods are identical to methods in Editor. It is expected that an EditorContext will have a different caching (of ClassEditors, etc.) policy than Editor does. Hence, the methods in EditorContext should be used to edit classes, etc.
  • Method Details

    • loadClass

      ClassInfo loadClass(String className) throws ClassNotFoundException
      Loads a class into BLOAT
      Throws:
      ClassNotFoundException
    • newClassInfo

      ClassInfo newClassInfo(int modifiers, int classIndex, int superClassIndex, int[] interfaceIndexes, List constants)
      Creates a new ClassInfo
      Parameters:
      modifiers - The modifiers describing the newly-created class
      classIndex - The index of the name of the newly-created class in its constant pool
      superClassIndex - The index of the name of the newly-created class's superclass in its constant pool
      interfaceIndexes - The indexes of the names of the interfaces that the newly-created class implements
      constants - The constant pool for the newly created class (a list of Constants).
    • getHierarchy

      ClassHierarchy getHierarchy()
      Returns the ClassHierarchy of all classes and interfaces known to BLOAT.
    • newClass

      ClassEditor newClass(int modifiers, String className, Type superType, Type[] interfaces)
      Returns a ClassEditor for editing a new class with the given name. It will override any class with the given name that is already being edited.
    • editClass

      Returns a ClassEditor used to edit a class of a given name.
      Throws:
      ClassNotFoundException
      ClassFormatException
    • editClass

      Returns a ClassEditor used to edit a class described by a given Type.
      Throws:
      ClassNotFoundException
      ClassFormatException
    • editClass

      ClassEditor editClass(ClassInfo info)
      Returns a ClassEditor used to edit a class described by a given ClassInfo.
    • editField

      FieldEditor editField(FieldInfo info)
      Returns a FieldEditor for editing a FieldInfo.
    • editField

      FieldEditor editField(MemberRef field) throws NoSuchFieldException
      Returns a FieldEditor for editing a field.
      Throws:
      NoSuchFieldException
    • editMethod

      MethodEditor editMethod(MethodInfo info)
      Returns a MethodEditor for editing a method.
    • editMethod

      MethodEditor editMethod(MemberRef method) throws NoSuchMethodException
      Returns a MethodEditor for editing a method.
      Throws:
      NoSuchMethodException
    • release

      void release(MethodInfo info)
      Signals that we are done editing a method. The object used to model it may be reclaimed.
    • release

      void release(FieldInfo info)
      Signals that we are done editing a field. The object used to model it may be reclaimed.
    • release

      void release(ClassInfo info)
      Signals that we are done editing a class. The object used to model it may be reclaimed.
    • commit

      void commit(ClassInfo info)
      Commits the changes made to a class.
    • commit

      void commit(MethodInfo info)
      Commits the changes made to a method.
    • commit

      void commit(FieldInfo info)
      Commits the changes made to a field.
    • commit

      void commit()
      Commits all changes made to classes, methods, and fields.