KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > quilt > cover > stmt > MethodAction


1 /* MethodAction.java */
2 package org.quilt.cover.stmt;
3
4 import org.apache.bcel.generic.*;
5
6 /**
7  * <p>Process a MethodGen method before and after graph creation and
8  * manipulation. A QuiltClassLoader can have any number of such
9  * pre/post-processors. The preprocessors will be applied in order
10  * before graph generation and then the postprocessors will be
11  * applied in reverse order after graph manipulation is complete.</p>
12  *
13  * <p>If any fatal errors occur, transformers must issue a warning
14  * message on System.err and either undo any changes or set method
15  * to null.</p>
16  *
17  * @author <a HREF="mailto:jddixon@users.sourceforge.net">Jim Dixon</a>
18  */

19 public class MethodAction implements org.quilt.cl.MethodXformer {
20
21     /** Coverage registry. */
22     private static StmtRegistry stmtReg;
23     
24     /** Name of processor for use in reports. */
25     private static String JavaDoc name_ = null;
26   
27     private ClassGen clazz_ = null;
28     private MethodGen method_ = null;
29     private InstructionList ilist_ = null;
30
31     public MethodAction () {
32     }
33     public MethodAction(StmtRegistry reg) {
34         stmtReg = reg;
35         setName(this.getClass().getName());
36     }
37    
38     private void dumpIList() {
39         ilist_ = method_.getInstructionList();
40         if (ilist_ != null) {
41             int i = 0;
42             for (InstructionHandle ih = ilist_.getStart(); ih != null;
43                                                     ih = ih.getNext() ) {
44                 System.out.println(" " + (i++) + " " + ih.getInstruction());
45             }
46         }
47     }
48     /**
49      * Apply processing to method before graph is generated.
50      */

51     public void preGraph( ClassGen clazz, MethodGen method) {
52         clazz_ = clazz;
53         method_ = method;
54     }
55     /**
56      * Process method after graph generation and manipulation is
57      * complete.
58      */

59     public void postGraph( ClassGen clazz, MethodGen method) {
60         clazz_ = clazz;
61         method_ = method;
62     }
63
64     // XFORMER INTERFACE ////////////////////////////////////////////
65
/** Get the report name for method processor. */
66     public String JavaDoc getName () {
67         return name_;
68     }
69     /** Assign a name to the method processor. */
70     public void setName (String JavaDoc name) {
71         name_ = name;
72     }
73 }
74
Popular Tags