Author: mriou
Date: Wed Aug 27 16:01:36 2008
New Revision: 689651
URL: http://svn.apache.org/viewvc?rev=689651&view=rev
Log:
ODE-141 Add support for the ignoreMissingFromData attribute in <copy>
Modified:
ode/branches/APACHE_ODE_1.X/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/AssignGenerator.java
ode/branches/APACHE_ODE_1.X/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/bom/Copy.java
ode/branches/APACHE_ODE_1.X/bpel-obj/src/main/java/org/apache/ode/bpel/o/OAssign.java
ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/elang/xpath20/runtime/XPath20ExpressionRuntime.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-schemas/src/main/resources/ws-bpel_abstract_common_base.xsd
ode/branches/APACHE_ODE_1.X/bpel-test/src/test/java/org/apache/ode/test/DataHandling20Test.java
Modified:
ode/branches/APACHE_ODE_1.X/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/AssignGenerator.java
URL:
http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/AssignGenerator.java?rev=689651&r1=689650&r2=689651&view=diff
==============================================================================
---
ode/branches/APACHE_ODE_1.X/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/AssignGenerator.java
(original)
+++
ode/branches/APACHE_ODE_1.X/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/AssignGenerator.java
Wed Aug 27 16:01:36 2008
@@ -64,6 +64,8 @@
for (Copy scopy : ad.getCopies()) {
OAssign.Copy ocopy = new OAssign.Copy(_context.getOProcess());
ocopy.keepSrcElementName = scopy.isKeepSrcElement();
+ ocopy.ignoreMissingFromData = scopy.isIgnoreMissingFromData();
+ ocopy.ignoreUninitializedFromVariable =
scopy.isIgnoreUninitializedFromVariable();
ocopy.debugInfo = new DebugInfo(_context.getSourceLocation(),
scopy.getLineNo(),
source.getExtensibilityElements());
try {
Modified:
ode/branches/APACHE_ODE_1.X/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/bom/Copy.java
URL:
http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/bom/Copy.java?rev=689651&r1=689650&r2=689651&view=diff
==============================================================================
---
ode/branches/APACHE_ODE_1.X/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/bom/Copy.java
(original)
+++
ode/branches/APACHE_ODE_1.X/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/bom/Copy.java
Wed Aug 27 16:01:36 2008
@@ -53,4 +53,11 @@
return getAttribute("keepSrcElementName", "no").equals("yes");
}
+ public boolean isIgnoreMissingFromData() {
+ return getAttribute("ignoreMissingFromData", "no").equals("yes");
+ }
+
+ public boolean isIgnoreUninitializedFromVariable() {
+ return getAttribute("ignoreUninitializedFromVariable",
"no").equals("yes");
+ }
}
Modified:
ode/branches/APACHE_ODE_1.X/bpel-obj/src/main/java/org/apache/ode/bpel/o/OAssign.java
URL:
http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-obj/src/main/java/org/apache/ode/bpel/o/OAssign.java?rev=689651&r1=689650&r2=689651&view=diff
==============================================================================
---
ode/branches/APACHE_ODE_1.X/bpel-obj/src/main/java/org/apache/ode/bpel/o/OAssign.java
(original)
+++
ode/branches/APACHE_ODE_1.X/bpel-obj/src/main/java/org/apache/ode/bpel/o/OAssign.java
Wed Aug 27 16:01:36 2008
@@ -51,6 +51,8 @@
public LValue to;
public RValue from;
public boolean keepSrcElementName;
+ public boolean ignoreMissingFromData;
+ public boolean ignoreUninitializedFromVariable;
public Copy(OProcess owner) {
super(owner);
Modified:
ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/elang/xpath20/runtime/XPath20ExpressionRuntime.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/XPath20ExpressionRuntime.java?rev=689651&r1=689650&r2=689651&view=diff
==============================================================================
---
ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/elang/xpath20/runtime/XPath20ExpressionRuntime.java
(original)
+++
ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/elang/xpath20/runtime/XPath20ExpressionRuntime.java
Wed Aug 27 16:01:36 2008
@@ -209,10 +209,10 @@
}
throw new EvaluationException("Error while executing an XPath
expression: " + cause.toString(), cause);
} catch (WrappedResolverException wre) {
- wre.printStackTrace();
+ __log.debug("Could not evaluate expression because of ", wre);
throw (FaultException)wre.getCause();
} catch (Throwable t) {
- t.printStackTrace();
+ __log.debug("Could not evaluate expression because of ", t);
throw new EvaluationException("Error while executing an XPath
expression: ", t);
}
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=689651&r1=689650&r2=689651&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
Wed Aug 27 16:01:36 2008
@@ -80,6 +80,18 @@
try {
copy(aCopy);
} catch (FaultException fault) {
+ if (aCopy.ignoreMissingFromData) {
+ if
(fault.getQName().equals(getOAsssign().getOwner().constants.qnSelectionFailure)
&&
+ (fault.getCause() != null &&
"ignoreMissingFromData".equals(fault.getCause().getMessage()))) {
+ continue;
+ }
+ }
+ if (aCopy.ignoreUninitializedFromVariable) {
+ if
(fault.getQName().equals(getOAsssign().getOwner().constants.qnUninitializedVariable)
&&
+ (fault.getCause() == null ||
!"throwUninitializedToVariable".equals(fault.getCause().getMessage()))) {
+ continue;
+ }
+ }
faultData = createFault(fault.getQName(), aCopy, fault
.getMessage());
break;
@@ -203,7 +215,7 @@
if (l.size() == 0) {
String msg = __msgs.msgRValueNoNodesSelected(expr.toString());
if (__log.isDebugEnabled()) __log.debug(from + ": " + msg);
- throw new
FaultException(getOAsssign().getOwner().constants.qnSelectionFailure, msg);
+ throw new
FaultException(getOAsssign().getOwner().constants.qnSelectionFailure, msg, new
Throwable("ignoreMissingFromData"));
} else if (l.size() > 1) {
String msg =
__msgs.msgRValueMultipleNodesSelected(expr.toString());
if (__log.isDebugEnabled()) __log.debug(from + ": " + msg);
@@ -311,7 +323,7 @@
if (__log.isDebugEnabled())
__log.debug("Assign.copy(" + ocopy + ")");
-
+
ScopeEvent se;
// Check for message to message - copy, we can do this efficiently in
@@ -420,6 +432,19 @@
sendEvent(se);
}
+ @Override
+ Node fetchVariableData(VariableInstance variable, boolean forWriting)
+ throws FaultException {
+ try {
+ return super.fetchVariableData(variable, forWriting);
+ } catch (FaultException fe) {
+ if (forWriting) {
+ fe = new FaultException(fe.getQName(),
fe.getMessage(), new Throwable("throwUninitializedToVariable"));
+ }
+ throw fe;
+ }
+ }
+
private void replaceEndpointRefence(PartnerLinkInstance plval, Node
rvalue) throws FaultException {
// Eventually wrapping with service-ref element if we've been directly
assigned some
// value that isn't wrapped.
Modified:
ode/branches/APACHE_ODE_1.X/bpel-schemas/src/main/resources/ws-bpel_abstract_common_base.xsd
URL:
http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-schemas/src/main/resources/ws-bpel_abstract_common_base.xsd?rev=689651&r1=689650&r2=689651&view=diff
==============================================================================
---
ode/branches/APACHE_ODE_1.X/bpel-schemas/src/main/resources/ws-bpel_abstract_common_base.xsd
(original)
+++
ode/branches/APACHE_ODE_1.X/bpel-schemas/src/main/resources/ws-bpel_abstract_common_base.xsd
Wed Aug 27 16:01:36 2008
@@ -590,6 +590,7 @@
</xsd:sequence>
<xsd:attribute name="keepSrcElementName"
type="tBoolean" use="optional" default="no"/>
<xsd:attribute name="ignoreMissingFromData"
type="tBoolean" use="optional" default="no"/>
+ <xsd:attribute name="ignoreUninitializedFromVariable" type="tBoolean"
use="optional" default="no"/>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
@@ -1202,4 +1203,4 @@
</xsd:complexContent>
</xsd:complexType>
-</xsd:schema>
\ No newline at end of file
+</xsd:schema>
Modified:
ode/branches/APACHE_ODE_1.X/bpel-test/src/test/java/org/apache/ode/test/DataHandling20Test.java
URL:
http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-test/src/test/java/org/apache/ode/test/DataHandling20Test.java?rev=689651&r1=689650&r2=689651&view=diff
==============================================================================
---
ode/branches/APACHE_ODE_1.X/bpel-test/src/test/java/org/apache/ode/test/DataHandling20Test.java
(original)
+++
ode/branches/APACHE_ODE_1.X/bpel-test/src/test/java/org/apache/ode/test/DataHandling20Test.java
Wed Aug 27 16:01:36 2008
@@ -72,4 +72,7 @@
@Test public void testDuration() throws Throwable {
go("/bpel/2.0/TestDuration");
}
+ @Test public void testAssignMissingData() throws Throwable {
+ go("/bpel/2.0/TestAssignMissingData");
+ }
}