You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@abdera.apache.org by jm...@apache.org on 2006/09/20 17:14:42 UTC
svn commit: r448233 -
/incubator/abdera/java/trunk/parser/src/main/java/org/apache/abdera/parser/stax/FOMXPath.java
Author: jmsnell
Date: Wed Sep 20 08:14:42 2006
New Revision: 448233
URL: http://svn.apache.org/viewvc?view=rev&rev=448233
Log:
The default function and variable contexts were being overwritten causing the standard xpath functions
like count and concat to be lost. Thanks to Hugo Duncan for pointing it out.
Modified:
incubator/abdera/java/trunk/parser/src/main/java/org/apache/abdera/parser/stax/FOMXPath.java
Modified: incubator/abdera/java/trunk/parser/src/main/java/org/apache/abdera/parser/stax/FOMXPath.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/parser/src/main/java/org/apache/abdera/parser/stax/FOMXPath.java?view=diff&rev=448233&r1=448232&r2=448233
==============================================================================
--- incubator/abdera/java/trunk/parser/src/main/java/org/apache/abdera/parser/stax/FOMXPath.java (original)
+++ incubator/abdera/java/trunk/parser/src/main/java/org/apache/abdera/parser/stax/FOMXPath.java Wed Sep 20 08:14:42 2006
@@ -84,8 +84,10 @@
return getXPath(path, null);
}
- private static FunctionContext getFunctionContext(Map<QName,Function> functions) {
- SimpleFunctionContext context = new SimpleFunctionContext();
+ private static FunctionContext getFunctionContext(
+ Map<QName,Function> functions,
+ SimpleFunctionContext context) {
+ if (context == null) context = new SimpleFunctionContext();
for (QName qname : functions.keySet()) {
Function function = functions.get(qname);
context.registerFunction(
@@ -96,8 +98,10 @@
return context;
}
- private static VariableContext getVariableContext(Map<QName,Object> variables) {
- SimpleVariableContext context = new SimpleVariableContext();
+ private static VariableContext getVariableContext(
+ Map<QName,Object> variables,
+ SimpleVariableContext context) {
+ if (context == null) context = new SimpleVariableContext();
for (QName qname : variables.keySet()) {
Object value = variables.get(qname);
context.setVariableValue(
@@ -121,10 +125,17 @@
contextpath.addNamespace(entry.getKey(), entry.getValue());
}
}
- if (functions != null)
- contextpath.setFunctionContext(getFunctionContext(functions));
+ if (functions != null) {
+ contextpath.setFunctionContext(
+ getFunctionContext(
+ functions,
+ (SimpleFunctionContext)contextpath.getFunctionContext()));
+ }
if (variables != null)
- contextpath.setVariableContext(getVariableContext(variables));
+ contextpath.setVariableContext(
+ getVariableContext(
+ variables,
+ (SimpleVariableContext)contextpath.getVariableContext()));
return contextpath;
}