abc.ra.ast
Class RANodeFactory_c

java.lang.Object
  extended by soot.javaToJimple.jj.ast.JjNodeFactory_c
      extended by abc.aspectj.ast.AJNodeFactory_c
          extended by abc.eaj.ast.EAJNodeFactory_c
              extended by abc.tm.ast.TMNodeFactory_c
                  extended by abc.ra.ast.RANodeFactory_c
All Implemented Interfaces:
AJNodeFactory, EAJNodeFactory, RANodeFactory, TMNodeFactory

public class RANodeFactory_c
extends TMNodeFactory_c
implements RANodeFactory

Node factory for relational aspects extension.

Author:
Eric Bodden

Constructor Summary
RANodeFactory_c()
           
 
Method Summary
 AdviceDecl AdviceDecl(Position pos, Flags flags, AdviceSpec spec, java.util.List throwTypes, Pointcut pc, Block body)
          Returns a RelAdviceDecl if the relational modifier is set or an AdviceDecl otherwise.
 SymbolDecl AdviceSymbolDeclaration(Position pos, java.lang.String name, SymbolKind kind, Pointcut pc, boolean giveWarning)
          Generates a special SymbolDecl that gives the warning that the advice never matches, in case the synbol never matches.
 SymbolDecl AssociateSymbolDecl(Position pos, java.lang.String name, java.lang.String tracematch_name, boolean bindAspectInstanceInReturn, RelAspectDecl container)
          Returns an associate-symbol declaration.
 AdviceDecl CustomWarningPerSymbolAdviceDecl(Position position, Flags flags, AdviceSpec spec, java.util.List tlist, Pointcut pc, Block body, java.lang.String tm_id, SymbolDecl sym, Position tm_pos, int warningType)
          Returns an advice declaration which issues custom warnings in case it never matches.
 RelAspectDecl RelAspectDecl(Position pos, boolean is_privileged, Flags flags, java.lang.String name, TypeNode superClass, java.util.List interfaces, java.util.List formals, AspectBody body)
          Returns a new relational aspect declaration.
 RelationalAround RelationalAround(Position pos, TypeNode returnType, java.util.List formals, java.util.List proceedIdentifiers)
          Creates a relational around advice.
 SymbolDecl ReleaseSymbolDecl(Position pos, java.lang.String name, java.lang.String tracematch_name, RelAspectDecl container)
          Returns a release-symbol declaration.
 SymbolDecl StartSymbolDecl(Position pos, java.lang.String name)
          Returns a symbol representing program start.
 TMDecl TMDecl(Position pos, Position body_pos, TMModsAndType mods_and_type, java.lang.String tracematch_name, java.util.List formals, java.util.List throwTypes, java.util.List symbols, java.util.List freqent_symbols, Regex regex, Block body)
          Returns a RelTMDecl if the relational modifier is set or a TMDecl otherwise.
 
Methods inherited from class abc.tm.ast.TMNodeFactory_c
AfterReturningSymbol, AfterReturningSymbol, AfterSymbol, AfterThrowingSymbol, AfterThrowingSymbol, AroundSymbol, BeforeSymbol, ClosedPointcut, Local, PerEventAdviceDecl, PerSymbolAdviceDecl, RegexAlternation, RegexConjunction, RegexCount, RegexPlus, RegexSkipSeq, RegexStar, RegexSymbol, SymbolDecl, TMModsAndType
 
Methods inherited from class abc.eaj.ast.EAJNodeFactory_c
GlobalPointcutDecl, PCArrayGet, PCArraySet, PCCast, PCCflowBelowDepth, PCCflowDepth, PCContains, PCLet, PCLocalVars, PCLock, PCThrow, PCUnlock
 
Methods inherited from class abc.aspectj.ast.AJNodeFactory_c
AdviceFormal, After, AfterReturning, AfterThrowing, AmbAssign, AmbExpr, AmbTypeOrLocal, ArgDotDot, ArgStar, Around, ArrayAccessAssign, AspectBody, AspectDecl, Before, Call, CharLit, ClassBody, ClassDecl, ClassTypeDotId, ClassTypeDotNew, constructClassnamePatternFromTypePattern, ConstructorCall, ConstructorDecl, ConstructorPattern, CPEBinary, CPEName, CPENot, CPESubName, CPEUniversal, DeclareError, DeclareParents, DeclarePrecedence, DeclareSoft, DeclareWarning, delFactory, disamb, DotDotFormalPattern, DotDotNamePattern, DotNamePattern, extFactory, Field, FieldAssign, FieldPattern, hostConstructorCall, hostSpecial, IntertypeConstructorDecl, IntertypeFieldDecl, IntertypeMethodDecl, IsSingleton, LocalAssign, MethodDecl, MethodPattern, ModifierPattern, New, PCAdviceExecution, PCArgs, PCBinary, PCCall, PCCflow, PCCflowBelow, PCEmpty, PCExecution, PCGet, PCHandler, PCIf, PCInitialization, PCName, PCNot, PCPreinitialization, PCSet, PCStaticInitialization, PCTarget, PCThis, PCWithin, PCWithinCode, PerCflow, PerCflowBelow, PerTarget, PerThis, PointcutDecl, ProceedCall, RTPName, RTPSubName, SimpleNamePattern, Special, ThrowsPattern, TPEArray, TPEBinary, TPENot, TPERefTypePat, TPEType, TPEUniversal, TypeFormalPattern, Unary
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface abc.tm.ast.TMNodeFactory
AfterReturningSymbol, AfterReturningSymbol, AfterSymbol, AfterThrowingSymbol, AfterThrowingSymbol, AroundSymbol, BeforeSymbol, ClosedPointcut, PerEventAdviceDecl, PerSymbolAdviceDecl, RegexAlternation, RegexConjunction, RegexCount, RegexPlus, RegexSkipSeq, RegexStar, RegexSymbol, SymbolDecl, TMModsAndType
 
Methods inherited from interface abc.eaj.ast.EAJNodeFactory
GlobalPointcutDecl, PCArrayGet, PCArraySet, PCCast, PCCflowBelowDepth, PCCflowDepth, PCContains, PCLet, PCLocalVars, PCLock, PCThrow, PCUnlock
 
Methods inherited from interface abc.aspectj.ast.AJNodeFactory
AdviceFormal, After, AfterReturning, AfterThrowing, AmbExpr, AmbTypeOrLocal, ArgDotDot, ArgStar, Around, AspectBody, AspectDecl, Before, CharLit, ClassTypeDotId, ClassTypeDotNew, constructClassnamePatternFromTypePattern, ConstructorPattern, CPEBinary, CPEName, CPENot, CPESubName, CPEUniversal, DeclareError, DeclareParents, DeclarePrecedence, DeclareSoft, DeclareWarning, DotDotFormalPattern, DotDotNamePattern, DotNamePattern, Field, FieldPattern, hostConstructorCall, hostSpecial, IntertypeConstructorDecl, IntertypeFieldDecl, IntertypeMethodDecl, IsSingleton, MethodPattern, ModifierPattern, PCAdviceExecution, PCArgs, PCBinary, PCCall, PCCflow, PCCflowBelow, PCEmpty, PCExecution, PCGet, PCHandler, PCIf, PCInitialization, PCName, PCNot, PCPreinitialization, PCSet, PCStaticInitialization, PCTarget, PCThis, PCWithin, PCWithinCode, PerCflow, PerCflowBelow, PerTarget, PerThis, PointcutDecl, ProceedCall, RTPName, RTPSubName, SimpleNamePattern, ThrowsPattern, TPEArray, TPEBinary, TPENot, TPERefTypePat, TPEType, TPEUniversal, TypeFormalPattern
 

Constructor Detail

RANodeFactory_c

public RANodeFactory_c()
Method Detail

RelAspectDecl

public RelAspectDecl RelAspectDecl(Position pos,
                                   boolean is_privileged,
                                   Flags flags,
                                   java.lang.String name,
                                   TypeNode superClass,
                                   java.util.List interfaces,
                                   java.util.List formals,
                                   AspectBody body)
Returns a new relational aspect declaration.

Specified by:
RelAspectDecl in interface RANodeFactory
formals - relational aspect formals
See Also:
AJNodeFactory.AspectDecl(Position, boolean, Flags, String, TypeNode, List, abc.aspectj.ast.PerClause, AspectBody)

AdviceDecl

public AdviceDecl AdviceDecl(Position pos,
                             Flags flags,
                             AdviceSpec spec,
                             java.util.List throwTypes,
                             Pointcut pc,
                             Block body)
Returns a RelAdviceDecl if the relational modifier is set or an AdviceDecl otherwise.

Specified by:
AdviceDecl in interface AJNodeFactory
Overrides:
AdviceDecl in class EAJNodeFactory_c

TMDecl

public TMDecl TMDecl(Position pos,
                     Position body_pos,
                     TMModsAndType mods_and_type,
                     java.lang.String tracematch_name,
                     java.util.List formals,
                     java.util.List throwTypes,
                     java.util.List symbols,
                     java.util.List freqent_symbols,
                     Regex regex,
                     Block body)
Returns a RelTMDecl if the relational modifier is set or a TMDecl otherwise.

Specified by:
TMDecl in interface TMNodeFactory
Overrides:
TMDecl in class TMNodeFactory_c

AssociateSymbolDecl

public SymbolDecl AssociateSymbolDecl(Position pos,
                                      java.lang.String name,
                                      java.lang.String tracematch_name,
                                      boolean bindAspectInstanceInReturn,
                                      RelAspectDecl container)
Returns an associate-symbol declaration.

Specified by:
AssociateSymbolDecl in interface RANodeFactory
Parameters:
pos - position in code
name - name of the symbol, should most often be associate
tracematch_name - name of surrounding tracematch
bindAspectInstanceInReturn - is true, the newly created advice instance is boudn via after-returning
container - declaration of containing relational aspect

ReleaseSymbolDecl

public SymbolDecl ReleaseSymbolDecl(Position pos,
                                    java.lang.String name,
                                    java.lang.String tracematch_name,
                                    RelAspectDecl container)
Returns a release-symbol declaration.

Specified by:
ReleaseSymbolDecl in interface RANodeFactory
Parameters:
pos - position in code
name - name of the symbol, should most often be release
tracematch_name - name of surrounding tracematch
container - declaration of containing relational aspect

StartSymbolDecl

public SymbolDecl StartSymbolDecl(Position pos,
                                  java.lang.String name)
Returns a symbol representing program start. It is established via before execution(* *.main(String[])).

Specified by:
StartSymbolDecl in interface RANodeFactory
Parameters:
pos - position in the code
name - name of the symbol

CustomWarningPerSymbolAdviceDecl

public AdviceDecl CustomWarningPerSymbolAdviceDecl(Position position,
                                                   Flags flags,
                                                   AdviceSpec spec,
                                                   java.util.List tlist,
                                                   Pointcut pc,
                                                   Block body,
                                                   java.lang.String tm_id,
                                                   SymbolDecl sym,
                                                   Position tm_pos,
                                                   int warningType)
Returns an advice declaration which issues custom warnings in case it never matches.

Specified by:
CustomWarningPerSymbolAdviceDecl in interface RANodeFactory
warningType - see CustomWarningPerSymbolAdviceDecl
See Also:
AJNodeFactory.AdviceDecl(Position, Flags, AdviceSpec, List, Pointcut, Block)

AdviceSymbolDeclaration

public SymbolDecl AdviceSymbolDeclaration(Position pos,
                                          java.lang.String name,
                                          SymbolKind kind,
                                          Pointcut pc,
                                          boolean giveWarning)
Generates a special SymbolDecl that gives the warning that the advice never matches, in case the synbol never matches.

Specified by:
AdviceSymbolDeclaration in interface RANodeFactory
See Also:
TMNodeFactory.SymbolDecl(Position, String, SymbolKind, Pointcut)

RelationalAround

public RelationalAround RelationalAround(Position pos,
                                         TypeNode returnType,
                                         java.util.List formals,
                                         java.util.List proceedIdentifiers)
Creates a relational around advice. In addition to its normal formal parameters, it can have a list of proceed-variables in the header.

Specified by:
RelationalAround in interface RANodeFactory