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");
+    }
 }


Reply via email to