## net.sf.saxon.expr.instruct
Class TraceExpression

    java.lang.Object
      net.sf.saxon.expr.Expression
          net.sf.saxon.expr.instruct.Instruction
              net.sf.saxon.expr.instruct.TraceWrapper
                  net.sf.saxon.expr.instruct.TraceExpression

All Implemented Interfaces:
  Serializable, SourceLocator, LocationProvider, SaxonLocator, EvaluableItem, TailCallReturner, SequenceIterable, InstructionInfo, Locator

    public class TraceExpression

extends TraceWrapper
implements InstructionInfo

A subclass of TraceWrapper used to trace expressions in XPath and XQuery. Unlike the TraceInstruction class, this class contains all information needed for tracing, rather than referencing a separate InstructionDetails object.

See Also:
  Serialized Form

Field Summary

Fields inherited from class net.sf.saxon.expr.Expression
`EVALUATE_METHOD, EVENT_FEED_METHOD, ITEM_FEED_METHOD, ITERATE_METHOD, locationId, PROCESS_METHOD, PUSH_SELECTION, staticProperties, WATCH_METHOD`

Constructor Summary
`TraceExpression(Expression child)` Create a trace expression that traces execution of a given child expression

Method Summary
`Expression` `copy()` Copy an expression.
`int` `getColumnNumber()` Get the column number identifying the position of the instruction.
`int` `getColumnNumber(long locationId)` Get the column number within the document, entity, or module containing a particular location
`int` `getConstructType()` Get the construct type.
`InstructionInfo` `getInstructionInfo()` Get the InstructionInfo details about the construct.
`int` `getLineNumber()` Get the line number of the instruction within its module
`int` `getLineNumber(long locationId)` Get the line number of the expression being traced.
`NamespaceResolver` `getNamespaceResolver()` Get the namespace resolver to supply the namespace context of the instruction that is being traced
`StructuredQName` `getObjectName()` Get a name identifying the object of the expression, for example a function name, template name, variable name, key name, element name, etc.
`Iterator` `getProperties()` Get an iterator over all the properties available.
`Object` `getProperty(String name)` Get a named property of the instruction/expression
`String` `getSystemId()` Get the URI of the module containing the instruction
`String` `getSystemId(long locationId)` Get the system identifier (that is the base URI) of the static context of the expression being traced.
`void` `setColumnNumber(int column)` Set the column number of the expression being traced
`void` `setConstructType(int type)` Set the type of construct.
`void` `setLineNumber(int line)` Set the line number of the expression being traced
`void` `setNamespaceResolver(NamespaceResolver resolver)` Set the namespace context for the instruction being traced.
`void` `setObjectName(StructuredQName qName)` Set a name identifying the object of the expression, for example a function name, template name, variable name, key name, element name, etc.
`void` `setProperty(String name, Object value)` Set a named property of the instruction/expression
`void` `setSystemId(String systemId)` Set the URI of the module containing the instruction

Methods inherited from class net.sf.saxon.expr.instruct.TraceWrapper
`checkForUpdatingSubexpressions, computeDependencies, createsNewNodes, evaluateItem, evaluatePendingUpdates, explain, getCardinality, getDependencies, getImplementationMethod, getInstructionNameCode, getItemType, isUpdatingExpression, isVacuousExpression, iterate, iterateSubExpressions, optimize, processLeavingTail, promote, replaceSubExpression, simplify, typeCheck`

Methods inherited from class net.sf.saxon.expr.instruct.Instruction
`assembleParams, assembleTunnelParams, computeCardinality, computeSpecialProperties, dynamicError, evaluateAsString, getExpressionName, getInstructionName, getIteratorFromProcessMethod, getSourceLocator, isXSLT, process, promoteInst`

Methods inherited from class net.sf.saxon.expr.Expression

`addToPathMap, adoptChildExpression, checkPermittedContents, computeStaticProperties, doPromotion, dynamicError, effectiveBooleanValue, explain, getContainer, getEvaluationMethod, getExecutable, getHostLanguage, getIntrinsicDependencies, getLocationId, getLocationProvider, getPublicId, getSlotsUsed, getSpecialProperties, hasLoopingSubexpression, implementsStaticTypeCheck, isSubtreeExpression, iterateEvents, iterateSameFocusSubExpressions, markTailFunctionCalls, resetLocalStaticProperties, setContainer, setEvaluationMethod, setFiltered, setFlattened, setLocationId, staticTypeCheck, suppressValidation, toString, typeError`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

Methods inherited from interface org.xml.sax.Locator
`getPublicId`

Methods inherited from interface javax.xml.transform.SourceLocator
`getPublicId`

Constructor Detail

### TraceExpression

    public TraceExpression(Expression child)

  Create a trace expression that traces execution of a given child expression

  Parameters:
    `child` - the expression to be traced. This will be available to the TraceListener as the value of the "expression" property of the InstructionInfo.

Method Detail

### setLineNumber

    public void setLineNumber(int line)

  Set the line number of the expression being traced

  Parameters:
    `line` -

### setColumnNumber

    public void setColumnNumber(int column)

  Set the column number of the expression being traced

  Parameters:
    `column` -

### setConstructType

    public void setConstructType(int type)

  Set the type of construct. This will generally be a constant in class `Location`

### getConstructType

    public int getConstructType()

  Get the construct type. This will generally be a constant in class `Location`

  Specified by:
    `getConstructType` in interface `InstructionInfo`
  Overrides:
    `getConstructType` in class `Instruction`
  Returns:
    the type of expression, as enumerated in class `Location`

### setNamespaceResolver

    public void setNamespaceResolver(NamespaceResolver resolver)

  Set the namespace context for the instruction being traced. This is needed if the tracelistener wants to evaluate XPath expressions in the context of the current instruction

### getNamespaceResolver

    public NamespaceResolver getNamespaceResolver()

  Get the namespace resolver to supply the namespace context of the instruction that is being traced

### setSystemId

    public void setSystemId(String systemId)

  Set the URI of the module containing the instruction

  Parameters:
    `systemId` - the module's URI

### getSystemId

    public String getSystemId()

  Get the URI of the module containing the instruction

  Specified by:
    `getSystemId` in interface `SourceLocator`
  Specified by:
    `getSystemId` in interface `InstructionInfo`
  Specified by:
    `getSystemId` in interface `Locator`
  Overrides:
    `getSystemId` in class `Expression`
  Returns:
    the module's URI

### getLineNumber

    public int getLineNumber()

  Get the line number of the instruction within its module

  Specified by:
    `getLineNumber` in interface `SourceLocator`
  Specified by:
    `getLineNumber` in interface `InstructionInfo`
  Specified by:
    `getLineNumber` in interface `Locator`
  Overrides:
    `getLineNumber` in class `Expression`
  Returns:
    the line number

### setObjectName

    public void setObjectName(StructuredQName qName)

  Set a name identifying the object of the expression, for example a function name, template name, variable name, key name, element name, etc. This is used only where the name is known statically.

### getObjectName

    public StructuredQName getObjectName()

  Get a name identifying the object of the expression, for example a function name, template name, variable name, key name, element name, etc. This is used only where the name is known statically.

  Specified by:
    `getObjectName` in interface `InstructionInfo`
  Overrides:
    `getObjectName` in class `Expression`
  Returns:
    the QName of the object declared or manipulated by this instruction or expression

### setProperty

    public void setProperty(String name,
                            Object value)

  Set a named property of the instruction/expression

### getProperty

    public Object getProperty(String name)

  Get a named property of the instruction/expression

  Specified by:
    `getProperty` in interface `InstructionInfo`
  Overrides:
    `getProperty` in class `Expression`
  Parameters:
    `name` - The name of the required property
  Returns:
    The value of the requested property, or null if the property is not available

### getProperties

    public Iterator getProperties()

  Get an iterator over all the properties available. The values returned by the iterator will be of type String, and each string can be supplied as input to the getProperty() method to retrieve the value of the property.

  Specified by:
    `getProperties` in interface `InstructionInfo`
  Overrides:
    `getProperties` in class `Expression`
  Returns:
    an iterator over the properties.

### getColumnNumber

    public int getColumnNumber()

  Get the column number identifying the position of the instruction. This method is provided to satisfy the SourceLocator interface. However, the column number is not maintained by Saxon, and the method always returns -1

  Specified by:
    `getColumnNumber` in interface `SourceLocator`
  Specified by:
    `getColumnNumber` in interface `Locator`
  Overrides:
    `getColumnNumber` in class `Expression`
  Returns:
    -1

### getInstructionInfo

    public InstructionInfo getInstructionInfo()

  Get the InstructionInfo details about the construct. This is to satisfy the InstructionInfoProvider interface.

  Overrides:
    `getInstructionInfo` in class `TraceWrapper`
  Returns:
    the details of the child instruction (the instruction being traced)

### getSystemId

    public String getSystemId(long locationId)

  Get the system identifier (that is the base URI) of the static context of the expression being traced. This returns the same result as getSystemId(), it is provided to satisfy the `LocationProvider` interface.

  Specified by:
    `getSystemId` in interface `LocationProvider`
  Overrides:
    `getSystemId` in class `Expression`
  Parameters:
    `locationId` - not used
  Returns:
    the URI of the module containing the expression

### getLineNumber

    public int getLineNumber(long locationId)

  Get the line number of the expression being traced. This returns the same result as getLineNumber(), it is provided to satisfy the `LocationProvider` interface.

  Specified by:
    `getLineNumber` in interface `LocationProvider`
  Overrides:
    `getLineNumber` in class `Expression`
  Parameters:
    `locationId` - not used
  Returns:
    the line number of the expression within its module

### getColumnNumber

    public int getColumnNumber(long locationId)

  Description copied from interface: `LocationProvider`
  Get the column number within the document, entity, or module containing a particular location

  Specified by:
    `getColumnNumber` in interface `LocationProvider`
  Overrides:
    `getColumnNumber` in class `Expression`
  Parameters:
    `locationId` - identifier of the location in question (as passed down the Receiver pipeline)
  Returns:
    the column number within the document, entity, or module, or -1 if this is not available

### copy

    public Expression copy()

  Description copied from class: `TraceWrapper`
  Copy an expression. This makes a deep copy.

  Overrides:
    `copy` in class `TraceWrapper`
  Returns:
    the copy of the original expression

Copyright (c) 2004-2010 Saxonica Limited. All rights reserved.