SandMark version 2.0


sandmark.util
Class Editor

java.lang.Object
  |
  +--sandmark.util.Editor
All Implemented Interfaces:
EDU.purdue.cs.bloat.editor.EditorContext

public class Editor
extends java.lang.Object
implements EDU.purdue.cs.bloat.editor.EditorContext

An Editor is used to edit a number of classes, namely their class information, methods, and fields. Consequently, it manages and delegates a number of its responsibilities to ClassEditor, FieldEditor, and MethodEditor objects.

Various methods are provided to obtain editing objects from reflection objects. When editing is complete, classes, fields, and methods are "committed": changes made to the class/field/method are written back to where they came from.

Author:
Nate Nystrom

Field Summary
(package private)  java.util.Map classCache
           
(package private)  java.util.Collection classes
           
(package private)  java.util.Map classRC
           
static boolean DEBUG
           
(package private)  java.util.Map fieldCache
           
(package private)  java.util.Map fieldRC
           
(package private)  EDU.purdue.cs.bloat.editor.ClassHierarchy hier
           
(package private)  EDU.purdue.cs.bloat.reflect.ClassInfoLoader loader
           
(package private)  java.util.Map methodCache
           
(package private)  java.util.Map methodRC
           
 
Constructor Summary
Editor(EDU.purdue.cs.bloat.reflect.ClassInfoLoader loader, java.util.Collection classes)
          Constructor.
 
Method Summary
 void commit()
          Commit any changes to all classes in the cache.
 void commit(EDU.purdue.cs.bloat.reflect.ClassInfo info)
          Commits changes made to a class.
 void commit(EDU.purdue.cs.bloat.reflect.FieldInfo info)
           
 void commit(EDU.purdue.cs.bloat.reflect.MethodInfo info)
           
 EDU.purdue.cs.bloat.editor.ClassEditor editClass(EDU.purdue.cs.bloat.reflect.ClassInfo info)
          Obtains the ClassEditor corresponding to a given ClassInfo object.
 EDU.purdue.cs.bloat.editor.ClassEditor editClass(java.lang.String name)
           
 EDU.purdue.cs.bloat.editor.ClassEditor editClass(EDU.purdue.cs.bloat.editor.Type name)
          Obtains the ClassEditor for a class of a given name.
 EDU.purdue.cs.bloat.editor.FieldEditor editField(EDU.purdue.cs.bloat.reflect.FieldInfo info)
          Obtains the FieldEditor corresponding to a given FieldInfo
 EDU.purdue.cs.bloat.editor.FieldEditor editField(EDU.purdue.cs.bloat.editor.MemberRef field)
           
 EDU.purdue.cs.bloat.editor.MethodEditor editMethod(EDU.purdue.cs.bloat.editor.MemberRef method)
           
 EDU.purdue.cs.bloat.editor.MethodEditor editMethod(EDU.purdue.cs.bloat.reflect.MethodInfo info)
           
 EDU.purdue.cs.bloat.editor.ClassHierarchy getHierarchy()
          Returns the ClassHierarchy for all of the classes that this Editor knows about.
 EDU.purdue.cs.bloat.reflect.ClassInfo loadClass(java.lang.String name)
           
 EDU.purdue.cs.bloat.editor.ClassEditor newClass(int modifiers, java.lang.String className, EDU.purdue.cs.bloat.editor.Type superType, EDU.purdue.cs.bloat.editor.Type[] interfaces)
           
 EDU.purdue.cs.bloat.reflect.ClassInfo newClassInfo(int m, int classIndex, int superClassIndex, int[] interfaceIndexes, java.util.List constants)
           
 void release(EDU.purdue.cs.bloat.reflect.ClassInfo info)
           
 void release(EDU.purdue.cs.bloat.reflect.FieldInfo info)
           
 void release(EDU.purdue.cs.bloat.reflect.MethodInfo info)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

DEBUG

public static boolean DEBUG

loader

EDU.purdue.cs.bloat.reflect.ClassInfoLoader loader

hier

EDU.purdue.cs.bloat.editor.ClassHierarchy hier

classes

java.util.Collection classes

classCache

java.util.Map classCache

methodCache

java.util.Map methodCache

fieldCache

java.util.Map fieldCache

classRC

java.util.Map classRC

methodRC

java.util.Map methodRC

fieldRC

java.util.Map fieldRC
Constructor Detail

Editor

public Editor(EDU.purdue.cs.bloat.reflect.ClassInfoLoader loader,
              java.util.Collection classes)
Constructor.

Parameters:
loader - The ClassInfoLoader to use to load classes.
classes - The names of the classes to load.
Method Detail

commit

public void commit(EDU.purdue.cs.bloat.reflect.ClassInfo info)
Commits changes made to a class.

Specified by:
commit in interface EDU.purdue.cs.bloat.editor.EditorContext

commit

public void commit()
Commit any changes to all classes in the cache.

Specified by:
commit in interface EDU.purdue.cs.bloat.editor.EditorContext

commit

public void commit(EDU.purdue.cs.bloat.reflect.MethodInfo info)
Specified by:
commit in interface EDU.purdue.cs.bloat.editor.EditorContext

commit

public void commit(EDU.purdue.cs.bloat.reflect.FieldInfo info)
Specified by:
commit in interface EDU.purdue.cs.bloat.editor.EditorContext

editClass

public EDU.purdue.cs.bloat.editor.ClassEditor editClass(EDU.purdue.cs.bloat.reflect.ClassInfo info)
Obtains the ClassEditor corresponding to a given ClassInfo object.

Specified by:
editClass in interface EDU.purdue.cs.bloat.editor.EditorContext

editClass

public EDU.purdue.cs.bloat.editor.ClassEditor editClass(EDU.purdue.cs.bloat.editor.Type name)
                                                 throws java.lang.ClassNotFoundException,
                                                        EDU.purdue.cs.bloat.reflect.ClassFormatException
Obtains the ClassEditor for a class of a given name.

Specified by:
editClass in interface EDU.purdue.cs.bloat.editor.EditorContext
java.lang.ClassNotFoundException
EDU.purdue.cs.bloat.reflect.ClassFormatException

editClass

public EDU.purdue.cs.bloat.editor.ClassEditor editClass(java.lang.String name)
                                                 throws java.lang.ClassNotFoundException,
                                                        EDU.purdue.cs.bloat.reflect.ClassFormatException
Specified by:
editClass in interface EDU.purdue.cs.bloat.editor.EditorContext
java.lang.ClassNotFoundException
EDU.purdue.cs.bloat.reflect.ClassFormatException

editField

public EDU.purdue.cs.bloat.editor.FieldEditor editField(EDU.purdue.cs.bloat.reflect.FieldInfo info)
Obtains the FieldEditor corresponding to a given FieldInfo

Specified by:
editField in interface EDU.purdue.cs.bloat.editor.EditorContext

editField

public EDU.purdue.cs.bloat.editor.FieldEditor editField(EDU.purdue.cs.bloat.editor.MemberRef field)
                                                 throws java.lang.NoSuchFieldException
Specified by:
editField in interface EDU.purdue.cs.bloat.editor.EditorContext
java.lang.NoSuchFieldException

editMethod

public EDU.purdue.cs.bloat.editor.MethodEditor editMethod(EDU.purdue.cs.bloat.reflect.MethodInfo info)
Specified by:
editMethod in interface EDU.purdue.cs.bloat.editor.EditorContext

editMethod

public EDU.purdue.cs.bloat.editor.MethodEditor editMethod(EDU.purdue.cs.bloat.editor.MemberRef method)
                                                   throws java.lang.NoSuchMethodException
Specified by:
editMethod in interface EDU.purdue.cs.bloat.editor.EditorContext
java.lang.NoSuchMethodException

getHierarchy

public EDU.purdue.cs.bloat.editor.ClassHierarchy getHierarchy()
Returns the ClassHierarchy for all of the classes that this Editor knows about.

Specified by:
getHierarchy in interface EDU.purdue.cs.bloat.editor.EditorContext

loadClass

public EDU.purdue.cs.bloat.reflect.ClassInfo loadClass(java.lang.String name)
Specified by:
loadClass in interface EDU.purdue.cs.bloat.editor.EditorContext

newClass

public EDU.purdue.cs.bloat.editor.ClassEditor newClass(int modifiers,
                                                       java.lang.String className,
                                                       EDU.purdue.cs.bloat.editor.Type superType,
                                                       EDU.purdue.cs.bloat.editor.Type[] interfaces)
Specified by:
newClass in interface EDU.purdue.cs.bloat.editor.EditorContext

newClassInfo

public EDU.purdue.cs.bloat.reflect.ClassInfo newClassInfo(int m,
                                                          int classIndex,
                                                          int superClassIndex,
                                                          int[] interfaceIndexes,
                                                          java.util.List constants)
Specified by:
newClassInfo in interface EDU.purdue.cs.bloat.editor.EditorContext

release

public void release(EDU.purdue.cs.bloat.reflect.MethodInfo info)
Specified by:
release in interface EDU.purdue.cs.bloat.editor.EditorContext

release

public void release(EDU.purdue.cs.bloat.reflect.FieldInfo info)
Specified by:
release in interface EDU.purdue.cs.bloat.editor.EditorContext

release

public void release(EDU.purdue.cs.bloat.reflect.ClassInfo info)
Specified by:
release in interface EDU.purdue.cs.bloat.editor.EditorContext

SandMark version 2.0

Mon Jun 17 12:30:47 MST 2002