blob: fc247dc902c45b24f2ef3844846c710a852d6ef3 [file] [log] [blame]
/* *******************************************************************
* Copyright (c) 2005 Contributors.
* All rights reserved.
* This program and the accompanying materials are made available
* under the terms of the Eclipse Public License v1.0
* which accompanies this distribution and is available at
* http://eclipse.org/legal/epl-v10.html
*
* Contributors:
* Adrian Colyer Initial implementation
* ******************************************************************/
package org.aspectj.weaver.tools;
/**
* Pointcut expression interface for pointcut
* expressions returned by a
* PointcutDesignatorHandler. Provides an additional
* matching method for matching based on context
* information over and above that normally used
* by AspectJ.
*
* @see MatchingContext
*
*/
public interface ContextBasedMatcher {
/**
* return true iff this matcher could ever match
* a join point in the given type
* @deprecated use couldMatchJoinPointsInType(Class,MatchingContext) instead
*/
boolean couldMatchJoinPointsInType(Class aClass);
/**
* return true iff this matcher could ever match
* a join point in the given type, may also use any
* match context information available
* @since 1.5.1
*/
boolean couldMatchJoinPointsInType(Class aClass, MatchingContext matchContext);
/**
* return true if matchesStatically can ever return
* FuzzyBoolean.MAYBE (necessitating a per-join point test
* to determine matching at a given join point).
*/
boolean mayNeedDynamicTest();
/**
* Return FuzzyBoolean.YES if a join point with the given
* matching context is always matched.
* Return FuzzyBoolean.NO if a join point with the given
* matching context is never matched.
* Return FuzzyBoolean.MAYBE if a match cannot be determined
* statically (whilst generating a ShadowMatch), and must
* be determined on a per-join point basis.
*/
FuzzyBoolean matchesStatically(MatchingContext matchContext);
/**
* Called during processing of ShadowMatch.matchesJoinPoint
* when matchesStatically returned FuzzyBoolean.MAYBE.
*/
boolean matchesDynamically(MatchingContext matchContext);
}