Author: karthick
Date: Fri Feb 27 21:23:35 2009
New Revision: 748707
URL: http://svn.apache.org/viewvc?rev=748707&view=rev
Log:
ODE-531 Handle unhandled faults in query/expression languages gracefully.
Modified:
ode/branches/APACHE_ODE_1.X/bpel-api/src/main/java/org/apache/ode/bpel/explang/EvaluationContext.java
ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/elang/xpath10/runtime/JaxenContexts.java
ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/elang/xpath20/runtime/JaxpFunctionResolver.java
ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ASSIGN.java
ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ExprEvaluationContextImpl.java
ode/branches/APACHE_ODE_1.X/bpel-test/src/test/resources/bpel/2.0/TestXQueryExpression/HelloXQueryWorld.bpel
Modified:
ode/branches/APACHE_ODE_1.X/bpel-api/src/main/java/org/apache/ode/bpel/explang/EvaluationContext.java
URL:
http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-api/src/main/java/org/apache/ode/bpel/explang/EvaluationContext.java?rev=748707&r1=748706&r2=748707&view=diff
==============================================================================
---
ode/branches/APACHE_ODE_1.X/bpel-api/src/main/java/org/apache/ode/bpel/explang/EvaluationContext.java
(original)
+++
ode/branches/APACHE_ODE_1.X/bpel-api/src/main/java/org/apache/ode/bpel/explang/EvaluationContext.java
Fri Feb 27 21:23:35 2009
@@ -88,7 +88,7 @@
* the query expression
* @return node returned by query
*/
- Node evaluateQuery(Node root, OExpression expr) throws FaultException;
+ Node evaluateQuery(Node root, OExpression expr) throws FaultException,
EvaluationException;
/**
* Reads the current process instance id.
Modified:
ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/elang/xpath10/runtime/JaxenContexts.java
URL:
http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/elang/xpath10/runtime/JaxenContexts.java?rev=748707&r1=748706&r2=748707&view=diff
==============================================================================
---
ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/elang/xpath10/runtime/JaxenContexts.java
(original)
+++
ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/elang/xpath10/runtime/JaxenContexts.java
Fri Feb 27 21:23:35 2009
@@ -24,6 +24,7 @@
import org.apache.ode.bpel.elang.xpath10.o.OXPath10Expression;
import org.apache.ode.bpel.elang.xpath10.o.OXPath10ExpressionBPEL20;
import org.apache.ode.bpel.explang.EvaluationContext;
+import org.apache.ode.bpel.explang.EvaluationException;
import org.apache.ode.bpel.o.OLink;
import org.apache.ode.bpel.o.OMessageVarType;
import org.apache.ode.bpel.o.OProcess;
@@ -231,7 +232,14 @@
} catch (FaultException e) {
__log.error("bpws:getVariableData(" + args + ") threw
FaultException", e);
throw new WrappedFaultException.JaxenFunctionException(e);
- }
+ } catch (EvaluationException e) {
+ __log.error("bpws:getVariableData(" + args + ") threw
EvaluationException", e);
+ if (e.getCause() instanceof FaultException) {
+ throw new
WrappedFaultException.JaxenFunctionException((FaultException) e.getCause());
+ } else {
+ throw new FunctionCallException("SubLanguageException:
Unable to evaluate query expression", e);
+ }
+ }
}
}
Modified:
ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/elang/xpath20/runtime/JaxpFunctionResolver.java
URL:
http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/elang/xpath20/runtime/JaxpFunctionResolver.java?rev=748707&r1=748706&r2=748707&view=diff
==============================================================================
---
ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/elang/xpath20/runtime/JaxpFunctionResolver.java
(original)
+++
ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/elang/xpath20/runtime/JaxpFunctionResolver.java
Fri Feb 27 21:23:35 2009
@@ -51,6 +51,7 @@
import org.apache.ode.bpel.elang.xpath20.compiler.Constants;
import org.apache.ode.bpel.elang.xpath20.o.OXPath20ExpressionBPEL20;
import org.apache.ode.bpel.explang.EvaluationContext;
+import org.apache.ode.bpel.explang.EvaluationException;
import org.apache.ode.bpel.o.OLink;
import org.apache.ode.bpel.o.OProcess;
import org.apache.ode.bpel.o.OScope;
@@ -187,7 +188,10 @@
} catch (FaultException e) {
__log.error("bpws:getVariableData(" + args + ") threw
FaultException");
throw new XPathFunctionException(e);
- }
+ } catch (EvaluationException e) {
+ __log.error("bpws:getVariableData(" + args + ") threw
FaultException");
+ throw new XPathFunctionException(e);
+ }
}
}
Modified:
ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ASSIGN.java
URL:
http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ASSIGN.java?rev=748707&r1=748706&r2=748707&view=diff
==============================================================================
---
ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ASSIGN.java
(original)
+++
ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ASSIGN.java
Fri Feb 27 21:23:35 2009
@@ -616,7 +616,14 @@
if (expression != null) {
// Neat little trick....
- data = ec.evaluateQuery(data, expression);
+ try {
+ data = ec.evaluateQuery(data, expression);
+ } catch (EvaluationException e) {
+ String msg = __msgs.msgEvalException(expression.toString(),
e.getMessage());
+ if (__log.isDebugEnabled()) __log.debug(expression + ": " +
msg);
+ if (e.getCause() instanceof FaultException) throw
(FaultException)e.getCause();
+ throw new
FaultException(getOAsssign().getOwner().constants.qnSubLanguageExecutionFault,
msg);
+ }
}
return data;
Modified:
ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ExprEvaluationContextImpl.java
URL:
http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ExprEvaluationContextImpl.java?rev=748707&r1=748706&r2=748707&view=diff
==============================================================================
---
ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ExprEvaluationContextImpl.java
(original)
+++
ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ExprEvaluationContextImpl.java
Fri Feb 27 21:23:35 2009
@@ -29,6 +29,7 @@
import org.apache.ode.bpel.evt.ScopeEvent;
import org.apache.ode.bpel.evt.VariableReadEvent;
import org.apache.ode.bpel.explang.EvaluationContext;
+import org.apache.ode.bpel.explang.EvaluationException;
import org.apache.ode.bpel.o.OConstantVarType;
import org.apache.ode.bpel.o.OExpression;
import org.apache.ode.bpel.o.OLink;
@@ -97,16 +98,12 @@
}
public Node evaluateQuery(Node root, OExpression expr)
- throws FaultException {
- try {
- return _native.getExpLangRuntime()
- .evaluateNode(
- expr,
- new
ExprEvaluationContextImpl(_scopeInstance,
-
_native, root));
- } catch (org.apache.ode.bpel.explang.EvaluationException e) {
- throw new InvalidProcessException("Expression Failed: "
+ expr, e);
- }
+ throws FaultException, EvaluationException {
+ return _native.getExpLangRuntime()
+ .evaluateNode(
+ expr,
+ new
ExprEvaluationContextImpl(_scopeInstance,
+ _native, root));
}
public String readMessageProperty(OScope.Variable variable,
Modified:
ode/branches/APACHE_ODE_1.X/bpel-test/src/test/resources/bpel/2.0/TestXQueryExpression/HelloXQueryWorld.bpel
URL:
http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-test/src/test/resources/bpel/2.0/TestXQueryExpression/HelloXQueryWorld.bpel?rev=748707&r1=748706&r2=748707&view=diff
==============================================================================
---
ode/branches/APACHE_ODE_1.X/bpel-test/src/test/resources/bpel/2.0/TestXQueryExpression/HelloXQueryWorld.bpel
(original)
+++
ode/branches/APACHE_ODE_1.X/bpel-test/src/test/resources/bpel/2.0/TestXQueryExpression/HelloXQueryWorld.bpel
Fri Feb 27 21:23:35 2009
@@ -116,6 +116,24 @@
<condition>not($tempVar/wsa:EndpointReference/wsa:Metadata/Service/@EndpointName
eq "MyEndpoint")</condition>
<throw faultName="selectionFailure"/>
</if>
+ <scope>
+ <faultHandlers>
+ <catch faultName="subLanguageExecutionFault">
+ <empty/>
+ </catch>
+ </faultHandlers>
+ <assign>
+ <copy>
+ <from variable="myVar" part="TestPart">
+ <query
queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xquery1.0">
+ let $j := 10 div 0
+ return concat("abc", $j)
+ </query>
+ </from>
+ <to variable="myVar" part="TestPart"/>
+ </copy>
+ </assign>
+ </scope>
<reply name="end"
partnerLink="HelloXQueryPartnerLink"
portType="test:HelloXQueryPortType"