public Collection<String> prepareXQuery(String query, XQStaticContext ctx) throws XQException { setStaticContext(sqc, ctx); try { final XQueryExpression exp = sqc.compileQuery(query); if (logger.isTraceEnabled()) { logger.trace("prepareXQuery; query: \n{}", explainQuery(exp)); } Set<String> result = new HashSet<>(); Iterator<GlobalVariable> itr = exp.getMainModule().getModuleVariables(); while (itr.hasNext()) { result.add(itr.next().getVariableQName().getClarkName()); } return result; } catch (XPathException ex) { logger.error("prepareXQuery.error: ", ex); throw new XQException(ex.getMessage()); } }
private VariableDefinition[] getVariableDefinitions(QueryModule module) { ArrayList<VariableDefinition> defs = new ArrayList<VariableDefinition>(); Iterator<GlobalVariable> decls = module.getModuleVariables(); while (decls.hasNext()) { GlobalVariable decl = decls.next(); GlobalVariable global = decl.getUltimateOriginalVariable(); String typeDesc = getTypeDescription (decl.getRequiredType()); Variable var = global != null ? (Variable) exprFor(global) : new Variable(qnameFor(decl.getVariableQName())); int order = decl.getLineNumber() * 1000000 + decl.getColumnNumber(); VariableDefinition def = new VariableDefinition(var, exprFor(decl.getSelectExpression()), typeDesc, order); defs.add(def); } VariableDefinition [] orderedDefs = defs.toArray(new VariableDefinition[0]); Arrays.sort(orderedDefs); return orderedDefs; }
} else { referees.push(this); Iterator<GlobalVariable> viter = getModuleVariables(); while (viter.hasNext()) { GlobalVariable gv = viter.next();
} else { referees.push(this); Iterator viter = getModuleVariables(); while (viter.hasNext()) { GlobalVariableDefinition gv = (GlobalVariableDefinition)viter.next();
} else { referees.push(this); Iterator viter = getModuleVariables(); while (viter.hasNext()) { GlobalVariableDefinition gv = (GlobalVariableDefinition)viter.next();
} else { referees.push(this); Iterator<GlobalVariable> viter = getModuleVariables(); while (viter.hasNext()) { GlobalVariable gv = viter.next();
private void bindRequestVariables(ResponseBuilder rb, SolrQueryRequest req, XQueryExecutable expr, Compiler compiler, Evaluator evaluator, SolrQueryContext context) { Iterator<GlobalVariable> decls = expr.getUnderlyingCompiledQuery().getStaticContext().getModuleVariables(); boolean hasLuxHttp = false, hasEXpathRequest = false; while (decls.hasNext()) { GlobalVariable decl = decls.next(); StructuredQName varName = decl.getVariableQName(); if (varName.equals(new StructuredQName("", EXPATH_HTTP_NS, "input"))) { hasEXpathRequest = true; } else if (varName.equals(new StructuredQName("", LUX_HTTP.getNamespaceURI(), LUX_HTTP.getLocalPart()))) { hasLuxHttp = true; } } if (hasLuxHttp) { context.bindVariable(LUX_HTTP, buildHttpParams (evaluator, req, queryPath != null ? queryPath : "/xquery" )); } if (hasEXpathRequest) { try { context.bindVariable(new QName(EXPATH_HTTP_NS, "input", ""), buildEXPathRequest(compiler, evaluator, req)); } catch (XPathException e) { throw new LuxException (e); } } }