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.aspect;
9
10
11 import org.codehaus.aspectwerkz.AspectContext;
12
13 /***
14 * Interface for that all aspect container implementations must implement.
15 *
16 * @author <a href="mailto:jboner@codehaus.org">Jonas BonŽr </a>
17 */
18 public interface AspectContainer {
19
20 /***
21 * Creates a new perJVM cross-cutting instance, if it already exists then return it.
22 *
23 * @return the cross-cutting instance
24 */
25 Object aspectOf();
26
27 /***
28 * Creates a new perClass cross-cutting instance, if it already exists then return it.
29 *
30 * @param klass
31 * @return the cross-cutting instance
32 */
33 Object aspectOf(Class klass);
34
35 /***
36 * Creates a new perInstance cross-cutting instance, if it already exists then return it.
37 *
38 * @param instance
39 * @return the cross-cutting instance
40 */
41 Object aspectOf(Object instance);
42
43 /***
44 * Creates a new perThread cross-cutting instance, if it already exists then return it.
45 *
46 * @param thread the thread for the aspect
47 * @return the cross-cutting instance
48 */
49 Object aspectOf(Thread thread);
50
51 /***
52 * Returns the context.
53 *
54 * @return the context
55 */
56 AspectContext getContext();
57 }