Search in sources :

Example 1 with ValueRepresentation

use of net.sf.saxon.om.ValueRepresentation in project intellij-community by JetBrains.

the class Saxon9StyleFrame method collectVariables.

private ArrayList<Debugger.Variable> collectVariables() {
    final ArrayList<Debugger.Variable> variables = new ArrayList<Debugger.Variable>();
    final HashMap<StructuredQName, GlobalVariable> globalVariables = myXPathContext.getController().getExecutable().getCompiledGlobalVariables();
    if (globalVariables != null) {
        for (StructuredQName name : globalVariables.keySet()) {
            final GlobalVariable globalVariable = globalVariables.get(name);
            final Value value = createVariableValue(new GlobalVariableFacade(globalVariable));
            final int lineNumber = globalVariable.getLineNumber();
            final String systemId = globalVariable.getSourceLocator().getSystemId();
            variables.add(new VariableImpl(globalVariable.getVariableQName().getDisplayName(), value, true, Debugger.Variable.Kind.VARIABLE, systemId, lineNumber));
        }
    }
    XPathContext context = myXPathContext;
    while (context != null) {
        final StackFrame frame = context.getStackFrame();
        final SlotManager map = frame.getStackFrameMap();
        final ValueRepresentation[] values = frame.getStackFrameValues();
        outer: for (int i = 0, valuesLength = values.length; i < valuesLength; i++) {
            final ValueRepresentation value = values[i];
            if (value != null) {
                final String name = map.getVariableMap().get(i).getDisplayName();
                for (Debugger.Variable variable : variables) {
                    if (name.equals(variable.getName())) {
                        continue outer;
                    }
                }
                final Value localValue = createVariableValue(new LocalVariableFacade(value));
                variables.add(new VariableImpl(name, localValue, false, Debugger.Variable.Kind.VARIABLE, "", -1));
            }
        }
        context = context.getCaller();
    }
    return variables;
}
Also used : Debugger(org.intellij.plugins.xsltDebugger.rt.engine.Debugger) GeneralVariable(net.sf.saxon.expr.instruct.GeneralVariable) LocalVariable(net.sf.saxon.expr.instruct.LocalVariable) GlobalVariable(net.sf.saxon.expr.instruct.GlobalVariable) ArrayList(java.util.ArrayList) StructuredQName(net.sf.saxon.om.StructuredQName) GlobalVariable(net.sf.saxon.expr.instruct.GlobalVariable) VariableImpl(org.intellij.plugins.xsltDebugger.rt.engine.local.VariableImpl) ValueRepresentation(net.sf.saxon.om.ValueRepresentation) Value(org.intellij.plugins.xsltDebugger.rt.engine.Value) SlotManager(net.sf.saxon.expr.instruct.SlotManager)

Example 2 with ValueRepresentation

use of net.sf.saxon.om.ValueRepresentation in project pmd by pmd.

the class SaxonXPathRuleQuery method createDynamicContext.

/**
 * Attempt to create a dynamic context on which to evaluate the {@link #xpathExpression}.
 *
 * @param elementNode the node on which to create the context; generally this node is the root node of the Saxon
 *                    Tree
 * @return the dynamic context on which to run the query
 * @throws XPathException if the supplied value does not conform to the required type of the
 * variable, when setting up the dynamic context; or if the supplied value contains a node that does not belong to
 * this Configuration (or another Configuration that shares the same namePool)
 */
private XPathDynamicContext createDynamicContext(final ElementNode elementNode) throws XPathException {
    final XPathDynamicContext dynamicContext = xpathExpression.createDynamicContext(elementNode);
    // Set variable values on the dynamic context
    for (final XPathVariable xpathVariable : xpathVariables) {
        final String variableName = xpathVariable.getVariableQName().getLocalName();
        for (final Map.Entry<PropertyDescriptor<?>, Object> entry : super.properties.entrySet()) {
            if (variableName.equals(entry.getKey().name())) {
                final ValueRepresentation valueRepresentation = getRepresentation(entry.getKey(), entry.getValue());
                dynamicContext.setVariable(xpathVariable, valueRepresentation);
            }
        }
    }
    return dynamicContext;
}
Also used : XPathVariable(net.sf.saxon.sxpath.XPathVariable) ValueRepresentation(net.sf.saxon.om.ValueRepresentation) PropertyDescriptor(net.sourceforge.pmd.properties.PropertyDescriptor) XPathDynamicContext(net.sf.saxon.sxpath.XPathDynamicContext) LinkedHashMap(java.util.LinkedHashMap) Map(java.util.Map)

Aggregations

ValueRepresentation (net.sf.saxon.om.ValueRepresentation)2 ArrayList (java.util.ArrayList)1 LinkedHashMap (java.util.LinkedHashMap)1 Map (java.util.Map)1 GeneralVariable (net.sf.saxon.expr.instruct.GeneralVariable)1 GlobalVariable (net.sf.saxon.expr.instruct.GlobalVariable)1 LocalVariable (net.sf.saxon.expr.instruct.LocalVariable)1 SlotManager (net.sf.saxon.expr.instruct.SlotManager)1 StructuredQName (net.sf.saxon.om.StructuredQName)1 XPathDynamicContext (net.sf.saxon.sxpath.XPathDynamicContext)1 XPathVariable (net.sf.saxon.sxpath.XPathVariable)1 PropertyDescriptor (net.sourceforge.pmd.properties.PropertyDescriptor)1 Debugger (org.intellij.plugins.xsltDebugger.rt.engine.Debugger)1 Value (org.intellij.plugins.xsltDebugger.rt.engine.Value)1 VariableImpl (org.intellij.plugins.xsltDebugger.rt.engine.local.VariableImpl)1