Return-Path: Delivered-To: apmail-ode-commits-archive@www.apache.org Received: (qmail 40928 invoked from network); 1 Oct 2007 19:45:23 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 1 Oct 2007 19:45:23 -0000 Received: (qmail 86194 invoked by uid 500); 1 Oct 2007 19:45:12 -0000 Delivered-To: apmail-ode-commits-archive@ode.apache.org Received: (qmail 86177 invoked by uid 500); 1 Oct 2007 19:45:12 -0000 Mailing-List: contact commits-help@ode.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@ode.apache.org Delivered-To: mailing list commits@ode.apache.org Received: (qmail 86166 invoked by uid 99); 1 Oct 2007 19:45:12 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 01 Oct 2007 12:45:12 -0700 X-ASF-Spam-Status: No, hits=-100.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.3] (HELO eris.apache.org) (140.211.11.3) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 01 Oct 2007 19:45:21 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id ED2F71A9832; Mon, 1 Oct 2007 12:45:00 -0700 (PDT) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: 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/... Date: Mon, 01 Oct 2007 19:44:56 -0000 To: commits@ode.apache.org From: mszefler@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20071001194500.ED2F71A9832@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org 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 QName 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 links) { // Dead path all of the ougoing links (nothing has been activated yet!) for (Iterator 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 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 linkVals) { + public ExprEvaluationContextImpl(ScopeFrame scopeInstnce, BpelRuntimeContext ntv, Map 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 _runtimes = - new HashMap(); - - 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 _runtimes = new HashMap(); + + 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 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 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 links = new HashMap(); + 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 links = new HashMap(); + + 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 mlset = new HashSet(); 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 * */ - 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 ""; } @@ -84,28 +84,25 @@ } private OWhile getOWhile() { - return (OWhile)_self.o; + return (OWhile) _self.o; } /** * Evaluates the while condition. - * + * * @return true if the while condition is satisfied, false 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 @@ + + +