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 }