public abstract class Pointcut extends PatternNode
Creation -- SYMBOLIC -- then resolve(IScope) -- RESOLVED -- concretize(...) -- CONCRETE
Modifier and Type | Class and Description |
---|---|
static class |
Pointcut.State |
Modifier and Type | Field and Description |
---|---|
static byte |
AND |
static byte |
ANNOTATION |
static byte |
ARGS |
static byte |
ATARGS |
static byte |
ATTHIS_OR_TARGET |
static byte |
ATWITHIN |
static byte |
ATWITHINCODE |
static byte |
CFLOW |
static Pointcut.State |
CONCRETE |
static java.lang.String[] |
EMPTY_STRING_ARRAY |
static byte |
HANDLER |
protected boolean |
hasBeenParameterized |
static byte |
IF |
static byte |
IF_FALSE |
static byte |
IF_TRUE |
static byte |
KINDED |
protected int |
lastMatchedShadowId |
java.lang.String[] |
m_ignoreUnboundBindingForNames
ATAJ the name of the formal for which we don't want any warning when unbound since we consider them as implicitly bound.
|
static byte |
NONE |
static byte |
NOT |
static byte |
OR |
protected byte |
pointcutKind |
static byte |
REFERENCE |
static Pointcut.State |
RESOLVED |
Pointcut.State |
state |
static Pointcut.State |
SYMBOLIC |
static byte |
THIS_OR_TARGET |
static byte |
USER_EXTENSION |
static byte |
WITHIN |
static byte |
WITHINCODE |
end, sourceContext, start
Constructor and Description |
---|
Pointcut()
Constructor for Pattern.
|
Modifier and Type | Method and Description |
---|---|
void |
assertState(Pointcut.State state) |
void |
check(ISourceContext ctx,
World world) |
Pointcut |
concretize(ResolvedType inAspect,
ResolvedType declaringType,
int arity)
Returns a new pointcut Only used by test cases
|
Pointcut |
concretize(ResolvedType inAspect,
ResolvedType declaringType,
IntMap bindings) |
Pointcut |
concretize(ResolvedType inAspect,
ResolvedType declaringType,
int arity,
ShadowMunger advice) |
protected abstract Pointcut |
concretize1(ResolvedType inAspect,
ResolvedType declaringType,
IntMap bindings)
Resolves and removes ReferencePointcuts, replacing with basic ones
|
abstract int |
couldMatchKinds()
The set of ShadowKinds that this Pointcut could possibly match - an int whose bits are set according to the Kinds specified
in Shadow.java
|
abstract FuzzyBoolean |
fastMatch(FastMatchInfo info)
Could I match any shadows in the code defined within this type?
|
Test |
findResidue(Shadow shadow,
ExposedState state)
This can be called from NotPointcut even for Pointcuts that don't match the shadow
|
protected abstract Test |
findResidueInternal(Shadow shadow,
ExposedState state) |
static Pointcut |
fromString(java.lang.String str) |
byte |
getPointcutKind() |
java.lang.String[] |
getTypeVariablesInScope() |
boolean |
isDeclare(ShadowMunger munger) |
static Pointcut |
makeMatchesNothing(Pointcut.State state) |
FuzzyBoolean |
match(Shadow shadow)
Do I really match this shadow? XXX implementors need to handle state
|
protected abstract FuzzyBoolean |
matchInternal(Shadow shadow) |
abstract Pointcut |
parameterizeWith(java.util.Map<java.lang.String,UnresolvedType> typeVariableMap,
World w) |
void |
postRead(ResolvedType enclosingType) |
static Pointcut |
read(VersionedDataInputStream s,
ISourceContext context) |
Pointcut |
resolve(IScope scope)
Returns this pointcut mutated
|
protected abstract void |
resolveBindings(IScope scope,
Bindings bindings) |
void |
setTypeVariablesInScope(java.lang.String[] typeVars) |
protected boolean |
shouldCopyLocationForConcretize() |
accept, copyLocationFrom, getEnd, getFileName, getSourceContext, getSourceLocation, getStart, readLocation, setLocation, traverse, write, writeLocation
public java.lang.String[] m_ignoreUnboundBindingForNames
public static final java.lang.String[] EMPTY_STRING_ARRAY
public static final Pointcut.State SYMBOLIC
public static final Pointcut.State RESOLVED
public static final Pointcut.State CONCRETE
protected byte pointcutKind
public Pointcut.State state
protected int lastMatchedShadowId
protected boolean hasBeenParameterized
public static final byte KINDED
public static final byte WITHIN
public static final byte THIS_OR_TARGET
public static final byte ARGS
public static final byte AND
public static final byte OR
public static final byte NOT
public static final byte REFERENCE
public static final byte IF
public static final byte CFLOW
public static final byte WITHINCODE
public static final byte HANDLER
public static final byte IF_TRUE
public static final byte IF_FALSE
public static final byte ANNOTATION
public static final byte ATWITHIN
public static final byte ATWITHINCODE
public static final byte ATTHIS_OR_TARGET
public static final byte NONE
public static final byte ATARGS
public static final byte USER_EXTENSION
public abstract FuzzyBoolean fastMatch(FastMatchInfo info)
public abstract int couldMatchKinds()
public java.lang.String[] getTypeVariablesInScope()
public void setTypeVariablesInScope(java.lang.String[] typeVars)
public final FuzzyBoolean match(Shadow shadow)
protected abstract FuzzyBoolean matchInternal(Shadow shadow)
public byte getPointcutKind()
public final Pointcut concretize(ResolvedType inAspect, ResolvedType declaringType, int arity)
public final Pointcut concretize(ResolvedType inAspect, ResolvedType declaringType, int arity, ShadowMunger advice)
public boolean isDeclare(ShadowMunger munger)
public final Pointcut concretize(ResolvedType inAspect, ResolvedType declaringType, IntMap bindings)
protected boolean shouldCopyLocationForConcretize()
protected abstract Pointcut concretize1(ResolvedType inAspect, ResolvedType declaringType, IntMap bindings)
inAspect
- the aspect to resolve relative tobindings
- a Map from formal index in the current lexical context -> formal index in the concrete advice that will run
This must always return a new Pointcut object (even if the concretized Pointcut is identical to the resolved one).
That behavior is assumed in many places. XXX fix implementors to handle statepublic final Test findResidue(Shadow shadow, ExposedState state)
protected abstract Test findResidueInternal(Shadow shadow, ExposedState state)
public void postRead(ResolvedType enclosingType)
public static Pointcut read(VersionedDataInputStream s, ISourceContext context) throws java.io.IOException
java.io.IOException
public void check(ISourceContext ctx, World world)
public static Pointcut fromString(java.lang.String str)
public static Pointcut makeMatchesNothing(Pointcut.State state)
public void assertState(Pointcut.State state)
public abstract Pointcut parameterizeWith(java.util.Map<java.lang.String,UnresolvedType> typeVariableMap, World w)