if(query == null) {
throw new IllegalStateException("query was null for: " + queryRequest);
}
// load shipped variables
final XQueryModule module = new XQueryModule();
final ShippedVariable[] vars = queryRequest.getShippedVariables();
if(vars != null) {
for(ShippedVariable var : vars) {
try {
module.putVariable(var.getVarName(), var);
} catch (XQueryException e) {
throw new RemoteException("failed to declare shipped variable: " + var, e);
}
}
}
final XQueryProcessor proccessor = new XQueryProcessor(module);
try {
proccessor.parse(query, queryRequest.getBaseUri());
} catch (XQueryException e) {
LOG.error("parse failed: \n" + query, e);
rc.setFault(e);
_resHandler.onResponse(rc);
return;
}
final Sequence<? extends Item> resultSeq;
_runningThreads.put(rc, Thread.currentThread());
final DynamicContext dynEnv = new DynamicContext(proccessor.getStaticContext());
try {
resultSeq = proccessor.execute(module, dynEnv);
} catch (Exception e) {
LOG.error("execute failed: \n" + query, e);
rc.setFault(e);
_resHandler.onResponse(rc);
return;
} finally {
_runningThreads.remove(rc);
}
final Serializable result = wrapResult(resultSeq, module.getExpression(), queryRequest, dynEnv);
rc.setResult(result);
try {
_resHandler.onResponse(rc);
} catch (RemoteException re) {