net.sf.saxon.expr.instruct
Class TraceExpression

java.lang.Object
  extended by net.sf.saxon.expr.Expression
      extended by net.sf.saxon.expr.instruct.Instruction
          extended by net.sf.saxon.expr.instruct.TraceWrapper
              extended by 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.