private void initializeNamespaces(XQueryExpression saxonQuery) { namespaceDeclarations.clear(); NamespaceResolver ns = saxonQuery.getStaticContext().getNamespaceResolver(); Iterator<String> prefixes = ns.iteratePrefixes(); while (prefixes.hasNext()) { String prefix = prefixes.next(); String nsURI = ns.getURIForPrefix(prefix, false); if (!(NamespaceConstant.isReservedInQuery(nsURI) || (prefix.equals("saxon") && nsURI.equals(NamespaceConstant.SAXON)) || (prefix.equals("local") && nsURI.equals(NamespaceConstant.LOCAL)) || (prefix.equals("err") && nsURI.equals(NamespaceConstant.ERR)) || (prefix.equals("lux") && nsURI.equals(FunCall.LUX_NAMESPACE)))) { namespaceDeclarations.put(prefix, nsURI); } } }
/** * Load a query library module * @return the QueryModule object representing the loaded library module */ private QueryModule loadModule() throws XPathException { // Create a dummy main query module and compile it StaticQueryContext sqc = new StaticQueryContext(getConfiguration()); sqc.setExecutable(getExecutable()); sqc.setBaseURI(getBaseURI()); String mainModule = "import module namespace m = \"" + moduleURI + "\" at \"" + href + "\"; ()"; XQueryExpression exp = sqc.compileQuery(mainModule); return exp.getStaticContext(); }
/** * Load a query library module * @return the QueryModule object representing the loaded library module */ private QueryModule loadModule() throws XPathException { // Create a dummy main query module and compile it StaticQueryContext sqc = new StaticQueryContext(getConfiguration()); sqc.setExecutable(getExecutable()); sqc.setBaseURI(getBaseURI()); String mainModule = "import module namespace m = \"" + moduleURI + "\" at \"" + href + "\"; ()"; XQueryExpression exp = sqc.compileQuery(mainModule); return exp.getStaticContext(); }
queryModule = saxonQuery.getStaticContext(); Iterator<?> moduleIter = queryModule.getExecutable().getQueryLibraryModules(); ArrayList<ModuleImport> importedModules = new ArrayList<ModuleImport>();
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); } } }