/** * Fixup all references to global variables. * <p>This method is for internal use by the Query Parser only.</p> * * @param globalVariableMap a SlotManager that holds details of the assignment of slots to global variables. * @return a list containing the global variable definitions. * @throws XPathException if compiling a global variable definition fails */ public List<GlobalVariable> fixupGlobalVariables(SlotManager globalVariableMap) throws XPathException { List<GlobalVariable> varDefinitions = new ArrayList<>(20); List<Iterator<GlobalVariable>> iters = new ArrayList<>(); iters.add(variables.values().iterator()); iters.add(libraryVariables.values().iterator()); for (Iterator<GlobalVariable> iter : iters) { while (iter.hasNext()) { GlobalVariable var = iter.next(); if (!varDefinitions.contains(var)) { int slot = globalVariableMap.allocateSlotNumber(var.getVariableQName()); var.compile(getExecutable(), slot); varDefinitions.add(var); } } } return varDefinitions; }
/** * Fixup all references to global variables. * <p>This method is for internal use by the Query Parser only.</p> * * @param globalVariableMap a SlotManager that holds details of the assignment of slots to global variables. * @return a list containing the global variable definitions. * @throws XPathException if compiling a global variable definition fails */ public List<GlobalVariable> fixupGlobalVariables(SlotManager globalVariableMap) throws XPathException { List<GlobalVariable> varDefinitions = new ArrayList<>(20); List<Iterator<GlobalVariable>> iters = new ArrayList<>(); iters.add(variables.values().iterator()); iters.add(libraryVariables.values().iterator()); for (Iterator<GlobalVariable> iter : iters) { while (iter.hasNext()) { GlobalVariable var = iter.next(); if (!varDefinitions.contains(var)) { int slot = globalVariableMap.allocateSlotNumber(var.getVariableQName()); var.compile(getExecutable(), slot); varDefinitions.add(var); } } } return varDefinitions; }
/** * Perform type checking on global variables. * <p>This method is intended for internal use</p> * @param compiledVars a list of {@link GlobalVariableDefinition} objects to be checked */ public void typeCheckGlobalVariables(List compiledVars) throws XPathException { ExpressionVisitor visitor = ExpressionVisitor.make(this); visitor.setExecutable(getExecutable()); Iterator iter = compiledVars.iterator(); //Stack stack = new Stack(); while (iter.hasNext()) { GlobalVariableDefinition gvd = (GlobalVariableDefinition)iter.next(); //GlobalVariable gv = gvd.getCompiledVariable(); //gv.lookForCycles(stack); gvd.typeCheck(visitor); } }
/** * Perform type checking on global variables. * <p>This method is intended for internal use</p> * @param compiledVars a list of {@link GlobalVariableDefinition} objects to be checked */ public void typeCheckGlobalVariables(List compiledVars) throws XPathException { ExpressionVisitor visitor = ExpressionVisitor.make(this); visitor.setExecutable(getExecutable()); Iterator iter = compiledVars.iterator(); //Stack stack = new Stack(); while (iter.hasNext()) { GlobalVariableDefinition gvd = (GlobalVariableDefinition)iter.next(); //GlobalVariable gv = gvd.getCompiledVariable(); //gv.lookForCycles(stack); gvd.typeCheck(visitor); } }
/** * Fixup all references to global variables. * <p/> * This method is for internal use by the Query Parser only. * @param globalVariableMap a SlotManager that holds details of the assignment of slots to global variables. * @return a list containing the global variable definitions. */ public List fixupGlobalVariables(SlotManager globalVariableMap) throws XPathException { List varDefinitions = new ArrayList(20); Iterator[] iters = {variables.values().iterator(), libraryVariables.values().iterator()}; for (int i=0; i<2; i++) { while (iters[i].hasNext()) { GlobalVariableDefinition var = (GlobalVariableDefinition)iters[i].next(); int slot = globalVariableMap.allocateSlotNumber(var.getVariableQName()); GlobalVariable gv = var.getCompiledVariable(); if (gv == null) { var.compile(getExecutable(), slot); } if (!varDefinitions.contains(var)) { varDefinitions.add(var); } } } return varDefinitions; }
/** * Fixup all references to global variables. * <p/> * This method is for internal use by the Query Parser only. * @param globalVariableMap a SlotManager that holds details of the assignment of slots to global variables. * @return a list containing the global variable definitions. */ public List fixupGlobalVariables(SlotManager globalVariableMap) throws XPathException { List varDefinitions = new ArrayList(20); Iterator[] iters = {variables.values().iterator(), libraryVariables.values().iterator()}; for (int i=0; i<2; i++) { while (iters[i].hasNext()) { GlobalVariableDefinition var = (GlobalVariableDefinition)iters[i].next(); int slot = globalVariableMap.allocateSlotNumber(var.getVariableQName()); GlobalVariable gv = var.getCompiledVariable(); if (gv == null) { var.compile(getExecutable(), slot); } if (!varDefinitions.contains(var)) { varDefinitions.add(var); } } } return varDefinitions; }
/** * Diagnostic method: display a representation of the compiled query on the * selected output stream. * @param out an ExpressionPresenter to which the XML representation of the compiled query * will be sent */ public void explain(ExpressionPresenter out) { out.startElement("query"); staticContext.getExecutable().getKeyManager().explainKeys(out); staticContext.getExecutable().explainGlobalVariables(out); staticContext.explainGlobalFunctions(out); out.startElement("body"); expression.explain(out); out.endElement(); out.endElement(); out.close(); }
/** * Diagnostic method: display a representation of the compiled query on the * selected output stream. * * @param out an ExpressionPresenter to which the XML representation of the compiled query * will be sent */ public void explain(ExpressionPresenter out) { out.startElement("query"); staticContext.getExecutable().getKeyManager().explainKeys(out); staticContext.getExecutable().explainGlobalVariables(out); staticContext.explainGlobalFunctions(out); out.startElement("body"); expression.explain(out); out.endElement(); out.endElement(); out.close(); }
XQueryExpression saxonQuery = xquery.getUnderlyingCompiledQuery(); queryModule = saxonQuery.getStaticContext(); Iterator<?> moduleIter = queryModule.getExecutable().getQueryLibraryModules(); ArrayList<ModuleImport> importedModules = new ArrayList<ModuleImport>(); while (moduleIter.hasNext()) {
query = normalizeLineEndings11(query); Executable exec = staticContext.getExecutable(); if (exec == null) { exec = new Executable(config);
query = normalizeLineEndings11(query); Executable exec = staticContext.getExecutable(); if (exec == null) { exec = new Executable(config);
this.env = env; nameChecker = env.getConfiguration().getNameChecker(); executable = env.getExecutable(); t = new Tokenizer(); try {
this.env = env; nameChecker = env.getConfiguration().getNameChecker(); executable = env.getExecutable(); t = new Tokenizer(); try {
query = normalizeLineEndings11(query); Executable exec = mainModule.getExecutable(); if (exec == null) { exec = new Executable(config);
queryString = normalizeLineEndings11(queryString); Executable exec = env.getExecutable(); if (exec == null) { throw new IllegalStateException("Query library module has no associated Executable");
queryString = normalizeLineEndings11(queryString); Executable exec = env.getExecutable(); if (exec == null) { throw new IllegalStateException("Query library module has no associated Executable");
query = normalizeLineEndings11(query); Executable exec = mainModule.getExecutable(); if (exec == null) { exec = new Executable(config);
final Executable exec = ((QueryModule)getStaticContext()).getExecutable(); GlobalVariableManager manager = new GlobalVariableManager() { public void addGlobalVariable(GlobalVariable variable) throws XPathException {
Executable exec = mainModule.getExecutable(); Configuration config = mainModule.getConfiguration(); stackFrameMap = config.makeSlotManager();
Executable exec = mainModule.getExecutable(); Configuration config = mainModule.getConfiguration(); stackFrameMap = config.makeSlotManager();