You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ode.apache.org by ms...@apache.org on 2007/10/01 21:44:56 UTC

svn commit: r581046 - in /ode/trunk: bpel-api/src/main/java/org/apache/ode/bpel/common/ bpel-api/src/main/java/org/apache/ode/bpel/explang/ bpel-runtime/src/main/java/org/apache/ode/bpel/elang/xpath10/runtime/ bpel-runtime/src/main/java/org/apache/ode/...

Author: mszefler
Date: Mon Oct  1 12:44:54 2007
New Revision: 581046

URL: http://svn.apache.org/viewvc?rev=581046&view=rev
Log:
Remove the EvaluationException class, use FaultException instead. 


Removed:
    ode/trunk/bpel-api/src/main/java/org/apache/ode/bpel/explang/EvaluationException.java
    ode/trunk/bpel-api/src/main/java/org/apache/ode/bpel/explang/TypeCastException.java
Modified:
    ode/trunk/bpel-api/src/main/java/org/apache/ode/bpel/common/FaultException.java
    ode/trunk/bpel-api/src/main/java/org/apache/ode/bpel/explang/ExpressionLanguageRuntime.java
    ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/elang/xpath10/runtime/XPath10ExpressionRuntime.java
    ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/elang/xpath20/runtime/XPath20ExpressionRuntime.java
    ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelProcess.java
    ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelRuntimeContextImpl.java
    ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ACTIVITY.java
    ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ACTIVITYGUARD.java
    ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ASSIGN.java
    ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/BpelRuntimeContext.java
    ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/EH_ALARM.java
    ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ExprEvaluationContextImpl.java
    ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ExpressionLanguageRuntimeRegistry.java
    ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/FLOW.java
    ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/FOREACH.java
    ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/LinkFrame.java
    ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/LinkInfo.java
    ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/PICK.java
    ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/REPEATUNTIL.java
    ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/SCOPEACT.java
    ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/SWITCH.java
    ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/WAIT.java
    ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/WHILE.java
    ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/explang/konst/KonstExpressionLanguageRuntimeImpl.java
    ode/trunk/bpel-runtime/src/test/java/org/apache/ode/bpel/runtime/CoreBpelTest.java
    ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestFlowActivity2/TestActivityFlow.bpel

Modified: ode/trunk/bpel-api/src/main/java/org/apache/ode/bpel/common/FaultException.java
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-api/src/main/java/org/apache/ode/bpel/common/FaultException.java?rev=581046&r1=581045&r2=581046&view=diff
==============================================================================
--- ode/trunk/bpel-api/src/main/java/org/apache/ode/bpel/common/FaultException.java (original)
+++ ode/trunk/bpel-api/src/main/java/org/apache/ode/bpel/common/FaultException.java Mon Oct  1 12:44:54 2007
@@ -28,21 +28,24 @@
  */
 public class FaultException extends Exception {
   private static final long serialVersionUID = 389190682205802035L;
-  private QName _qname;
+  private final QName _qname;
 
+  
+  public FaultException(QName qname, String message, Throwable cause) {
+      super(qname.toString() + ": " + message, cause);
+      _qname = qname;
+  }
   /**
    * Create a new instance.
    * @param qname the <code>QName</code> of the fault
    * @param message a descriptive message for the exception
    */
   public FaultException(QName qname, String message) {
-    super(message);
-    _qname = qname;
+    this(qname, message, null);
   }
 
   public FaultException(QName qname) {
-    super(qname.toString());
-    _qname = qname;
+    this(qname, null, null);
   }
 
   /**

Modified: ode/trunk/bpel-api/src/main/java/org/apache/ode/bpel/explang/ExpressionLanguageRuntime.java
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-api/src/main/java/org/apache/ode/bpel/explang/ExpressionLanguageRuntime.java?rev=581046&r1=581045&r2=581046&view=diff
==============================================================================
--- ode/trunk/bpel-api/src/main/java/org/apache/ode/bpel/explang/ExpressionLanguageRuntime.java (original)
+++ ode/trunk/bpel-api/src/main/java/org/apache/ode/bpel/explang/ExpressionLanguageRuntime.java Mon Oct  1 12:44:54 2007
@@ -36,23 +36,23 @@
   void initialize(Map properties) throws ConfigurationException;
 
   String evaluateAsString(OExpression cexp, EvaluationContext ctx)
-          throws FaultException, EvaluationException;
+          throws FaultException;
 
   boolean evaluateAsBoolean(OExpression cexp, EvaluationContext ctx)
-          throws FaultException, EvaluationException;
+          throws FaultException;
 
   Number evaluateAsNumber(OExpression cexp, EvaluationContext ctx)
-          throws FaultException, EvaluationException;
+          throws FaultException;
 
   List evaluate(OExpression cexp, EvaluationContext ctx)
-          throws FaultException, EvaluationException;
+          throws FaultException;
 
   Calendar evaluateAsDate(OExpression cexp, EvaluationContext context)
-          throws FaultException, EvaluationException;
+          throws FaultException;
 
   Duration evaluateAsDuration(OExpression cexp, EvaluationContext context)
-          throws FaultException, EvaluationException;
+          throws FaultException;
 
   Node evaluateNode(OExpression cexp, EvaluationContext context)
-          throws FaultException, EvaluationException;
+          throws FaultException;
 }

Modified: ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/elang/xpath10/runtime/XPath10ExpressionRuntime.java
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/elang/xpath10/runtime/XPath10ExpressionRuntime.java?rev=581046&r1=581045&r2=581046&view=diff
==============================================================================
--- ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/elang/xpath10/runtime/XPath10ExpressionRuntime.java (original)
+++ ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/elang/xpath10/runtime/XPath10ExpressionRuntime.java Mon Oct  1 12:44:54 2007
@@ -24,7 +24,6 @@
 import org.apache.ode.bpel.elang.xpath10.o.OXPath10Expression;
 import org.apache.ode.bpel.explang.ConfigurationException;
 import org.apache.ode.bpel.explang.EvaluationContext;
-import org.apache.ode.bpel.explang.EvaluationException;
 import org.apache.ode.bpel.explang.ExpressionLanguageRuntime;
 import org.apache.ode.bpel.o.OExpression;
 import org.apache.ode.utils.DOMUtils;
@@ -62,35 +61,34 @@
     public void initialize(Map properties) throws ConfigurationException {
     }
 
-    public String evaluateAsString(OExpression cexp, EvaluationContext ctx) throws FaultException, EvaluationException {
+    public String evaluateAsString(OExpression cexp, EvaluationContext ctx) throws FaultException {
         try {
             return compile((OXPath10Expression) cexp).stringValueOf(createContext((OXPath10Expression) cexp, ctx));
         } catch (JaxenException e) {
-            handleJaxenException(e);
+            handleJaxenException(cexp, e);
         }
         throw new AssertionError("UNREACHABLE");
     }
 
-    public boolean evaluateAsBoolean(OExpression cexp, EvaluationContext ctx) throws FaultException,
-            EvaluationException {
+    public boolean evaluateAsBoolean(OExpression cexp, EvaluationContext ctx) throws FaultException {
         try {
             return compile((OXPath10Expression) cexp).booleanValueOf(createContext((OXPath10Expression) cexp, ctx));
         } catch (JaxenException e) {
-            handleJaxenException(e);
+            handleJaxenException(cexp, e);
         }
         throw new AssertionError("UNREACHABLE");
     }
 
-    public Number evaluateAsNumber(OExpression cexp, EvaluationContext ctx) throws FaultException, EvaluationException {
+    public Number evaluateAsNumber(OExpression cexp, EvaluationContext ctx) throws FaultException {
         try {
             return compile((OXPath10Expression) cexp).numberValueOf(createContext((OXPath10Expression) cexp, ctx));
         } catch (JaxenException e) {
-            handleJaxenException(e);
+            handleJaxenException(cexp, e);
         }
         throw new AssertionError("UNREACHABLE");
     }
 
-    public List evaluate(OExpression cexp, EvaluationContext ctx) throws FaultException, EvaluationException {
+    public List evaluate(OExpression cexp, EvaluationContext ctx) throws FaultException{
         try {
             XPath compiledXPath = compile((OXPath10Expression) cexp);
             Context context = createContext((OXPath10Expression) cexp, ctx);
@@ -111,12 +109,12 @@
             return retVal;
 
         } catch (JaxenException je) {
-            handleJaxenException(je);
+            handleJaxenException(cexp, je);
         }
         throw new AssertionError("UNREACHABLE");
     }
 
-    public Node evaluateNode(OExpression cexp, EvaluationContext ctx) throws FaultException, EvaluationException {
+    public Node evaluateNode(OExpression cexp, EvaluationContext ctx) throws FaultException{
         List retVal = evaluate(cexp, ctx);
         if (retVal.size() == 0)
             throw new FaultException(cexp.getOwner().constants.qnSelectionFailure, "No results for expression: " + cexp);
@@ -126,8 +124,7 @@
         return (Node) retVal.get(0);
     }
 
-    public Calendar evaluateAsDate(OExpression cexp, EvaluationContext context) throws FaultException,
-            EvaluationException {
+    public Calendar evaluateAsDate(OExpression cexp, EvaluationContext context) throws FaultException {
 
         String literal = evaluateAsString(cexp, context);
         try {
@@ -139,8 +136,7 @@
         }
     }
 
-    public Duration evaluateAsDuration(OExpression cexp, EvaluationContext context) throws FaultException,
-            EvaluationException {
+    public Duration evaluateAsDuration(OExpression cexp, EvaluationContext context) throws FaultException{
         String literal = this.evaluateAsString(cexp, context);
         try {
             Duration duration = new org.apache.ode.utils.xsd.Duration(literal);
@@ -175,13 +171,13 @@
         return xpath;
     }
 
-    private void handleJaxenException(JaxenException je) throws EvaluationException, FaultException {
+    private void handleJaxenException(OExpression cexp, JaxenException je) throws FaultException {
         if (je instanceof WrappedFaultException) {
             throw ((WrappedFaultException) je).getFaultException();
         } else if (je.getCause() instanceof WrappedFaultException) {
             throw ((WrappedFaultException) je.getCause()).getFaultException();
         } else {
-            throw new EvaluationException(je.getMessage(), je);
+            throw new FaultException(cexp.getOwner().constants.qnSubLanguageExecutionFault, je.getMessage(), je);
         }
 
     }

Modified: ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/elang/xpath20/runtime/XPath20ExpressionRuntime.java
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/elang/xpath20/runtime/XPath20ExpressionRuntime.java?rev=581046&r1=581045&r2=581046&view=diff
==============================================================================
--- ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/elang/xpath20/runtime/XPath20ExpressionRuntime.java (original)
+++ ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/elang/xpath20/runtime/XPath20ExpressionRuntime.java Mon Oct  1 12:44:54 2007
@@ -28,7 +28,6 @@
 import org.apache.ode.bpel.elang.xpath20.o.OXPath20ExpressionBPEL20;
 import org.apache.ode.bpel.explang.ConfigurationException;
 import org.apache.ode.bpel.explang.EvaluationContext;
-import org.apache.ode.bpel.explang.EvaluationException;
 import org.apache.ode.bpel.explang.ExpressionLanguageRuntime;
 import org.apache.ode.bpel.o.OExpression;
 import org.apache.ode.utils.DOMUtils;
@@ -74,25 +73,25 @@
     /**
      * @see org.apache.ode.bpel.explang.ExpressionLanguageRuntime#evaluateAsString(org.apache.ode.bpel.o.OExpression, org.apache.ode.bpel.explang.EvaluationContext)
      */
-    public String evaluateAsString(OExpression cexp, EvaluationContext ctx) throws FaultException, EvaluationException {
+    public String evaluateAsString(OExpression cexp, EvaluationContext ctx) throws FaultException{
         return (String)evaluate(cexp, ctx, XPathConstants.STRING);
     }
 
     /**
      * @see org.apache.ode.bpel.explang.ExpressionLanguageRuntime#evaluateAsBoolean(org.apache.ode.bpel.o.OExpression, org.apache.ode.bpel.explang.EvaluationContext)
      */
-    public boolean evaluateAsBoolean(OExpression cexp, EvaluationContext ctx) throws FaultException, EvaluationException {
+    public boolean evaluateAsBoolean(OExpression cexp, EvaluationContext ctx) throws FaultException{
         return (Boolean) evaluate(cexp, ctx, XPathConstants.BOOLEAN);
     }
 
-    public Number evaluateAsNumber(OExpression cexp, EvaluationContext ctx) throws FaultException, EvaluationException {
+    public Number evaluateAsNumber(OExpression cexp, EvaluationContext ctx) throws FaultException {
         return (Number) evaluate(cexp, ctx, XPathConstants.NUMBER);
     }
 
     /**
      * @see org.apache.ode.bpel.explang.ExpressionLanguageRuntime#evaluate(org.apache.ode.bpel.o.OExpression, org.apache.ode.bpel.explang.EvaluationContext)
      */
-    public List evaluate(OExpression cexp, EvaluationContext ctx) throws FaultException, EvaluationException {
+    public List evaluate(OExpression cexp, EvaluationContext ctx) throws FaultException {
         List result;
         Object someRes = evaluate(cexp, ctx, XPathConstants.NODESET);
         if (someRes instanceof List) {
@@ -133,7 +132,7 @@
         return result;
     }
 
-    public Node evaluateNode(OExpression cexp, EvaluationContext ctx) throws FaultException, EvaluationException {
+    public Node evaluateNode(OExpression cexp, EvaluationContext ctx) throws FaultException  {
         List retVal = evaluate(cexp, ctx);
         if (retVal.size() == 0)
             throw new FaultException(cexp.getOwner().constants.qnSelectionFailure, "No results for expression: " + cexp);
@@ -142,7 +141,7 @@
         return (Node) retVal.get(0);
     }
 
-    public Calendar evaluateAsDate(OExpression cexp, EvaluationContext context) throws FaultException, EvaluationException {
+    public Calendar evaluateAsDate(OExpression cexp, EvaluationContext context) throws FaultException {
         String literal = evaluateAsString(cexp, context);
         try {
             return ISO8601DateParser.parseCal(literal);
@@ -153,7 +152,7 @@
         }
     }
 
-    public Duration evaluateAsDuration(OExpression cexp, EvaluationContext context) throws FaultException, EvaluationException {
+    public Duration evaluateAsDuration(OExpression cexp, EvaluationContext context) throws FaultException  {
         String literal = this.evaluateAsString(cexp, context);
         try {
             return new Duration(literal);
@@ -164,7 +163,7 @@
         }
     }
 
-    private Object evaluate(OExpression cexp, EvaluationContext ctx, QName type) throws FaultException, EvaluationException {
+    private Object evaluate(OExpression cexp, EvaluationContext ctx, QName type) throws FaultException {
         try {
             net.sf.saxon.xpath.XPathFactoryImpl xpf = new net.sf.saxon.xpath.XPathFactoryImpl();
 
@@ -194,13 +193,13 @@
                     if (cause.getCause() != null) cause = cause.getCause();
                 }
             }
-            throw new EvaluationException("Error while executing an XPath expression: " + cause.toString(), cause);
+            throw new FaultException(cexp.getOwner().constants.qnSubLanguageExecutionFault, cause.getMessage(), cause);
         } catch (WrappedResolverException wre) {
             wre.printStackTrace();
             throw (FaultException)wre.getCause();
         } catch (Throwable t) {
             t.printStackTrace();
-            throw new EvaluationException("Error while executing an XPath expression: ", t);
+            throw new FaultException(cexp.getOwner().constants.qnSubLanguageExecutionFault, t.getMessage(), t);
         }
 
     }

Modified: ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelProcess.java
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelProcess.java?rev=581046&r1=581045&r2=581046&view=diff
==============================================================================
--- ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelProcess.java (original)
+++ ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelProcess.java Mon Oct  1 12:44:54 2007
@@ -48,7 +48,6 @@
 import org.apache.ode.bpel.evt.ProcessInstanceEvent;
 import org.apache.ode.bpel.evt.ScopeEvent;
 import org.apache.ode.bpel.explang.ConfigurationException;
-import org.apache.ode.bpel.explang.EvaluationException;
 import org.apache.ode.bpel.iapi.BpelEngineException;
 import org.apache.ode.bpel.iapi.Endpoint;
 import org.apache.ode.bpel.iapi.EndpointReference;
@@ -451,11 +450,7 @@
         Node lValue = ectx.getRootNode();
 
         if (alias.location != null)
-            try {
-                lValue = _expLangRuntimeRegistry.evaluateNode(alias.location, ectx);
-            } catch (EvaluationException ec) {
-                throw new FaultException(getOProcess().constants.qnSelectionFailure, alias.getDescription());
-            }
+            lValue = _expLangRuntimeRegistry.evaluateNode(alias.location, ectx);
 
         if (lValue == null) {
             String errmsg = __msgs.msgPropertyAliasReturnedNullSet(alias.getDescription(), target);

Modified: ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelRuntimeContextImpl.java
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelRuntimeContextImpl.java?rev=581046&r1=581045&r2=581046&view=diff
==============================================================================
--- ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelRuntimeContextImpl.java (original)
+++ ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelRuntimeContextImpl.java Mon Oct  1 12:44:54 2007
@@ -117,6 +117,8 @@
 
     private boolean _executed;
 
+    private boolean _forceFlush;
+
     BpelRuntimeContextImpl(BpelInstanceWorker instanceWorker, ProcessInstanceDAO dao) {
         this(instanceWorker, dao, new ExecutionQueueImpl(null));
 
@@ -751,7 +753,7 @@
 
         // Execute the process state reductions
         boolean canReduce = true;
-        while (ProcessState.canExecute(_dao.getState()) && System.currentTimeMillis() < maxTime && canReduce) {
+        while (ProcessState.canExecute(_dao.getState()) && System.currentTimeMillis() < maxTime && canReduce && !_forceFlush) {
             canReduce = _vpu.execute();
         }
 
@@ -1177,5 +1179,9 @@
             __log.debug("initializing partner " + pLink + "  sessionId to " + session);
         fetchPartnerLinkDAO(pLink).setPartnerSessionId(session);
 
+    }
+
+    public void forceFlush() {
+        _forceFlush = true;
     }
 }

Modified: ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ACTIVITY.java
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ACTIVITY.java?rev=581046&r1=581045&r2=581046&view=diff
==============================================================================
--- ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ACTIVITY.java (original)
+++ ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ACTIVITY.java Mon Oct  1 12:44:54 2007
@@ -95,7 +95,7 @@
     protected void dpe(Collection<OLink> links) {
         // Dead path all of the ougoing links (nothing has been activated yet!)
         for (Iterator<OLink> i = links.iterator(); i.hasNext();)
-            _linkFrame.resolve(i.next()).pub.linkStatus(false);
+            _linkFrame.resolve(i.next()).channel.linkStatus(false);
     }
 
     /**

Modified: ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ACTIVITYGUARD.java
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ACTIVITYGUARD.java?rev=581046&r1=581045&r2=581046&view=diff
==============================================================================
--- ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ACTIVITYGUARD.java (original)
+++ ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ACTIVITYGUARD.java Mon Oct  1 12:44:54 2007
@@ -26,7 +26,6 @@
 import org.apache.ode.bpel.evt.ActivityExecStartEvent;
 import org.apache.ode.bpel.evt.ActivityFailureEvent;
 import org.apache.ode.bpel.evt.ActivityRecoveryEvent;
-import org.apache.ode.bpel.explang.EvaluationException;
 import org.apache.ode.bpel.o.OActivity;
 import org.apache.ode.bpel.o.OExpression;
 import org.apache.ode.bpel.o.OLink;
@@ -118,7 +117,7 @@
             });
             for (Iterator<OLink> i = _oactivity.targetLinks.iterator();i.hasNext();) {
                 final OLink link = i.next();
-                mlset.add(new LinkStatusChannelListener(_linkFrame.resolve(link).sub) {
+                mlset.add(new LinkStatusChannelListener(_linkFrame.resolve(link).channel) {
                     private static final long serialVersionUID = 1024137371118887935L;
 
                     public void linkStatus(boolean value) {
@@ -138,14 +137,9 @@
         if (transitionCondition == null)
             return true;
 
-        try {
-            return getBpelRuntimeContext().getExpLangRuntime().evaluateAsBoolean(transitionCondition,
-                    new ExprEvaluationContextImpl(_scopeFrame, getBpelRuntimeContext()));
-        } catch (EvaluationException e) {
-            String msg = "Error in transition condition detected at runtime; condition=" + transitionCondition;
-            __log.error(msg,e);
-            throw new InvalidProcessException(msg, e);
-        }
+        return getBpelRuntimeContext().getExpLangRuntime().evaluateAsBoolean(transitionCondition,
+                new ExprEvaluationContextImpl(_scopeFrame, getBpelRuntimeContext()));
+
     }
 
     /**
@@ -220,9 +214,9 @@
                             LinkInfo linfo = _linkFrame.resolve(olink);
                             try {
                                 boolean val = evaluateTransitionCondition(olink.transitionCondition);
-                                linfo.pub.linkStatus(val);
+                                linfo.channel.linkStatus(val);
                             } catch (FaultException e) {
-                                linfo.pub.linkStatus(false);
+                                linfo.channel.linkStatus(false);
                                 __log.error(e);
                                 if (fault == null)
                                     fault = createFault(e.getQName(),olink.transitionCondition);

Modified: ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ASSIGN.java
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ASSIGN.java?rev=581046&r1=581045&r2=581046&view=diff
==============================================================================
--- ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ASSIGN.java (original)
+++ ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ASSIGN.java Mon Oct  1 12:44:54 2007
@@ -25,7 +25,6 @@
 import org.apache.ode.bpel.evt.ScopeEvent;
 import org.apache.ode.bpel.evt.VariableModificationEvent;
 import org.apache.ode.bpel.explang.EvaluationContext;
-import org.apache.ode.bpel.explang.EvaluationException;
 import org.apache.ode.bpel.o.OAssign;
 import org.apache.ode.bpel.o.OAssign.DirectRef;
 import org.apache.ode.bpel.o.OAssign.LValueExpression;
@@ -189,19 +188,10 @@
         } else if (from instanceof OAssign.Expression) {
             List l;
             OExpression expr = ((OAssign.Expression) from).expression;
-            try {
-                l = getBpelRuntimeContext().getExpLangRuntime().evaluate(expr,
-                        getEvaluationContext());
-            } catch (EvaluationException e) {
-                String msg = __msgs.msgEvalException(from.toString(), e
-                        .getMessage());
-                if (__log.isDebugEnabled())
-                    __log.debug(from + ": " + msg);
-                if (e.getCause() instanceof FaultException) throw (FaultException)e.getCause();
-                throw new FaultException(
-                        getOAsssign().getOwner().constants.qnSelectionFailure,
-                        msg);
-            }
+
+            l = getBpelRuntimeContext().getExpLangRuntime().evaluate(expr,
+                    getEvaluationContext());
+
             if (l.size() == 0) {
                 String msg = __msgs.msgRValueNoNodesSelected(expr.toString());
                 if (__log.isDebugEnabled())
@@ -633,13 +623,9 @@
         public Node evaluateQuery(Node root, OExpression expr)
                 throws FaultException {
             _rootNode = root;
-            try {
-                return getBpelRuntimeContext().getExpLangRuntime()
-                        .evaluateNode(expr, this);
-            } catch (org.apache.ode.bpel.explang.EvaluationException e) {
-                throw new InvalidProcessException("Expression Failed: " + expr,
-                        e);
-            }
+            return getBpelRuntimeContext().getExpLangRuntime()
+                    .evaluateNode(expr, this);
+
         }
 
         public Node getPartData(Element message, Part part) throws FaultException {

Modified: ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/BpelRuntimeContext.java
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/BpelRuntimeContext.java?rev=581046&r1=581045&r2=581046&view=diff
==============================================================================
--- ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/BpelRuntimeContext.java (original)
+++ ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/BpelRuntimeContext.java Mon Oct  1 12:44:54 2007
@@ -161,6 +161,7 @@
 
     void writeCorrelation(CorrelationSetInstance cset, CorrelationKey correlation);
 
+    void forceFlush();
     /**
      * Should be invoked by process template, signalling process completion
      * with no faults.

Modified: ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/EH_ALARM.java
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/EH_ALARM.java?rev=581046&r1=581045&r2=581046&view=diff
==============================================================================
--- ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/EH_ALARM.java (original)
+++ ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/EH_ALARM.java Mon Oct  1 12:44:54 2007
@@ -20,7 +20,6 @@
 
 import org.apache.ode.bpel.common.FaultException;
 import org.apache.ode.bpel.explang.EvaluationContext;
-import org.apache.ode.bpel.explang.EvaluationException;
 import org.apache.ode.bpel.o.OEventHandler;
 import org.apache.ode.bpel.o.OScope;
 import org.apache.ode.bpel.runtime.channels.EventHandlerControlChannel;
@@ -85,8 +84,6 @@
         if (_oalarm.forExpr != null)
             try {
                 getBpelRuntimeContext().getExpLangRuntime().evaluateAsDuration(_oalarm.forExpr, getEvaluationContext()).addTo(alarm);
-            } catch (EvaluationException e) {
-                throw new InvalidProcessException(e);
             } catch (FaultException e) {
                 __log.error(e);
                 _psc.completed(createFault(e.getQName(),_oalarm.forExpr), _comps);
@@ -95,8 +92,6 @@
         else if (_oalarm.untilExpr != null)
             try {
                 alarm.setTime(getBpelRuntimeContext().getExpLangRuntime().evaluateAsDate(_oalarm.untilExpr, getEvaluationContext()).getTime());
-            } catch (EvaluationException e) {
-                throw new InvalidProcessException(e);
             } catch (FaultException e) {
                 __log.error(e);
                 _psc.completed(createFault(e.getQName(),_oalarm.untilExpr), _comps);
@@ -213,8 +208,6 @@
                         Calendar next = Calendar.getInstance();
                         try {
                             getBpelRuntimeContext().getExpLangRuntime().evaluateAsDuration(_oalarm.forExpr, getEvaluationContext()).addTo(next);
-                        } catch (EvaluationException e) {
-                            throw new InvalidProcessException(e);
                         } catch (FaultException e) {
                             __log.error(e);
                             _psc.completed(createFault(e.getQName(),_oalarm.forExpr), _comps);

Modified: ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ExprEvaluationContextImpl.java
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ExprEvaluationContextImpl.java?rev=581046&r1=581045&r2=581046&view=diff
==============================================================================
--- ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ExprEvaluationContextImpl.java (original)
+++ ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ExprEvaluationContextImpl.java Mon Oct  1 12:44:54 2007
@@ -35,13 +35,11 @@
 import java.util.Map;
 
 /**
- * The context in which BPEL expressions are evaluated. This class is handed of
- * the {@link org.apache.ode.bpel.o.OExpression} instances to provide access to
- * variables, link statuses, and the like.
+ * The context in which BPEL expressions are evaluated. This class is handed of the {@link org.apache.ode.bpel.o.OExpression}
+ * instances to provide access to variables, link statuses, and the like.
  */
 public class ExprEvaluationContextImpl implements EvaluationContext {
-    private static final Log __log = LogFactory
-            .getLog(ExprEvaluationContextImpl.class);
+    private static final Log __log = LogFactory.getLog(ExprEvaluationContextImpl.class);
 
     private BpelRuntimeContext _native;
 
@@ -51,26 +49,22 @@
 
     private Node _root;
 
-    public ExprEvaluationContextImpl(ScopeFrame scopeInstace,
-                                     BpelRuntimeContext ntv) {
+    public ExprEvaluationContextImpl(ScopeFrame scopeInstace, BpelRuntimeContext ntv) {
         _native = ntv;
         _scopeInstance = scopeInstace;
     }
 
-    public ExprEvaluationContextImpl(ScopeFrame scopeInstace,
-                                     BpelRuntimeContext ntv, Node root) {
+    public ExprEvaluationContextImpl(ScopeFrame scopeInstace, BpelRuntimeContext ntv, Node root) {
         this(scopeInstace, ntv);
         _root = root;
     }
 
-    public ExprEvaluationContextImpl(ScopeFrame scopeInstnce,
-                                     BpelRuntimeContext ntv, Map<OLink, Boolean> linkVals) {
+    public ExprEvaluationContextImpl(ScopeFrame scopeInstnce, BpelRuntimeContext ntv, Map<OLink, Boolean> linkVals) {
         this(scopeInstnce, ntv);
         _linkVals = linkVals;
     }
 
-    public Node readVariable(OScope.Variable variable, OMessageVarType.Part part)
-            throws FaultException {
+    public Node readVariable(OScope.Variable variable, OMessageVarType.Part part) throws FaultException {
         if (__log.isTraceEnabled())
             __log.trace("readVariable(" + variable + "," + part + ")");
 
@@ -78,26 +72,21 @@
 
         Node ret;
         if (variable.type instanceof OConstantVarType) {
-            ret = ((OConstantVarType)variable.type).getValue();
+            ret = ((OConstantVarType) variable.type).getValue();
         } else {
             VariableInstance varInstance = _scopeInstance.resolve(variable);
-            if (varInstance == null) return null;
+            if (varInstance == null)
+                return null;
             ret = _native.fetchVariableData(varInstance, part, false);
         }
         return ret;
     }
 
     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);
-        }
+        return _native.getExpLangRuntime().evaluateNode(expr, new ExprEvaluationContextImpl(_scopeInstance, _native, root));
     }
 
-    public String readMessageProperty(OScope.Variable variable,
-                                      OProcess.OProperty property) throws FaultException {
+    public String readMessageProperty(OScope.Variable variable, OProcess.OProperty property) throws FaultException {
         VariableInstance varInstance = _scopeInstance.resolve(variable);
         return _native.readProperty(varInstance, property);
     }
@@ -107,8 +96,7 @@
     }
 
     public String toString() {
-        return "{ExprEvaluationContextImpl scopeInstance=" + _scopeInstance
-                + ", activeLinks=" + _linkVals + "}";
+        return "{ExprEvaluationContextImpl scopeInstance=" + _scopeInstance + ", activeLinks=" + _linkVals + "}";
     }
 
     public Node getRootNode() {

Modified: ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ExpressionLanguageRuntimeRegistry.java
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ExpressionLanguageRuntimeRegistry.java?rev=581046&r1=581045&r2=581046&view=diff
==============================================================================
--- ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ExpressionLanguageRuntimeRegistry.java (original)
+++ ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ExpressionLanguageRuntimeRegistry.java Mon Oct  1 12:44:54 2007
@@ -21,7 +21,6 @@
 import org.apache.ode.bpel.common.FaultException;
 import org.apache.ode.bpel.explang.ConfigurationException;
 import org.apache.ode.bpel.explang.EvaluationContext;
-import org.apache.ode.bpel.explang.EvaluationException;
 import org.apache.ode.bpel.explang.ExpressionLanguageRuntime;
 import org.apache.ode.bpel.o.OExpression;
 import org.apache.ode.bpel.o.OExpressionLanguage;
@@ -34,66 +33,109 @@
 import java.util.Map;
 
 /**
- * A registry of {@link ExpressionLanguageRuntime} objects that is able to map
- * a given expression to the appropriate language runtime.
+ * A registry of {@link ExpressionLanguageRuntime} objects that is able to map a given expression to the appropriate 
+ * language runtime. We also do some exception guarding here so that the core of the engine does not have to deal
+ * with random exceptions from not-quite perfect expression runtime imlementation.
  */
-public class ExpressionLanguageRuntimeRegistry  {
-  private final Map<OExpressionLanguage, ExpressionLanguageRuntime> _runtimes =
-    new HashMap<OExpressionLanguage, ExpressionLanguageRuntime>();
-
-  public ExpressionLanguageRuntimeRegistry()  {}
-
-  public void registerRuntime(OExpressionLanguage oelang) throws ConfigurationException {
-    try {
-      String className = oelang.properties.get("runtime-class");
-      // backward compatibility.
-      className = className.replace("com.fs.pxe.","org.apache.ode.");
-      Class cls = Class.forName(className);
-      ExpressionLanguageRuntime elangRT = (ExpressionLanguageRuntime) cls.newInstance();
-      elangRT.initialize(oelang.properties);
-      _runtimes.put(oelang, elangRT);
-    } catch (ConfigurationException ce) {
-      throw ce;
-    } catch (IllegalAccessException e) {
-      throw new ConfigurationException("Illegal Access Error", e);
-    } catch (InstantiationException e) {
-      throw new ConfigurationException("Instantiation Error", e);
-    } catch (ClassNotFoundException e) {
-      throw new ConfigurationException("Class Not Found Error", e);
-    }
-
-  }
-
-  public String evaluateAsString(OExpression cexp, EvaluationContext ctx) throws FaultException , EvaluationException {
-    return findRuntime(cexp).evaluateAsString(cexp, ctx);
-  }
-
-  public boolean evaluateAsBoolean(OExpression cexp, EvaluationContext ctx) throws FaultException, EvaluationException {
-    return findRuntime(cexp).evaluateAsBoolean(cexp, ctx);
-  }
-
-  public Number evaluateAsNumber(OExpression cexp, EvaluationContext ctx) throws FaultException, EvaluationException {
-    return findRuntime(cexp).evaluateAsNumber(cexp, ctx);
-  }
-
-  public List evaluate(OExpression cexp, EvaluationContext ctx) throws FaultException, EvaluationException {
-    return findRuntime(cexp).evaluate(cexp, ctx);
-  }
-
-  public Node evaluateNode(OExpression cexp, EvaluationContext ctx) throws FaultException, EvaluationException {
-    return findRuntime(cexp).evaluateNode(cexp, ctx);
-  }
-
-  public Calendar evaluateAsDate(OExpression cexp, EvaluationContext ctx) throws FaultException, EvaluationException {
-    return findRuntime(cexp).evaluateAsDate(cexp, ctx);
-  }
-
-  public Duration evaluateAsDuration(OExpression cexp, EvaluationContext ctx) throws FaultException, EvaluationException {
-    return findRuntime(cexp).evaluateAsDuration(cexp, ctx);
-  }
-
-  private ExpressionLanguageRuntime findRuntime(OExpression cexp) {
-    return _runtimes.get(cexp.expressionLanguage);
-  }
+public class ExpressionLanguageRuntimeRegistry {
+    private final Map<OExpressionLanguage, ExpressionLanguageRuntime> _runtimes = new HashMap<OExpressionLanguage, ExpressionLanguageRuntime>();
+
+    public ExpressionLanguageRuntimeRegistry() {
+    }
+
+    public void registerRuntime(OExpressionLanguage oelang) throws ConfigurationException {
+        try {
+            String className = oelang.properties.get("runtime-class");
+            // backward compatibility.
+            className = className.replace("com.fs.pxe.", "org.apache.ode.");
+            Class cls = Class.forName(className);
+            ExpressionLanguageRuntime elangRT = (ExpressionLanguageRuntime) cls.newInstance();
+            elangRT.initialize(oelang.properties);
+            _runtimes.put(oelang, elangRT);
+        } catch (ConfigurationException ce) {
+            throw ce;
+        } catch (IllegalAccessException e) {
+            throw new ConfigurationException("Illegal Access Error", e);
+        } catch (InstantiationException e) {
+            throw new ConfigurationException("Instantiation Error", e);
+        } catch (ClassNotFoundException e) {
+            throw new ConfigurationException("Class Not Found Error", e);
+        }
+
+    }
+
+    public String evaluateAsString(OExpression cexp, EvaluationContext ctx) throws FaultException {
+        try {
+            return findRuntime(cexp).evaluateAsString(cexp, ctx);
+        } catch (FaultException fe) {
+            throw fe;
+        } catch (Throwable t) {
+            throw new FaultException(cexp.getOwner().constants.qnSubLanguageExecutionFault, t.toString(), t);
+        }
+    }
+
+    public boolean evaluateAsBoolean(OExpression cexp, EvaluationContext ctx) throws FaultException {
+        try {
+            return findRuntime(cexp).evaluateAsBoolean(cexp, ctx);
+        } catch (FaultException fe) {
+            throw fe;
+        } catch (Throwable t) {
+            throw new FaultException(cexp.getOwner().constants.qnSubLanguageExecutionFault, t.toString(), t);
+        }
+    }
+
+    public Number evaluateAsNumber(OExpression cexp, EvaluationContext ctx) throws FaultException {
+        try {
+            return findRuntime(cexp).evaluateAsNumber(cexp, ctx);
+        } catch (FaultException fe) {
+            throw fe;
+        } catch (Throwable t) {
+            throw new FaultException(cexp.getOwner().constants.qnSubLanguageExecutionFault, t.toString(), t);
+        }
+    }
+
+    public List evaluate(OExpression cexp, EvaluationContext ctx) throws FaultException {
+        try {
+            return findRuntime(cexp).evaluate(cexp, ctx);
+        } catch (FaultException fe) {
+            throw fe;
+        } catch (Throwable t) {
+            throw new FaultException(cexp.getOwner().constants.qnSubLanguageExecutionFault, t.toString(), t);
+        }
+    }
+
+    public Node evaluateNode(OExpression cexp, EvaluationContext ctx) throws FaultException {
+        try {
+            return findRuntime(cexp).evaluateNode(cexp, ctx);
+        } catch (FaultException fe) {
+            throw fe;
+        } catch (Throwable t) {
+            throw new FaultException(cexp.getOwner().constants.qnSubLanguageExecutionFault, t.toString(), t);
+        }
+    }
+
+    public Calendar evaluateAsDate(OExpression cexp, EvaluationContext ctx) throws FaultException {
+        try {
+            return findRuntime(cexp).evaluateAsDate(cexp, ctx);
+        } catch (FaultException fe) {
+            throw fe;
+        } catch (Throwable t) {
+            throw new FaultException(cexp.getOwner().constants.qnSubLanguageExecutionFault, t.toString(), t);
+        }
+    }
+
+    public Duration evaluateAsDuration(OExpression cexp, EvaluationContext ctx) throws FaultException {
+        try {
+            return findRuntime(cexp).evaluateAsDuration(cexp, ctx);
+        } catch (FaultException fe) {
+            throw fe;
+        } catch (Throwable t) {
+            throw new FaultException(cexp.getOwner().constants.qnSubLanguageExecutionFault, t.toString(), t);
+        }
+    }
+
+    private ExpressionLanguageRuntime findRuntime(OExpression cexp) {
+        return _runtimes.get(cexp.expressionLanguage);
+    }
 
 }

Modified: ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/FLOW.java
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/FLOW.java?rev=581046&r1=581045&r2=581046&view=diff
==============================================================================
--- ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/FLOW.java (original)
+++ ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/FLOW.java Mon Oct  1 12:44:54 2007
@@ -55,7 +55,7 @@
         for (Iterator<OLink> i = _oflow.localLinks.iterator(); i.hasNext(); ) {
             OLink link = i.next();
             LinkStatusChannel lsc = newChannel(LinkStatusChannel.class);
-            myLinkFrame.links.put(link,new LinkInfo(link,lsc,lsc));
+            myLinkFrame.links.put(link,new LinkInfo(link,lsc));
         }
 
         for (Iterator<OActivity> i = _oflow.parallelActivities.iterator(); i.hasNext();) {

Modified: ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/FOREACH.java
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/FOREACH.java?rev=581046&r1=581045&r2=581046&view=diff
==============================================================================
--- ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/FOREACH.java (original)
+++ ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/FOREACH.java Mon Oct  1 12:44:54 2007
@@ -22,7 +22,6 @@
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.ode.bpel.common.FaultException;
-import org.apache.ode.bpel.explang.EvaluationException;
 import org.apache.ode.bpel.o.OExpression;
 import org.apache.ode.bpel.o.OForEach;
 import org.apache.ode.bpel.o.OScope;
@@ -187,11 +186,11 @@
         try {
             return getBpelRuntimeContext().getExpLangRuntime().
                     evaluateAsNumber(condition, getEvaluationContext()).intValue();
-        } catch (EvaluationException e) {
+        } catch (FaultException e) {
             String msg;
             msg = "ForEach counter value couldn't be evaluated as xs:unsignedInt.";
             __log.error(msg, e);
-            throw new FaultException(_oforEach.getOwner().constants.qnForEachCounterError,msg);
+            throw new FaultException(_oforEach.getOwner().constants.qnForEachCounterError,msg, e);
         }
     }
 

Modified: ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/LinkFrame.java
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/LinkFrame.java?rev=581046&r1=581045&r2=581046&view=diff
==============================================================================
--- ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/LinkFrame.java (original)
+++ ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/LinkFrame.java Mon Oct  1 12:44:54 2007
@@ -25,24 +25,25 @@
 import java.util.Map;
 
 /**
- * Link stack frame allowing resolution of {@link OLink} objects to the
- * current {@link LinkInfo} in context.
+ * Link stack frame allowing resolution of {@link OLink} objects to the current {@link LinkInfo} in context.
  */
 class LinkFrame implements Serializable {
 
-	private static final long serialVersionUID = 1L;
-	LinkFrame next;
-  Map<OLink, LinkInfo> links = new HashMap<OLink, LinkInfo>();
+    private static final long serialVersionUID = 1L;
 
-  LinkFrame(LinkFrame next) {
-    this.next = next;
-  }
+    LinkFrame next;
 
-  LinkInfo resolve(OLink link) {
-    LinkInfo li = links.get(link);
-    if (li == null && next != null)
-      return next.resolve(link);
-    return li;
-  }
+    Map<OLink, LinkInfo> links = new HashMap<OLink, LinkInfo>();
+
+    LinkFrame(LinkFrame next) {
+        this.next = next;
+    }
+
+    LinkInfo resolve(OLink link) {
+        LinkInfo li = links.get(link);
+        if (li == null && next != null)
+            return next.resolve(link);
+        return li;
+    }
 
 }

Modified: ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/LinkInfo.java
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/LinkInfo.java?rev=581046&r1=581045&r2=581046&view=diff
==============================================================================
--- ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/LinkInfo.java (original)
+++ ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/LinkInfo.java Mon Oct  1 12:44:54 2007
@@ -27,21 +27,16 @@
  * Run-time represetation of the link data.
  */
 class LinkInfo implements Serializable {
-	private static final long serialVersionUID = 1L;
+    private static final long serialVersionUID = 1L;
 
-	final OLink olink;
+    final OLink olink;
 
-  /** Channel to be used for link status publisher. */
-  final LinkStatusChannel pub;
+    /** Channel to be used for link status publisher. */
+    final LinkStatusChannel channel;
 
-  /** Channel to be used for link status listener. */
-  final LinkStatusChannel sub;
-
-
-  LinkInfo(OLink olink, LinkStatusChannel pub, LinkStatusChannel sub) {
-    this.olink = olink;
-    this.pub = pub;
-    this.sub = sub;
-  }
+    LinkInfo(OLink olink, LinkStatusChannel channel) {
+        this.olink = olink;
+        this.channel = channel;
+    }
 
 }

Modified: ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/PICK.java
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/PICK.java?rev=581046&r1=581045&r2=581046&view=diff
==============================================================================
--- ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/PICK.java (original)
+++ ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/PICK.java Mon Oct  1 12:44:54 2007
@@ -28,7 +28,6 @@
 import org.apache.commons.logging.LogFactory;
 import org.apache.ode.bpel.common.CorrelationKey;
 import org.apache.ode.bpel.common.FaultException;
-import org.apache.ode.bpel.explang.EvaluationException;
 import org.apache.ode.bpel.o.OElementVarType;
 import org.apache.ode.bpel.o.OMessageVarType;
 import org.apache.ode.bpel.o.OPickReceive;
@@ -123,10 +122,6 @@
             dpe(_opick.outgoingLinks);
             _self.parent.completed(fault, CompensationHandler.emptySet());
             return;
-        } catch (EvaluationException e) {
-            String msg = "Unexpected evaluation error evaluating alarm.";
-            __log.error(msg, e);
-            throw new InvalidProcessException(msg, e);
         }
 
         // Dead path all the alarms that have no chace of coming first.

Modified: ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/REPEATUNTIL.java
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/REPEATUNTIL.java?rev=581046&r1=581045&r2=581046&view=diff
==============================================================================
--- ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/REPEATUNTIL.java (original)
+++ ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/REPEATUNTIL.java Mon Oct  1 12:44:54 2007
@@ -24,7 +24,6 @@
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.ode.bpel.common.FaultException;
-import org.apache.ode.bpel.explang.EvaluationException;
 import org.apache.ode.bpel.o.ORepeatUntil;
 import org.apache.ode.bpel.o.OScope;
 import org.apache.ode.bpel.runtime.channels.FaultData;
@@ -76,13 +75,7 @@
      * @throws FaultException in case of standard expression fault (e.g. selection failure)
      */
     private boolean checkCondition() throws FaultException {
-        try {
-            return getBpelRuntimeContext().getExpLangRuntime().evaluateAsBoolean(getORepeatUntil().untilCondition,getEvaluationContext());
-        } catch (EvaluationException e) {
-            String msg = "Unexpected expression evaluation error checking repeatUntil condition.";
-            __log.error(msg, e);
-            throw new InvalidProcessException(msg,e);
-        }
+        return getBpelRuntimeContext().getExpLangRuntime().evaluateAsBoolean(getORepeatUntil().untilCondition,getEvaluationContext());
     }
 
     private class WAITER extends BpelJacobRunnable {

Modified: ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/SCOPEACT.java
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/SCOPEACT.java?rev=581046&r1=581045&r2=581046&view=diff
==============================================================================
--- ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/SCOPEACT.java (original)
+++ ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/SCOPEACT.java Mon Oct  1 12:44:54 2007
@@ -27,6 +27,8 @@
 import java.util.Map;
 import java.util.Set;
 
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 import org.apache.ode.bpel.o.OLink;
 import org.apache.ode.bpel.o.OScope;
 import org.apache.ode.bpel.o.OScope.Variable;
@@ -47,6 +49,8 @@
  * A scope activity. The scope activity creates a new scope frame and proceeeds using the {@link SCOPE} template.
  */
 public class SCOPEACT extends ACTIVITY {
+    private static final Log __log = LogFactory.getLog(SCOPEACT.class);
+    
     private static final long serialVersionUID = -4593029783757994939L;
 
     public SCOPEACT(ActivityInfo self, ScopeFrame scopeFrame, LinkFrame linkFrame) {
@@ -55,7 +59,9 @@
 
     public void run() {
 
+        
         if (((OScope) _self.o).isolatedScope) {
+            __log.debug("found ISOLATED scope, instance ISOLATEDGUARD");
             instance(new ISOLATEDGUARD(createLockList(), newChannel(SynchChannel.class)));
 
         } else {
@@ -144,6 +150,8 @@
         @Override
         public void run() {
 
+            __log.debug("LINKSTATUSINTERCEPTOR: running ");
+
             Set<ChannelListener> mlset = new HashSet<ChannelListener>();
             
             if (_status == null)
@@ -153,6 +161,8 @@
     
                     /** Our owner will notify us when it becomes clear what to do with the links. */
                     public void val(Object retVal) {
+                        __log.debug("LINKSTATUSINTERCEPTOR: status received " + retVal);
+                        
                         _status = (Boolean) retVal;
                         for (OLink available : _statuses.keySet())
                             _linkFrame.resolve(available).channel.linkStatus(_statuses.get(available) && _status);
@@ -226,6 +236,7 @@
         public void run() {
             if (_locksNeeded.isEmpty()) {
                 // acquired all locks.
+                __log.debug("ISOLATIONGUARD: got all required locks: " + _locksAcquired);
 
                 ScopeFrame newFrame = new ScopeFrame((OScope) _self.o, getBpelRuntimeContext().createScopeInstance(
                         _scopeFrame.scopeInstanceId, (OScope) _self.o), _scopeFrame, null);
@@ -240,8 +251,11 @@
                 instance(new SCOPE(_self, newFrame, linkframe));
                 return;
             } else {
+                __log.debug("ISOLATIONGUARD: don't have all locks still need: " + _locksNeeded);
+
                 // try to acquire the locks in sequence (IMPORTANT) not all at once.
                 IsolationLock il = _locksNeeded.get(0);
+                
                 if (il.writeLock)
                     il.lockChannel.writeLock(_synchChannel);
                 else
@@ -251,6 +265,7 @@
                     private static final long serialVersionUID = 2857261074409098274L;
 
                     public void ret() {
+                        __log.debug("ISOLATIONGUARD: got lock: " + _locksNeeded.get(0));
                         _locksAcquired.add(_locksNeeded.remove(0));
                         instance(ISOLATEDGUARD.this);
                     }
@@ -267,7 +282,7 @@
      * @author Maciej Szefler <mszefler at gmail dot com>
      *
      */
-    private static class UNLOCKER extends BpelJacobRunnable {
+    private class UNLOCKER extends BpelJacobRunnable {
 
         private static final long serialVersionUID = -476393080609348172L;
 
@@ -294,6 +309,7 @@
         @Override
         public void run() {
 
+            __log.debug("running UNLOCKER");
             object(new ParentScopeChannelListener(_self) {
 
                 public void cancelled() {
@@ -332,6 +348,11 @@
          * 
          */
         private void unlockAll() {
+            __log.debug("UNLOCKER: unlockAll: " + _locks);
+
+            if (((OScope)SCOPEACT.this._self.o).atomicScope)
+                getBpelRuntimeContext().forceFlush();
+                
             for (IsolationLock il : _locks)
                 il.lockChannel.unlock(_synchChannel);
             _locks.clear();

Modified: ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/SWITCH.java
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/SWITCH.java?rev=581046&r1=581045&r2=581046&view=diff
==============================================================================
--- ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/SWITCH.java (original)
+++ ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/SWITCH.java Mon Oct  1 12:44:54 2007
@@ -20,7 +20,6 @@
 
 import org.apache.ode.bpel.common.FaultException;
 import org.apache.ode.bpel.explang.EvaluationContext;
-import org.apache.ode.bpel.explang.EvaluationException;
 import org.apache.ode.bpel.o.OSwitch;
 import org.apache.ode.bpel.runtime.channels.FaultData;
 
@@ -54,11 +53,6 @@
           matchedOCase = ocase;
           break;
         }
-      } catch (EvaluationException e) {
-        String msg = "Unexpected evaluation exception.";
-        __log.error(msg,e);
-        // TODO: Better location information.
-        throw new InvalidProcessException(msg,e);
       }catch(FaultException e){
       	__log.error(e.getMessage(),e);
         faultData = createFault(e.getQName(), ocase);

Modified: ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/WAIT.java
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/WAIT.java?rev=581046&r1=581045&r2=581046&view=diff
==============================================================================
--- ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/WAIT.java (original)
+++ ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/WAIT.java Mon Oct  1 12:44:54 2007
@@ -22,7 +22,6 @@
 import org.apache.commons.logging.LogFactory;
 import org.apache.ode.bpel.common.FaultException;
 import org.apache.ode.bpel.explang.EvaluationContext;
-import org.apache.ode.bpel.explang.EvaluationException;
 import org.apache.ode.bpel.o.OWait;
 import org.apache.ode.bpel.runtime.channels.TerminationChannelListener;
 import org.apache.ode.bpel.runtime.channels.TimerResponseChannel;
@@ -54,10 +53,6 @@
                     + "; Reason: " + e.getMessage());
             _self.parent.completed(createFault(e.getQName(), _self.o), CompensationHandler.emptySet());
             return;
-        } catch (EvaluationException ee) {
-            String msg = "Unexpected error evaluating wait condition.";
-            __log.error(msg, ee);
-            throw new InvalidProcessException(msg,ee);
         }
 
 
@@ -99,7 +94,7 @@
     }
 
 
-    protected Date getDueDate() throws FaultException, EvaluationException {
+    protected Date getDueDate() throws FaultException {
 
         OWait wait = (OWait)_self.o;
 

Modified: ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/WHILE.java
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/WHILE.java?rev=581046&r1=581045&r2=581046&view=diff
==============================================================================
--- ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/WHILE.java (original)
+++ ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/WHILE.java Mon Oct  1 12:44:54 2007
@@ -24,7 +24,6 @@
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.ode.bpel.common.FaultException;
-import org.apache.ode.bpel.explang.EvaluationException;
 import org.apache.ode.bpel.o.OScope;
 import org.apache.ode.bpel.o.OWhile;
 import org.apache.ode.bpel.runtime.channels.FaultData;
@@ -57,24 +56,25 @@
             condResult = checkCondition();
         } catch (FaultException fe) {
             __log.error(fe);
-            _self.parent.completed(createFault(fe.getQName(), _self.o),_compHandlers);
+            _self.parent.completed(createFault(fe.getQName(), _self.o), _compHandlers);
             return;
         }
 
         if (condResult) {
-            ActivityInfo child = new ActivityInfo(genMonotonic(),
-                    getOWhile().activity,
-                    newChannel(TerminationChannel.class), newChannel(ParentScopeChannel.class));
+            ActivityInfo child = new ActivityInfo(genMonotonic(), getOWhile().activity, newChannel(TerminationChannel.class),
+                    newChannel(ParentScopeChannel.class));
             instance(createChild(child, _scopeFrame, _linkFrame));
             instance(new WAITER(child));
-        } else /* stop. */ {
+        } else /* stop. */{
             _self.parent.completed(null, _compHandlers);
         }
     }
 
-    /* (non-Javadoc)
-    * @see java.lang.Object#toString()
-    */
+    /*
+     * (non-Javadoc)
+     * 
+     * @see java.lang.Object#toString()
+     */
     public String toString() {
         return "<T:Act:While:" + _self.o + ">";
     }
@@ -84,28 +84,25 @@
     }
 
     private OWhile getOWhile() {
-        return (OWhile)_self.o;
+        return (OWhile) _self.o;
     }
 
     /**
      * Evaluates the while condition.
-     *
+     * 
      * @return <code>true</code> if the while condition is satisfied, <code>false</code> otherwise.
-     * @throws FaultException in case of standard expression fault (e.g. selection failure)
+     * @throws FaultException
+     *             in case of standard expression fault (e.g. selection failure)
      */
     private boolean checkCondition() throws FaultException {
-        try {
-            return getBpelRuntimeContext().getExpLangRuntime().evaluateAsBoolean(getOWhile().whileCondition,getEvaluationContext());
-        } catch (EvaluationException e) {
-            String msg = "Unexpected expression evaluation error checking while condition.";
-            __log.error(msg, e);
-            throw new InvalidProcessException(msg,e);
-        }
+        return getBpelRuntimeContext().getExpLangRuntime().evaluateAsBoolean(getOWhile().whileCondition, getEvaluationContext());
     }
 
     private class WAITER extends BpelJacobRunnable {
         private static final long serialVersionUID = -7645042174027252066L;
+
         private ActivityInfo _child;
+
         private boolean _terminated;
 
         WAITER(ActivityInfo child) {
@@ -125,7 +122,7 @@
                 private static final long serialVersionUID = 3907167240907524405L;
 
                 public void compensate(OScope scope, SynchChannel ret) {
-                    _self.parent.compensate(scope,ret);
+                    _self.parent.compensate(scope, ret);
                     instance(WAITER.this);
                 }
 
@@ -137,8 +134,13 @@
                         instance(WHILE.this);
                 }
 
-                public void cancelled() { completed(null, CompensationHandler.emptySet()); }
-                public void failure(String reason, Element data) { completed(null, CompensationHandler.emptySet()); }
+                public void cancelled() {
+                    completed(null, CompensationHandler.emptySet());
+                }
+
+                public void failure(String reason, Element data) {
+                    completed(null, CompensationHandler.emptySet());
+                }
             }));
         }
     }

Modified: ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/explang/konst/KonstExpressionLanguageRuntimeImpl.java
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/explang/konst/KonstExpressionLanguageRuntimeImpl.java?rev=581046&r1=581045&r2=581046&view=diff
==============================================================================
--- ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/explang/konst/KonstExpressionLanguageRuntimeImpl.java (original)
+++ ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/explang/konst/KonstExpressionLanguageRuntimeImpl.java Mon Oct  1 12:44:54 2007
@@ -38,61 +38,62 @@
   public void initialize(Map properties) throws ConfigurationException {
   }
 
-  public String evaluateAsString(OExpression cexp, EvaluationContext ctx) throws FaultException , EvaluationException {
+  public String evaluateAsString(OExpression cexp, EvaluationContext ctx) throws FaultException  {
     OConstantExpression konst = (OConstantExpression) cexp;
     if (konst.getVal() instanceof String)
       return (String) konst.getVal();
-    throw new TypeCastException(TypeCastException.TYPE_STRING, konst.getVal().toString());
+    throw new FaultException(cexp.getOwner().constants.qnInvalidExpressionValue);
   }
 
-  public boolean evaluateAsBoolean(OExpression cexp, EvaluationContext ctx) throws FaultException, EvaluationException {
+  public boolean evaluateAsBoolean(OExpression cexp, EvaluationContext ctx) throws FaultException {
     OConstantExpression konst = (OConstantExpression) cexp;
     if (konst.getVal() instanceof Boolean)
       return ((Boolean)konst.getVal()).booleanValue();
-    throw new TypeCastException(TypeCastException.TYPE_BOOLEAN, konst.getVal().toString());
+    throw new FaultException(cexp.getOwner().constants.qnInvalidExpressionValue);
+
   }
 
-  public Number evaluateAsNumber(OExpression cexp, EvaluationContext ctx) throws FaultException, EvaluationException {
+  public Number evaluateAsNumber(OExpression cexp, EvaluationContext ctx) throws FaultException{
     OConstantExpression konst = (OConstantExpression) cexp;
     if (konst.getVal() instanceof Number)
       return (Number)konst.getVal();
-    throw new TypeCastException(TypeCastException.TYPE_NUMBER, konst.getVal().toString());
+    throw new FaultException(cexp.getOwner().constants.qnInvalidExpressionValue);
   }
 
   public List evaluate(OExpression cexp, EvaluationContext ctx)
-          throws FaultException, EvaluationException {
+          throws FaultException {
     OConstantExpression konst = (OConstantExpression) cexp;
     if (konst.getVal() instanceof List)
       return (List) konst.getVal();
-    throw new TypeCastException(TypeCastException.TYPE_NODELIST, konst.getVal().toString());
+    throw new FaultException(cexp.getOwner().constants.qnInvalidExpressionValue);
   }
 
-  public Node evaluateNode(OExpression cexp, EvaluationContext context) throws FaultException, EvaluationException {
+  public Node evaluateNode(OExpression cexp, EvaluationContext context) throws FaultException{
     OConstantExpression konst = (OConstantExpression) cexp;
     if (konst.getVal() instanceof Node)
       return (Node) konst.getVal();
-    throw new TypeCastException(TypeCastException.TYPE_NODE, konst.getVal().toString());
+    throw new FaultException(cexp.getOwner().constants.qnInvalidExpressionValue);
   }
 
   public Calendar evaluateAsDate(OExpression cexp, EvaluationContext context)
-          throws FaultException , EvaluationException {
+          throws FaultException  {
     OConstantExpression konst = (OConstantExpression) cexp;
 
     if (konst.getVal() instanceof Calendar)
       return (Calendar) konst.getVal();
 
-    throw new TypeCastException(TypeCastException.TYPE_DATE, konst.getVal().toString());
+    throw new FaultException(cexp.getOwner().constants.qnInvalidExpressionValue);
 
   }
 
   public Duration evaluateAsDuration(OExpression cexp, EvaluationContext context)
-          throws FaultException, EvaluationException {
+          throws FaultException{
 
     OConstantExpression konst = (OConstantExpression) cexp;
 
     if (konst.getVal() instanceof Duration)
       return (Duration) konst.getVal();
+    throw new FaultException(cexp.getOwner().constants.qnInvalidExpressionValue);
 
-    throw new TypeCastException(TypeCastException.TYPE_DURATION, konst.getVal().toString());
   }
 }

Modified: ode/trunk/bpel-runtime/src/test/java/org/apache/ode/bpel/runtime/CoreBpelTest.java
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-runtime/src/test/java/org/apache/ode/bpel/runtime/CoreBpelTest.java?rev=581046&r1=581045&r2=581046&view=diff
==============================================================================
--- ode/trunk/bpel-runtime/src/test/java/org/apache/ode/bpel/runtime/CoreBpelTest.java (original)
+++ ode/trunk/bpel-runtime/src/test/java/org/apache/ode/bpel/runtime/CoreBpelTest.java Mon Oct  1 12:44:54 2007
@@ -409,4 +409,9 @@
         
     }
 
+    public void forceFlush() {
+        // TODO Auto-generated method stub
+        
+    }
+
 }

Modified: ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestFlowActivity2/TestActivityFlow.bpel
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestFlowActivity2/TestActivityFlow.bpel?rev=581046&r1=581045&r2=581046&view=diff
==============================================================================
--- ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestFlowActivity2/TestActivityFlow.bpel (original)
+++ ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestFlowActivity2/TestActivityFlow.bpel Mon Oct  1 12:44:54 2007
@@ -61,12 +61,15 @@
 				<link name="probe1-to-probe3"/>
 				<link name="probe2-to-probe3"/>
 			</links>
+			
+
 			<receive name="receive1" partnerLink="request" portType="wns:testFlowActivityPT"
 				operation="request" variable="request" createInstance="yes">
 				<sources>
 					<source linkName="receive-to-assign1"/>
 				</sources>
 			</receive>
+
 			<!-- Copy input variables to internal accumulators -->
 			<!-- After the copy the process splits into two execution paths -->
 			<sequence>