/**************************************************************************************
* Copyright (c) Jonas Bon�r, Alexandre Vasseur. All rights reserved. *
* http://aspectwerkz.codehaus.org *
* ---------------------------------------------------------------------------------- *
* The software in this package is published under the terms of the LGPL license *
* a copy of which has been included with this distribution in the license.txt file. *
**************************************************************************************/
package org.codehaus.aspectwerkz.intercept;
/**
* The advisable interface is introduced to target class made advisable.
* </p>
* Note: user should ensure that the target class has no user defined method named aw_addAdvice
* and aw_removeAdvice. Other methods are made synthetic and thus will not lead to name clashes.
*
* @author <a href="mailto:jboner@codehaus.org">Jonas Bon�r </a>
*/
public interface Advisable {
/**
* @param pointcut
* @param advice
*/
void aw_addAdvice(String pointcut, Advice advice);
/**
* @param pointcut
* @param adviceClass
*/
void aw_removeAdvice(String pointcut, Class adviceClass);
/**
* @param joinPointIndex
* @return
*/
AroundAdvice[] aw$getAroundAdvice(final int joinPointIndex);
/**
* @param joinPointIndex
* @return
*/
BeforeAdvice[] aw$getBeforeAdvice(final int joinPointIndex);
/**
* @param joinPointIndex
* @return
*/
AfterAdvice[] aw$getAfterAdvice(final int joinPointIndex);
/**
* @param joinPointIndex
* @return
*/
AfterReturningAdvice[] aw$getAfterReturningAdvice(final int joinPointIndex);
/**
* @param joinPointIndex
* @return
*/
AfterThrowingAdvice[] aw$getAfterThrowingAdvice(final int joinPointIndex);
}