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 2008/08/28 01:01:37 UTC

svn commit: r689651 - in /ode/branches/APACHE_ODE_1.X: bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/ bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/bom/ bpel-obj/src/main/java/org/apache/ode/bpel/o/ bpel-runtime/src/main/java/org/...

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