Class TraceCodeInjector

  • All Implemented Interfaces:
    CodeInjector
    Direct Known Subclasses:
    TimingCodeInjector, XSLTTraceCodeInjector

    public class TraceCodeInjector
    extends java.lang.Object
    implements CodeInjector
    A code injector that wraps every expression (other than a literal) in a TraceExpression, which causes a TraceListener to be notified when the expression is evaluated
    • Constructor Detail

      • TraceCodeInjector

        public TraceCodeInjector()
    • Method Detail

      • inject

        public Expression inject​(Expression exp,
                                 StaticContext env,
                                 int construct,
                                 StructuredQName qName)
        If tracing, wrap an expression in a trace instruction
        Specified by:
        inject in interface CodeInjector
        Parameters:
        exp - the expression to be wrapped
        env - the static context
        construct - integer constant identifying the kind of construct
        qName - the name of the construct (if applicable)
        Returns:
        the expression that does the tracing
      • injectClause

        public Clause injectClause​(Clause target,
                                   StaticContext env,
                                   Container container)
        If tracing, add a clause to a FLWOR expression that can be used to monitor requests for tuples to be processed
        Specified by:
        injectClause in interface CodeInjector
        Parameters:
        target - the clause whose evaluation is to be traced (or otherwise monitored)
        env -
        container - the container of the containing FLWORExpression @return the new clause to do the tracing; or null if no tracing is required at this point