In case you are interested: AssignReader captures the namespace declarations in
scope when parsing the query. When the evaluator is constructed, a
SetNamespaceContext is initialized with the namespace declaration and set as
the evaluator's namespaceContext property.
The function library is an attribute of the XPathQueryEvaluator class and is
best set in QueryEvaluator instances by overriding the createFunctionContext
method:
protected FunctionContext createFunctionContext() {
| return functionLibrary;
| }
The VariableContext depends on the token argument. Because multiple tokens
could evaluate the same query simultaneously, it is not advisable to set it as
the evaluator's variableContext property. Try the following:
public Object evaluate(Node contextNode, Token contextToken) {
| Context context = createContext(contextNode, contextToken);
| try {
| List nodeSet = selectNodes(context);
| return narrowToSingleNode(nodeSet);
| }
| catch (JaxenException e) {
| log.error("query evaluation failed", e);
| throw new
BpelFaultException(BpelConstants.FAULT_SUB_LANGUAGE_EXECUTION);
| }
| }
|
| private Context createContext(Node contextNode, Token contextToken) {
| ContextSupport support = new ContextSupport(getNamespaceContext(),
getFunctionContext(),
| new TokenVariableContext(contextToken), getNavigator());
|
| Context context = new Context(support);
| context.setNodeSet(Collections.singletonList(contextNode));
| return context;
| }
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4083660#4083660
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4083660
_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user