@Override public StreamSource[] resolve(String moduleURI, String baseURI, String[] locations) throws XPathException { logger.trace("resolve.enter; got module: {}, base: {}, locations: {}", moduleURI, baseURI, locations); String moduleName; if (locations.length > 0) { // locations contains something to use.. Path path = Paths.get(URI.create(locations[0])); moduleName = path.getFileName().toString(); } else { // moduleURI is the module namespace! moduleName = moduleURI; } Module module = getModule(moduleName); if (module != null) { logger.trace("resolve.exit; returning module: {}", module.getBody()); Reader mReader = new StringReader(module.getBody()); return new StreamSource[] {new StreamSource(mReader)}; } else { // throw ex? logger.warn("resolve.exit; no module found for name: {}", moduleName); } return new StreamSource[0]; }
private void storeModule(Module module) { try { writeTextFile(module.getFileName(), module.getBody()); } catch (IOException ex) { logger.warn("storeModule.error", ex.getMessage()); } }
@ManagedOperation(description="Returns Module body") public String getBody() { return getEntity().getBody(); }
@Override public boolean getModuleState(Module module) { try { String query = "import module namespace test=\"" + module.getNamespace() + "\" at \"" + module.getName() + "\";\n\n"; query += "1213"; StaticQueryContext sqc = prepareStaticContext(module.getBody()); logger.trace("getModuleExpression; compiling query: {}", query); sqc.compileQuery(query); return true; } catch (XPathException ex) { return false; } }
@Override public String compileTrigger(Module module, XQueryTrigger trigger) throws BagriException { long stamp = System.currentTimeMillis(); logger.trace("compileTrigger.enter; got trigger: {}", trigger); String query = "import module namespace " + module.getPrefix() + "=\"" + module.getNamespace() + "\" at \"" + module.getName() + "\";\n" + "declare variable $doc external;\n\n" + trigger.getFunction() + "($doc)\n"; StaticQueryContext sqc = prepareStaticContext(module.getBody()); logger.trace("getModuleExpression; compiling query: {}", query); try { sqc.compileQuery(query); } catch (XPathException ex) { String error = getError(ex, sqc); //logger.error("compileQuery.error", ex); logger.info("compileTrigger.error; message: {}", error); throw new BagriException(error, BagriException.ecQueryCompile); } stamp = System.currentTimeMillis() - stamp; logger.trace("compileTrigger.exit; time taken: {}", stamp); return query; }
private XQueryExpression getModuleExpression(Module module) throws BagriException { //logger.trace("getModuleExpression.enter; got namespace: {}, name: {}, body: {}", namespace, name, body); String query = "import module namespace test=\"" + module.getNamespace() + "\" at \"" + module.getName() + "\";\n\n1213"; StaticQueryContext sqc = null; try { //sqc.compileLibrary(query); - works in Saxon-EE only sqc = prepareStaticContext(module.getBody()); logger.trace("getModuleExpression; compiling query: {}", query); //logger.trace("getModuleExpression.exit; time taken: {}", stamp); return sqc.compileQuery(query); //sqc.getCompiledLibrary("test")... } catch (XPathException ex) { String error = getError(ex, sqc); logger.error("getModuleExpression.error; " + error, ex); //logger.info("getModuleExpression.error; message: {}", error); throw new BagriException(error, BagriException.ecQueryCompile); } }
@Override public void write(ObjectDataOutput out, Module xModule) throws IOException { super.writeEntity(out, xModule); out.writeUTF(xModule.getName()); out.writeUTF(xModule.getFileName()); out.writeUTF(xModule.getDescription()); out.writeUTF(xModule.getPrefix()); out.writeUTF(xModule.getNamespace()); out.writeUTF(xModule.getBody()); out.writeBoolean(xModule.isEnabled()); }