You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ode.apache.org by mr...@apache.org on 2006/10/10 01:27:28 UTC
svn commit: r454552 -
/incubator/ode/trunk/bpel-el-xpath20/src/main/java/org/apache/ode/bpel/elang/xpath20/compiler/XPath20ExpressionCompilerBPEL20.java
Author: mriou
Date: Mon Oct 9 16:27:28 2006
New Revision: 454552
URL: http://svn.apache.org/viewvc?view=rev&rev=454552
Log:
Quick fix for variables used inside predicates. Have to build a better solution for XPath 2.0 expression compilation.
Modified:
incubator/ode/trunk/bpel-el-xpath20/src/main/java/org/apache/ode/bpel/elang/xpath20/compiler/XPath20ExpressionCompilerBPEL20.java
Modified: incubator/ode/trunk/bpel-el-xpath20/src/main/java/org/apache/ode/bpel/elang/xpath20/compiler/XPath20ExpressionCompilerBPEL20.java
URL: http://svn.apache.org/viewvc/incubator/ode/trunk/bpel-el-xpath20/src/main/java/org/apache/ode/bpel/elang/xpath20/compiler/XPath20ExpressionCompilerBPEL20.java?view=diff&rev=454552&r1=454551&r2=454552
==============================================================================
--- incubator/ode/trunk/bpel-el-xpath20/src/main/java/org/apache/ode/bpel/elang/xpath20/compiler/XPath20ExpressionCompilerBPEL20.java (original)
+++ incubator/ode/trunk/bpel-el-xpath20/src/main/java/org/apache/ode/bpel/elang/xpath20/compiler/XPath20ExpressionCompilerBPEL20.java Mon Oct 9 16:27:28 2006
@@ -128,7 +128,9 @@
__log.debug("Compiling expression " + xpathStr);
XPathFactory xpf = new net.sf.saxon.xpath.XPathFactoryImpl();
xpf.setXPathFunctionResolver(new JaxpFunctionResolver(_compilerContext, out, source.getNamespaceContext(), Constants.BPEL20_NS));
- xpf.setXPathVariableResolver(new JaxpVariableResolver(_compilerContext, out));
+ JaxpVariableResolver varResolver = new JaxpVariableResolver(_compilerContext, out);
+ xpf.setXPathVariableResolver(varResolver);
+
XPath xpe = xpf.newXPath();
xpe.setNamespaceContext(source.getNamespaceContext());
XPathExpression expr = xpe.compile(xpathStr);
@@ -136,7 +138,16 @@
// detect all possible mistakes. To do so we're using specific resolvers that always
// return guessed appropriate values from variable types.
expr.evaluate(DOMUtils.newDocument());
+
+ // Fishing for predicates
+ // TODO Clean that up
+ if (xpathStr.indexOf("[$") > 0) {
+ String rightStr = xpathStr.substring(xpathStr.indexOf("[$") + 2, xpathStr.length());
+ String varStr = rightStr.substring(0, rightStr.indexOf("]"));
+ varResolver.resolveVariable(new QName(null, varStr));
+ }
} catch (XPathExpressionException e) {
+ System.out.println("Couldn't validate properly expression " + xpathStr);
__log.info("Couldn't validate properly expression " + xpathStr);
// throw new CompilationException(__msgs.warnXPath20Syntax(xpathStr, e.getCause().toString()), e.getCause());
} catch (WrappedResolverException wre) {
@@ -144,7 +155,6 @@
if (wre.getCause() instanceof CompilationException) throw (CompilationException)wre.getCause();
throw wre;
}
-
}
public Map<String, String> getProperties() {