Author: karthick
Date: Thu Jun  4 22:15:32 2009
New Revision: 781860

URL: http://svn.apache.org/viewvc?rev=781860&view=rev
Log:
Define a frame for the event handler's <scope> activity, so that its variables 
are resolved properly.

Modified:
    
ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelRuntimeContextImpl.java
    
ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ASSIGN.java
    
ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/EH_EVENT.java

Modified: 
ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelRuntimeContextImpl.java
URL: 
http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelRuntimeContextImpl.java?rev=781860&r1=781859&r2=781860&view=diff
==============================================================================
--- 
ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelRuntimeContextImpl.java
 (original)
+++ 
ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelRuntimeContextImpl.java
 Thu Jun  4 22:15:32 2009
@@ -185,6 +185,9 @@
      * @see 
BpelRuntimeContext#isVariableInitialized(org.apache.ode.bpel.runtime.VariableInstance)
      */
     public boolean isVariableInitialized(VariableInstance var) {
+               if (var == null) {
+                       return false;
+               }
         ScopeDAO scopeDAO = _dao.getScope(var.scopeInstance);
         XmlDataDAO dataDAO = scopeDAO.getVariable(var.declaration.name);
         return !dataDAO.isNull();

Modified: 
ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ASSIGN.java
URL: 
http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ASSIGN.java?rev=781860&r1=781859&r2=781860&view=diff
==============================================================================
--- 
ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ASSIGN.java
 (original)
+++ 
ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ASSIGN.java
 Thu Jun  4 22:15:32 2009
@@ -128,6 +128,11 @@
         Node lval = null;
         if (!(to instanceof OAssign.PartnerLinkRef)) {
             VariableInstance lvar = _scopeFrame.resolve(to.getVariable());
+            if (lvar == null) {
+                String msg = __msgs.msgEvalException(to.toString(), "Could not 
resolve variable in current scope");
+                if (__log.isDebugEnabled()) __log.debug(to + ": " + msg);
+                throw new 
FaultException(getOAsssign().getOwner().constants.qnSelectionFailure, msg);
+            }
             if (!napi.isVariableInitialized(lvar)) {
                 Document doc = DOMUtils.newDocument();
                 Node val = to.getVariable().type.newInstance(doc);

Modified: 
ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/EH_EVENT.java
URL: 
http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/EH_EVENT.java?rev=781860&r1=781859&r2=781860&view=diff
==============================================================================
--- 
ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/EH_EVENT.java
 (original)
+++ 
ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/EH_EVENT.java
 Thu Jun  4 22:15:32 2009
@@ -303,7 +303,12 @@
 
                             LinkFrame lf = new LinkFrame(null);
 
-                            instance(new SCOPE(child,ehScopeFrame, lf));
+                            ScopeFrame innerScopeFrame = new 
ScopeFrame((OScope) _oevent.activity,
+                                    
getBpelRuntimeContext().createScopeInstance(_scopeFrame.scopeInstanceId, 
(OScope) _oevent.activity),
+                                    ehScopeFrame,
+                                    _comps,
+                                    _fault);
+                            instance(new SCOPE(child, innerScopeFrame, lf));
 
                             // If we previously terminated the other 
activiites, then we do the same
                             // here; this is easier then undoing the receive.


Reply via email to