Search in sources :

Example 1 with VariableImpl

use of org.intellij.plugins.xsltDebugger.rt.engine.local.VariableImpl in project intellij-community by JetBrains.

the class XalanStyleFrame method addVariable.

private void addVariable(ElemVariable variable, boolean global, Collection<Debugger.Variable> variables) {
    final Debugger.Variable.Kind kind = variable instanceof ElemParam ? Debugger.Variable.Kind.PARAMETER : Debugger.Variable.Kind.VARIABLE;
    assert global == variable.getIsTopLevel() : global + " vs. " + variable.getIsTopLevel() + " (" + variable.getName() + ")";
    final String name = variable.getName().getLocalName();
    try {
        final Value value = kind == Debugger.Variable.Kind.PARAMETER ? // http://youtrack.jetbrains.net/issue/IDEA-78638
        eval("$" + variable.getName().toString()) : new XObjectValue(variable.getValue(myTransformer, myCurrentNode));
        variables.add(new VariableImpl(name, value, global, kind, variable.getSystemId(), variable.getLineNumber()));
    } catch (TransformerException e) {
        debug(e);
    } catch (Debugger.EvaluationException e) {
        debug(e);
    }
}
Also used : Debugger(org.intellij.plugins.xsltDebugger.rt.engine.Debugger) VariableImpl(org.intellij.plugins.xsltDebugger.rt.engine.local.VariableImpl) ElemVariable(org.apache.xalan.templates.ElemVariable) ElemParam(org.apache.xalan.templates.ElemParam) Value(org.intellij.plugins.xsltDebugger.rt.engine.Value) TransformerException(javax.xml.transform.TransformerException)

Example 2 with VariableImpl

use of org.intellij.plugins.xsltDebugger.rt.engine.local.VariableImpl in project intellij-community by JetBrains.

the class SaxonFrameImpl method addVariables.

void addVariables(StyleElement element, ArrayList<Debugger.Variable> variables, Enumeration enumeration, boolean isGlobal) {
    final Context context = myContext;
    final StaticContext ctx = context.getStaticContext();
    final NamePool pool = element.getNamePool();
    final Bindery bindery = context.getBindery();
    while (enumeration.hasMoreElements()) {
        String name = (String) enumeration.nextElement();
        try {
            final String[] parts = name.split("\\^");
            final String realname = parts[1];
            final int fingerprint = ctx != null ? ctx.getFingerprint(realname, false) : pool.getFingerprint(parts[0], realname);
            final Binding binding = element.getVariableBinding(fingerprint);
            final Debugger.Variable.Kind kind = binding instanceof XSLParam ? Debugger.Variable.Kind.PARAMETER : Debugger.Variable.Kind.VARIABLE;
            final com.icl.saxon.expr.Value value = bindery.getValue(binding, myFrameId);
            if (binding instanceof XSLGeneralVariable) {
                final XSLGeneralVariable v = (XSLGeneralVariable) binding;
                final String id = v.getSystemId();
                variables.add(new VariableImpl(realname, convertValue(value), isGlobal, kind, id != null ? id.replaceAll(" ", "%20") : null, v.getLineNumber()));
            } else {
                variables.add(new VariableImpl(realname, convertValue(value), isGlobal, kind, null, -1));
            }
        } catch (XPathException e) {
            // this should never happen I guess...
            e.printStackTrace();
        }
    }
}
Also used : ExpressionContext(com.icl.saxon.style.ExpressionContext) Context(com.icl.saxon.Context) Binding(com.icl.saxon.Binding) XSLGeneralVariable(com.icl.saxon.style.XSLGeneralVariable) Bindery(com.icl.saxon.Bindery) XSLParam(com.icl.saxon.style.XSLParam) VariableImpl(org.intellij.plugins.xsltDebugger.rt.engine.local.VariableImpl) com.icl.saxon.expr(com.icl.saxon.expr) XSLGeneralVariable(com.icl.saxon.style.XSLGeneralVariable)

Example 3 with VariableImpl

use of org.intellij.plugins.xsltDebugger.rt.engine.local.VariableImpl 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)

Aggregations

VariableImpl (org.intellij.plugins.xsltDebugger.rt.engine.local.VariableImpl)3 Debugger (org.intellij.plugins.xsltDebugger.rt.engine.Debugger)2 Value (org.intellij.plugins.xsltDebugger.rt.engine.Value)2 Bindery (com.icl.saxon.Bindery)1 Binding (com.icl.saxon.Binding)1 Context (com.icl.saxon.Context)1 com.icl.saxon.expr (com.icl.saxon.expr)1 ExpressionContext (com.icl.saxon.style.ExpressionContext)1 XSLGeneralVariable (com.icl.saxon.style.XSLGeneralVariable)1 XSLParam (com.icl.saxon.style.XSLParam)1 ArrayList (java.util.ArrayList)1 TransformerException (javax.xml.transform.TransformerException)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 ValueRepresentation (net.sf.saxon.om.ValueRepresentation)1 ElemParam (org.apache.xalan.templates.ElemParam)1 ElemVariable (org.apache.xalan.templates.ElemVariable)1