KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > codehaus > aspectwerkz > transform > Context


1 /**************************************************************************************
2  * Copyright (c) Jonas Bonér, Alexandre Vasseur. All rights reserved. *
3  * http://aspectwerkz.codehaus.org *
4  * ---------------------------------------------------------------------------------- *
5  * The software in this package is published under the terms of the LGPL license *
6  * a copy of which has been included with this distribution in the license.txt file. *
7  **************************************************************************************/

8 package org.codehaus.aspectwerkz.transform;
9
10 import org.objectweb.asm.Label;
11
12 import java.util.List JavaDoc;
13 import java.util.Set JavaDoc;
14
15 /**
16  * Interface for the different transformation context implementations. FIXME crap: abstract method on an interface.
17  * Refactor some in between if we are sure to keep the delegation model
18  *
19  * @author <a HREF="mailto:jboner@codehaus.org">Jonas Bonér </a>
20  */

21 public interface Context {
22
23     public String JavaDoc getClassName();
24
25     /**
26      * Sets the current bytecode.
27      *
28      * @param bytecode
29      */

30     public abstract void setCurrentBytecode(final byte[] bytecode);
31
32     /**
33      * Returns the initial bytecode.
34      *
35      * @return bytecode
36      */

37     public abstract byte[] getInitialBytecode();
38
39     /**
40      * Returns the current bytecode.
41      *
42      * @return bytecode
43      */

44     public abstract byte[] getCurrentBytecode();
45
46     /**
47      * Returns the class loader.
48      *
49      * @return the class loader
50      */

51     public abstract ClassLoader JavaDoc getLoader();
52
53     /**
54      * The definitions context (with hierarchical structure)
55      *
56      * @return
57      */

58     public abstract Set JavaDoc getDefinitions();
59
60     /**
61      * Marks the class being transformed as advised. The marker can at most be set once per class per transformer
62      */

63     public abstract void markAsAdvised();
64
65     /**
66      * Resets the isAdviced flag.
67      */

68     public abstract void resetAdvised();
69
70     /**
71      * Checks if the class being transformed has been advised.
72      * This should only be used after ALL actual transformations.
73      *
74      * @return boolean
75      */

76     public abstract boolean isAdvised();
77
78     /**
79      * Marks the context as read-only.
80      */

81     public abstract void markAsReadOnly();
82
83     /**
84      * Checks if the context is read-only.
85      *
86      * @return boolean
87      */

88     public abstract boolean isReadOnly();
89
90     /**
91      * Returns meta-data for the transformation.
92      *
93      * @param key the key
94      * @return the value
95      */

96     public abstract Object JavaDoc getMetaData(final Object JavaDoc key);
97
98     /**
99      * Adds new meta-data for the transformation.
100      *
101      * @param key the key
102      * @param value the value
103      */

104     public abstract void addMetaData(final Object JavaDoc key, final Object JavaDoc value);
105
106     /**
107      * Dump the class to specific directory.
108      *
109      * @param dir
110      */

111     public abstract void dump(String JavaDoc dir);
112
113     /**
114      * Tries to resolve the line number from the given label
115      *
116      * @param label
117      * @return
118      */

119     abstract int resolveLineNumberInfo(Label label);
120
121 }
Popular Tags