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 java.util.Hashtable;
11
12 /***
13 * Interface that all the weaving strategy implementations must implement.
14 *
15 * @author <a href="mailto:jboner@codehaus.org">Jonas Bonér </a>
16 */
17 public interface WeavingStrategy {
18
19 /***
20 * Defines the inlining weaving strategy.
21 */
22 public static final int INLINING = 0;
23
24 /***
25 * Defines the delegation weaving strategy.
26 */
27 public static final int DELEGATION = 1;
28
29 /***
30 * Initializes the transformer stack.
31 *
32 * @param params
33 */
34 public abstract void initialize(final Hashtable params);
35
36 /***
37 * @param className
38 * @param klass
39 * @param context
40 * @return
41 */
42 public abstract void transform(final String className, final Context context);
43
44 /***
45 * Creates a new transformation context.
46 *
47 * @param name
48 * @param bytecode
49 * @param loader
50 * @return
51 */
52 public abstract Context newContext(final String name, final byte[] bytecode, final ClassLoader loader);
53 }