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() {