Author: karthick
Date: Fri Jan 23 23:14:05 2009
New Revision: 737243
URL: http://svn.apache.org/viewvc?rev=737243&view=rev
Log:
ODE-498 Make sure to evaluate all variable references, no matter how many there
are.
Modified:
ode/branches/APACHE_ODE_1.X/bpel-compiler/src/main/java/org/apache/ode/bpel/elang/xpath20/compiler/XPath20ExpressionCompilerImpl.java
ode/branches/APACHE_ODE_1.X/bpel-test/src/test/resources/bpel/2.0/TestAssignActivity2/TestAssign.bpel
Modified:
ode/branches/APACHE_ODE_1.X/bpel-compiler/src/main/java/org/apache/ode/bpel/elang/xpath20/compiler/XPath20ExpressionCompilerImpl.java
URL:
http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-compiler/src/main/java/org/apache/ode/bpel/elang/xpath20/compiler/XPath20ExpressionCompilerImpl.java?rev=737243&r1=737242&r2=737243&view=diff
==============================================================================
---
ode/branches/APACHE_ODE_1.X/bpel-compiler/src/main/java/org/apache/ode/bpel/elang/xpath20/compiler/XPath20ExpressionCompilerImpl.java
(original)
+++
ode/branches/APACHE_ODE_1.X/bpel-compiler/src/main/java/org/apache/ode/bpel/elang/xpath20/compiler/XPath20ExpressionCompilerImpl.java
Fri Jan 23 23:14:05 2009
@@ -191,8 +191,12 @@
*/
private List<String> extractVariableExprs(String xpathStr) {
ArrayList<String> variableExprs = new ArrayList<String>();
- if (xpathStr.indexOf("$") > 0 && // the xpath references a
variable
- xpathStr.indexOf("(") > 0) { // the xpath
contains a function
+ int firstVariable = xpathStr.indexOf("$"),
+ lastVariable = xpathStr.lastIndexOf("$"),
+ firstFunction = xpathStr.indexOf("(");
+ if ((firstVariable > 0 && // the xpath references a variable
+ firstFunction > 0) || // the xpath contains a
function
+ (firstVariable < lastVariable)) { // the xpath
references multiple variables
// most likely, the variable reference has not been
resolved, so make that happen
StringBuffer variableExpr = new StringBuffer();
boolean quoted = false, doubleQuoted = false, variable
= false;
Modified:
ode/branches/APACHE_ODE_1.X/bpel-test/src/test/resources/bpel/2.0/TestAssignActivity2/TestAssign.bpel
URL:
http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-test/src/test/resources/bpel/2.0/TestAssignActivity2/TestAssign.bpel?rev=737243&r1=737242&r2=737243&view=diff
==============================================================================
---
ode/branches/APACHE_ODE_1.X/bpel-test/src/test/resources/bpel/2.0/TestAssignActivity2/TestAssign.bpel
(original)
+++
ode/branches/APACHE_ODE_1.X/bpel-test/src/test/resources/bpel/2.0/TestAssignActivity2/TestAssign.bpel
Fri Jan 23 23:14:05 2009
@@ -44,6 +44,7 @@
<variable name="otherMsgVar" messageType="test:TestAssignMessage"/>
<variable name="strVar" type="xsd:string"/>
<variable name="txtVar" type="xsd:string"/>
+ <variable name="eprVar" type="xsd:anyType"/>
<variable name="intVar" type="xsd:int"/>
</variables>
@@ -89,7 +90,11 @@
<to variable="strVar"/>
</copy>
<copy>
-
<from>ode:process-property("dd:epr")/addr:EndpointReference/child::node()[$intVar]</from>
+
<from>ode:process-property("dd:epr")/addr:EndpointReference</from>
+ <to>$eprVar</to>
+ </copy>
+ <copy>
+ <from>$eprVar/child::node()[$intVar]</from>
<to variable="strVar"/>
</copy>
</assign>