All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.aspectj.weaver.tools.ContextBasedMatcher Maven / Gradle / Ivy

Go to download

The AspectJ matcher can be used for matching pointcuts independently of any AspectJ compilation or weaving steps. Most notably, this can be used by frameworks such as Spring AOP which utilise the @AspectJ pointcut syntax but implement aspect weaving in a way independent of AspectJ, e.g. using dynamic proxies.

There is a newer version: 1.9.22.1
Show newest version
/* *******************************************************************
 * Copyright (c) 2005 Contributors.
 * All rights reserved.
 * This program and the accompanying materials are made available
 * under the terms of the Eclipse Public License v 2.0
 * which accompanies this distribution and is available at
 * https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt
 *
 * 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);
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy