You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ode.apache.org by mr...@apache.org on 2008/08/02 00:27:42 UTC

svn commit: r681872 - in /ode/branches/rtver: bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/bom/ bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/common/extension/ runtime-repo/src/...

Author: mriou
Date: Fri Aug  1 15:27:40 2008
New Revision: 681872

URL: http://svn.apache.org/viewvc?rev=681872&view=rev
Log:
The new runtime repo module compiles. Now that this works, I can go and break more stuff (the compiler).

Added:
    ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/common/extension/ExtensibilityQNames.java
      - copied, changed from r680846, ode/branches/rtver/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/bom/ExtensibilityQNames.java
    ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/v2/EH_ALARM.java
      - copied, changed from r680846, ode/branches/rtver/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/EH_ALARM.java
    ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/v2/xpath20/WrappedFaultException.java
Removed:
    ode/branches/rtver/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/bom/ExtensibilityQNames.java
    ode/branches/rtver/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/EH_ALARM.java
Modified:
    ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/common/extension/AbstractAsyncExtensionOperation.java
    ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/common/extension/AbstractExtensionBundle.java
    ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/common/extension/AbstractSyncExtensionOperation.java
    ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/common/extension/ExtensionContext.java
    ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/v2/ASSIGN.java
    ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/v2/EXTENSIONACTIVITY.java
    ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/v2/EvaluationContext.java
    ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/v2/ExprEvaluationContextImpl.java
    ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/v2/ExtensionContextImpl.java
    ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/v2/FOREACH.java
    ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/v2/INVOKE.java
    ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/v2/PROCESS.java
    ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/v2/RuntimeInstanceImpl.java
    ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/v2/SCOPE.java

Modified: ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/common/extension/AbstractAsyncExtensionOperation.java
URL: http://svn.apache.org/viewvc/ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/common/extension/AbstractAsyncExtensionOperation.java?rev=681872&r1=681871&r2=681872&view=diff
==============================================================================
--- ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/common/extension/AbstractAsyncExtensionOperation.java (original)
+++ ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/common/extension/AbstractAsyncExtensionOperation.java Fri Aug  1 15:27:40 2008
@@ -19,10 +19,6 @@
 package org.apache.ode.bpel.rtrep.common.extension;
 
 import org.apache.ode.bpel.common.FaultException;
-import org.apache.ode.bpel.compiler.api.CompilationException;
-import org.apache.ode.bpel.compiler.api.CompilerContext;
-import org.apache.ode.bpel.compiler.api.ExtensionValidator;
-import org.apache.ode.bpel.compiler.bom.ExtensibleElement;
 import org.w3c.dom.Element;
 
 /**
@@ -30,12 +26,13 @@
  * 
  * @author Tammo van Lessen (University of Stuttgart)
  */
-public abstract class AbstractAsyncExtensionOperation implements ExtensionValidator,
+public abstract class AbstractAsyncExtensionOperation implements //ExtensionValidator,
 															ExtensionOperation {
 
-	public void validate(CompilerContext context, ExtensibleElement element) throws CompilationException {
-		// default behavior: pass
-	}
+    // TODO check what to do with compiler context
+//	public void validate(CompilerContext context, ExtensibleElement element) throws CompilationException {
+//		// default behavior: pass
+//	}
 
 	public abstract void run(ExtensionContext context, Element element)
 			throws FaultException;

Modified: ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/common/extension/AbstractExtensionBundle.java
URL: http://svn.apache.org/viewvc/ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/common/extension/AbstractExtensionBundle.java?rev=681872&r1=681871&r2=681872&view=diff
==============================================================================
--- ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/common/extension/AbstractExtensionBundle.java (original)
+++ ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/common/extension/AbstractExtensionBundle.java Fri Aug  1 15:27:40 2008
@@ -27,7 +27,7 @@
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.apache.ode.bpel.compiler.api.ExtensionValidator;
+//import org.apache.ode.bpel.compiler.api.ExtensionValidator;
 
 /**
 * Abstract class that bundles and registers <code>&lt;extensionActivity&gt;</code> and
@@ -75,18 +75,19 @@
 		return getExtensionOperationClass(localName).newInstance();
 	}
 
-	public final Map<QName, ExtensionValidator> getExtensionValidators() {
-		Map<QName, ExtensionValidator> result = new HashMap<QName, ExtensionValidator>();
-		String ns = getNamespaceURI();
-		for (String localName : extensionsByName.keySet()) {
-			if (ExtensionValidator.class.isAssignableFrom(extensionsByName.get(localName))) {
-				try {
-					result.put(new QName(ns, localName), (ExtensionValidator)getExtensionOperationInstance(localName));
-				} catch (Exception e) {
-					__log.warn("Could not instantiate extension validator for '{" + ns + "}" + localName);
-				}
-			}
-		}
-		return result;
-	}
+    // TODO See what to do with the validation part
+//	public final Map<QName, ExtensionValidator> getExtensionValidators() {
+//		Map<QName, ExtensionValidator> result = new HashMap<QName, ExtensionValidator>();
+//		String ns = getNamespaceURI();
+//		for (String localName : extensionsByName.keySet()) {
+//			if (ExtensionValidator.class.isAssignableFrom(extensionsByName.get(localName))) {
+//				try {
+//					result.put(new QName(ns, localName), (ExtensionValidator)getExtensionOperationInstance(localName));
+//				} catch (Exception e) {
+//					__log.warn("Could not instantiate extension validator for '{" + ns + "}" + localName);
+//				}
+//			}
+//		}
+//		return result;
+//	}
 }

Modified: ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/common/extension/AbstractSyncExtensionOperation.java
URL: http://svn.apache.org/viewvc/ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/common/extension/AbstractSyncExtensionOperation.java?rev=681872&r1=681871&r2=681872&view=diff
==============================================================================
--- ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/common/extension/AbstractSyncExtensionOperation.java (original)
+++ ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/common/extension/AbstractSyncExtensionOperation.java Fri Aug  1 15:27:40 2008
@@ -19,10 +19,6 @@
 package org.apache.ode.bpel.rtrep.common.extension;
 
 import org.apache.ode.bpel.common.FaultException;
-import org.apache.ode.bpel.compiler.api.CompilationException;
-import org.apache.ode.bpel.compiler.api.CompilerContext;
-import org.apache.ode.bpel.compiler.api.ExtensionValidator;
-import org.apache.ode.bpel.compiler.bom.ExtensibleElement;
 import org.w3c.dom.Element;
 
 /**
@@ -30,12 +26,13 @@
  * 
  * @author Tammo van Lessen (University of Stuttgart)
  */
-public abstract class AbstractSyncExtensionOperation implements ExtensionValidator,
+public abstract class AbstractSyncExtensionOperation implements //ExtensionValidator,
 															ExtensionOperation {
 
-	public void validate(CompilerContext context, ExtensibleElement element) throws CompilationException {
-		// default behavior: pass
-	}
+    // TODO check what to do with compiler context
+//	public void validate(CompilerContext context, ExtensibleElement element) throws CompilationException {
+//		// default behavior: pass
+//	}
 
 	protected abstract void runSync(ExtensionContext context, Element element) throws FaultException;
 	

Copied: ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/common/extension/ExtensibilityQNames.java (from r680846, ode/branches/rtver/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/bom/ExtensibilityQNames.java)
URL: http://svn.apache.org/viewvc/ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/common/extension/ExtensibilityQNames.java?p2=ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/common/extension/ExtensibilityQNames.java&p1=ode/branches/rtver/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/bom/ExtensibilityQNames.java&r1=680846&r2=681872&rev=681872&view=diff
==============================================================================
--- ode/branches/rtver/bpel-compiler/src/main/java/org/apache/ode/bpel/compiler/bom/ExtensibilityQNames.java (original)
+++ ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/common/extension/ExtensibilityQNames.java Fri Aug  1 15:27:40 2008
@@ -16,11 +16,10 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.ode.bpel.compiler.bom;
+package org.apache.ode.bpel.rtrep.common.extension;
 
 import javax.xml.namespace.QName;
 
-
 public abstract class ExtensibilityQNames {
     /*
      * Activity Recovery extensibility elements.
@@ -37,8 +36,7 @@
 
     //
     // External variables 
-    //
-    
+    //    
     /** Namespace for external variables. */
     private static final String EXTVAR_NS = "http://ode.apache.org/externalVariables";
     

Modified: ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/common/extension/ExtensionContext.java
URL: http://svn.apache.org/viewvc/ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/common/extension/ExtensionContext.java?rev=681872&r1=681871&r2=681872&view=diff
==============================================================================
--- ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/common/extension/ExtensionContext.java (original)
+++ ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/common/extension/ExtensionContext.java Fri Aug  1 15:27:40 2008
@@ -118,4 +118,9 @@
      */
     OActivity getOActivity();
     
+    //ScopeFrame getScopeFrame();
+    void complete();
+    
+    void completeWithFault(Throwable t);
+    void completeWithFault(FaultException fault);
 }

Modified: ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/v2/ASSIGN.java
URL: http://svn.apache.org/viewvc/ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/v2/ASSIGN.java?rev=681872&r1=681871&r2=681872&view=diff
==============================================================================
--- ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/v2/ASSIGN.java (original)
+++ ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/v2/ASSIGN.java Fri Aug  1 15:27:40 2008
@@ -19,10 +19,9 @@
 package org.apache.ode.bpel.rtrep.v2;
 
 import java.util.List;
+import java.net.URI;
 
 import javax.xml.namespace.QName;
-import java.io.StringWriter;
-import java.io.PrintWriter;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -32,6 +31,8 @@
 import org.apache.ode.bpel.evt.VariableModificationEvent;
 import org.apache.ode.bpel.rtrep.v2.channels.FaultData;
 import org.apache.ode.bpel.rtrep.common.extension.ExtensionContext;
+import org.apache.ode.bpel.rtrep.common.extension.ExtensibilityQNames;
+import org.apache.ode.bpel.rtrep.common.extension.ExtensionOperation;
 import org.apache.ode.utils.DOMUtils;
 import org.apache.ode.utils.Namespaces;
 import org.apache.ode.utils.msg.MessageBundle;
@@ -574,40 +575,31 @@
         return data;
     }
 
-    private void invokeExtensionAssignOperation(
-            OAssign.ExtensionAssignOperation eao) throws FaultException {
+    private void invokeExtensionAssignOperation(OAssign.ExtensionAssignOperation eao) throws FaultException {
+        final ExtensionContext context = new ExtensionContextImpl(_self, _scopeFrame, getBpelRuntime());
+        final QName extensionId = DOMUtils.getElementQName(eao.nestedElement.getElement());
         try {
-            final ExtensionContext helper = new ExtensionContextImpl(_self.o, _scopeFrame, getBpelRuntime());
-            final ExtensionResponseChannel responseChannel = newChannel(ExtensionResponseChannel.class);
-
-            getBpelRuntime().executeExtension(
-                    DOMUtils.getElementQName(eao.nestedElement.getElement()),
-                    helper, eao.nestedElement.getElement(), responseChannel);
-
-            object(new ExtensionResponseChannelListener(responseChannel) {
-                private static final long serialVersionUID = 1L;
-
-                public void onCompleted() {
-                    _self.parent.completed(null, CompensationHandler.emptySet());
+            ExtensionOperation ea = getBpelRuntime().createExtensionActivityImplementation(extensionId);
+            if (ea == null) {
+                for (OProcess.OExtension oe : eao.getOwner().mustUnderstandExtensions) {
+                    if (extensionId.getNamespaceURI().equals(oe.namespaceURI)) {
+                        __log.warn("Lookup of extension activity " + extensionId + " failed.");
+                        throw new FaultException(ExtensibilityQNames.UNKNOWN_EA_FAULT_NAME, "Lookup of extension activity " + extensionId + " failed. No implementation found.");
+                    }
                 }
+                // act like <empty> - do nothing
+                context.complete();
+                return;
+            }
 
-                public void onFailure(Throwable t) {
-                    StringWriter sw = new StringWriter();
-                    t.printStackTrace(new PrintWriter(sw));
-                    FaultData fault = createFault(new QName(Namespaces.WSBPEL2_0_FINAL_EXEC,
-                            "subLanguageExecutionFault"), _self.o, sw.getBuffer().toString());
-                    _self.parent.completed(fault, CompensationHandler.emptySet());
-                };
-            });
-
+            ea.run(context, eao.nestedElement.getElement());
         } catch (FaultException fault) {
             __log.error(fault);
-            FaultData faultData = createFault(fault.getQName(), _self.o, fault
-                    .getMessage());
-            _self.parent.completed(faultData, CompensationHandler.emptySet());
+            context.completeWithFault(fault);
         }
     }
 
+
     private class EvaluationContextProxy implements EvaluationContext {
 
         private OScope.Variable _var;
@@ -665,6 +657,10 @@
         public boolean narrowTypes() {
             return false;
         }
+
+        public URI getBaseResourceURI() {
+            return _ctx.getBaseResourceURI();
+        }
     }
 
 }

Copied: ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/v2/EH_ALARM.java (from r680846, ode/branches/rtver/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/EH_ALARM.java)
URL: http://svn.apache.org/viewvc/ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/v2/EH_ALARM.java?p2=ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/v2/EH_ALARM.java&p1=ode/branches/rtver/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/EH_ALARM.java&r1=680846&r2=681872&rev=681872&view=diff
==============================================================================
--- ode/branches/rtver/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/EH_ALARM.java (original)
+++ ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/v2/EH_ALARM.java Fri Aug  1 15:27:40 2008
@@ -16,21 +16,10 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.ode.bpel.runtime;
+package org.apache.ode.bpel.rtrep.v2;
 
 import org.apache.ode.bpel.common.FaultException;
-import org.apache.ode.bpel.explang.EvaluationContext;
-import org.apache.ode.bpel.o.OEventHandler;
-import org.apache.ode.bpel.o.OScope;
-import org.apache.ode.bpel.runtime.channels.EventHandlerControlChannel;
-import org.apache.ode.bpel.runtime.channels.EventHandlerControlChannelListener;
-import org.apache.ode.bpel.runtime.channels.FaultData;
-import org.apache.ode.bpel.runtime.channels.ParentScopeChannel;
-import org.apache.ode.bpel.runtime.channels.ParentScopeChannelListener;
-import org.apache.ode.bpel.runtime.channels.TerminationChannel;
-import org.apache.ode.bpel.runtime.channels.TerminationChannelListener;
-import org.apache.ode.bpel.runtime.channels.TimerResponseChannel;
-import org.apache.ode.bpel.runtime.channels.TimerResponseChannelListener;
+import org.apache.ode.bpel.rtrep.v2.channels.*;
 import org.apache.ode.jacob.SynchChannel;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -38,7 +27,6 @@
 import java.util.Calendar;
 import java.util.HashSet;
 import java.util.Set;
-import java.util.Date;
 
 import org.w3c.dom.Element;
 
@@ -83,7 +71,7 @@
 
         if (_oalarm.forExpr != null)
             try {
-                getBpelRuntimeContext().getExpLangRuntime().evaluateAsDuration(_oalarm.forExpr, getEvaluationContext()).addTo(alarm);
+                getBpelRuntime().getExpLangRuntime().evaluateAsDuration(_oalarm.forExpr, getEvaluationContext()).addTo(alarm);
             } catch (FaultException e) {
                 __log.error(e);
                 _psc.completed(createFault(e.getQName(),_oalarm.forExpr), _comps);
@@ -91,7 +79,7 @@
             }
         else if (_oalarm.untilExpr != null)
             try {
-                alarm.setTime(getBpelRuntimeContext().getExpLangRuntime().evaluateAsDate(_oalarm.untilExpr, getEvaluationContext()).getTime());
+                alarm.setTime(getBpelRuntime().getExpLangRuntime().evaluateAsDate(_oalarm.untilExpr, getEvaluationContext()).getTime());
             } catch (FaultException e) {
                 __log.error(e);
                 _psc.completed(createFault(e.getQName(),_oalarm.untilExpr), _comps);
@@ -103,7 +91,7 @@
     }
 
     protected EvaluationContext getEvaluationContext() {
-        return new ExprEvaluationContextImpl(_scopeFrame,getBpelRuntimeContext());
+        return new ExprEvaluationContextImpl(_scopeFrame,getBpelRuntime());
     }
 
     /**
@@ -128,7 +116,7 @@
 
             if (now.before(_alarm)) {
                 TimerResponseChannel trc = newChannel(TimerResponseChannel.class);
-                getBpelRuntimeContext().registerTimer(trc,_alarm.getTime());
+                getBpelRuntime().registerTimer(trc,_alarm.getTime());
                 object(false,new TimerResponseChannelListener(trc){
                     private static final long serialVersionUID = 1110683632756756017L;
 
@@ -207,7 +195,7 @@
                     if (!_stopped && _oalarm.repeatExpr != null) {
                         Calendar next = Calendar.getInstance();
                         try {
-                            getBpelRuntimeContext().getExpLangRuntime().evaluateAsDuration(_oalarm.forExpr, getEvaluationContext()).addTo(next);
+                            getBpelRuntime().getExpLangRuntime().evaluateAsDuration(_oalarm.forExpr, getEvaluationContext()).addTo(next);
                         } catch (FaultException e) {
                             __log.error(e);
                             _psc.completed(createFault(e.getQName(),_oalarm.forExpr), _comps);

Modified: ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/v2/EXTENSIONACTIVITY.java
URL: http://svn.apache.org/viewvc/ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/v2/EXTENSIONACTIVITY.java?rev=681872&r1=681871&r2=681872&view=diff
==============================================================================
--- ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/v2/EXTENSIONACTIVITY.java (original)
+++ ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/v2/EXTENSIONACTIVITY.java Fri Aug  1 15:27:40 2008
@@ -23,12 +23,9 @@
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.ode.bpel.common.FaultException;
-import org.apache.ode.bpel.compiler.bom.ExtensibilityQNames;
-import org.apache.ode.bpel.o.OExtensionActivity;
-import org.apache.ode.bpel.rtrep.v2.extension.ExtensionContext;
-import org.apache.ode.bpel.rtrep.v2.extension.ExtensionOperation;
 import org.apache.ode.bpel.rtrep.common.extension.ExtensionOperation;
 import org.apache.ode.bpel.rtrep.common.extension.ExtensionContext;
+import org.apache.ode.bpel.rtrep.common.extension.ExtensibilityQNames;
 import org.apache.ode.utils.DOMUtils;
 
 /**

Modified: ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/v2/EvaluationContext.java
URL: http://svn.apache.org/viewvc/ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/v2/EvaluationContext.java?rev=681872&r1=681871&r2=681872&view=diff
==============================================================================
--- ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/v2/EvaluationContext.java (original)
+++ ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/v2/EvaluationContext.java Fri Aug  1 15:27:40 2008
@@ -97,5 +97,6 @@
      * using this evaluation context.
      */
     boolean narrowTypes();
-    
+
+    URI getBaseResourceURI();
 }

Modified: ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/v2/ExprEvaluationContextImpl.java
URL: http://svn.apache.org/viewvc/ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/v2/ExprEvaluationContextImpl.java?rev=681872&r1=681871&r2=681872&view=diff
==============================================================================
--- ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/v2/ExprEvaluationContextImpl.java (original)
+++ ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/v2/ExprEvaluationContextImpl.java Fri Aug  1 15:27:40 2008
@@ -19,6 +19,7 @@
 package org.apache.ode.bpel.rtrep.v2;
 
 import java.util.Map;
+import java.net.URI;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -117,4 +118,7 @@
 		_native.sendEvent(se);
 	}
 
+    public URI getBaseResourceURI() {
+        return _native.getBaseResourceURI();
+    }
 }

Modified: ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/v2/ExtensionContextImpl.java
URL: http://svn.apache.org/viewvc/ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/v2/ExtensionContextImpl.java?rev=681872&r1=681871&r2=681872&view=diff
==============================================================================
--- ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/v2/ExtensionContextImpl.java (original)
+++ ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/v2/ExtensionContextImpl.java Fri Aug  1 15:27:40 2008
@@ -18,14 +18,22 @@
  */
 package org.apache.ode.bpel.rtrep.v2;
 
-import java.util.Map;
+import java.io.PrintWriter;
+import java.io.StringWriter;
 import java.util.HashMap;
+import java.util.Map;
+
+import javax.xml.namespace.QName;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.ode.bpel.common.FaultException;
-import org.apache.ode.bpel.rtrep.common.extension.ExtensionContext;
+import org.apache.ode.bpel.evt.ScopeEvent;
+import org.apache.ode.bpel.evt.VariableModificationEvent;
 import org.apache.ode.bpel.evar.ExternalVariableModuleException;
+import org.apache.ode.bpel.rtrep.v2.channels.FaultData;
+import org.apache.ode.bpel.rtrep.common.extension.ExtensionContext;
+import org.apache.ode.utils.Namespaces;
 import org.w3c.dom.Node;
 
 
@@ -39,6 +47,8 @@
 	private ScopeFrame _scopeFrame;
 	private ActivityInfo _activityInfo;
 	
+	private boolean hasCompleted = false;
+
 	public ExtensionContextImpl(ActivityInfo activityInfo, ScopeFrame scopeFrame, RuntimeInstanceImpl context) {
 		_activityInfo = activityInfo;
 		_context = context;
@@ -92,8 +102,11 @@
 
 	public void writeVariable(OScope.Variable variable, Node value)
 			throws FaultException, ExternalVariableModuleException {
-        VariableInstance vi = _scopeFrame.resolve(variable);
-        _context.commitChanges(vi, value);
+		VariableInstance vi = _scopeFrame.resolve(variable);
+		_context.commitChanges(vi, value);
+        VariableModificationEvent vme = new VariableModificationEvent(variable.name);
+        vme.setNewValue(value);
+        sendEvent(vme);
 	}
 
 	private OScope.Variable getVisibleVariable(String varName) {
@@ -108,4 +121,50 @@
 		return _activityInfo.o;
 	}
 
+	public void sendEvent(ScopeEvent event) {
+        if (event.getLineNo() == -1 && _activityInfo.o.debugInfo != null) {
+        	event.setLineNo(_activityInfo.o.debugInfo.startLine);
+        }
+        _scopeFrame.fillEventInfo(event);
+        _context.sendEvent(event);
+	}
+	
+	public void complete() {
+		if (!hasCompleted) {
+			_activityInfo.parent.completed(null, CompensationHandler.emptySet());
+			hasCompleted = true;
+		} else {
+			if (__log.isWarnEnabled()) {
+				__log.warn("Activity '" + _activityInfo.o.name + "' has already been completed.");
+			}
+		}
+	}
+	
+	public void completeWithFault(Throwable t) {
+		if (!hasCompleted) {
+			StringWriter sw = new StringWriter();
+			t.printStackTrace(new PrintWriter(sw));
+			FaultData fault = new FaultData(new QName(Namespaces.WSBPEL2_0_FINAL_EXEC, "subLanguageExecutionFault"),
+                    _activityInfo.o, sw.getBuffer().toString());
+	        _activityInfo.parent.completed(fault, CompensationHandler.emptySet());
+			hasCompleted = true;
+		} else {
+			if (__log.isWarnEnabled()) {
+				__log.warn("Activity '" + _activityInfo.o.name + "' has already been completed.");
+			}
+		}
+	}
+	
+	public void completeWithFault(FaultException ex) {
+		if (!hasCompleted) {
+			FaultData fault = new FaultData(ex.getQName(), _activityInfo.o, ex.getMessage());
+			_activityInfo.parent.completed(fault, CompensationHandler.emptySet());
+			hasCompleted = true;
+		} else {
+			if (__log.isWarnEnabled()) {
+				__log.warn("Activity '" + _activityInfo.o.name + "' has already been completed.");
+			}
+		}
+
+	}
 }

Modified: ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/v2/FOREACH.java
URL: http://svn.apache.org/viewvc/ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/v2/FOREACH.java?rev=681872&r1=681871&r2=681872&view=diff
==============================================================================
--- ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/v2/FOREACH.java (original)
+++ ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/v2/FOREACH.java Fri Aug  1 15:27:40 2008
@@ -32,6 +32,7 @@
 import org.apache.ode.bpel.rtrep.v2.channels.ParentScopeChannelListener;
 import org.apache.ode.bpel.rtrep.v2.channels.TerminationChannel;
 import org.apache.ode.bpel.rtrep.v2.channels.TerminationChannelListener;
+import org.apache.ode.bpel.evar.ExternalVariableModuleException;
 import org.apache.ode.jacob.ChannelListener;
 import org.apache.ode.jacob.SynchChannel;
 import org.apache.ode.utils.DOMUtils;
@@ -206,8 +207,14 @@
                 _oforEach.innerScope), _scopeFrame, null);
         VariableInstance vinst = newFrame.resolve(_oforEach.counterVariable);
 
-        getBpelRuntime().initializeVariable(vinst, counterNode);
-
+        try {
+            getBpelRuntime().initializeVariable(vinst, counterNode);
+        } catch (ExternalVariableModuleException e) {
+          __log.error("Exception while initializing external variable", e);
+            _self.parent.failure(e.toString(), null);
+            return;
+        }
+        
         // Generating event
         VariableModificationEvent se = new VariableModificationEvent(vinst.declaration.name);
         se.setNewValue(counterNode);

Modified: ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/v2/INVOKE.java
URL: http://svn.apache.org/viewvc/ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/v2/INVOKE.java?rev=681872&r1=681871&r2=681872&view=diff
==============================================================================
--- ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/v2/INVOKE.java (original)
+++ ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/v2/INVOKE.java Fri Aug  1 15:27:40 2008
@@ -86,7 +86,7 @@
         try {
             if (!isTwoWay) {
                 FaultData faultData = null;
-                getBpelRuntime().invoke(_scopeFrame.resolve(_oinvoke.partnerLink),
+                getBpelRuntime().invoke(null, _scopeFrame.resolve(_oinvoke.partnerLink),
                     _oinvoke.operation, outboundMsg, null);
                 _self.parent.completed(faultData, CompensationHandler.emptySet());
 
@@ -94,7 +94,7 @@
                 final VariableInstance outputVar = _scopeFrame.resolve(_oinvoke.outputVar);
                 InvokeResponseChannel invokeResponseChannel = newChannel(InvokeResponseChannel.class);
 
-                final String mexId = getBpelRuntime().invoke(
+                final String mexId = getBpelRuntime().invoke(invokeResponseChannel.export(),
                     _scopeFrame.resolve(_oinvoke.partnerLink), _oinvoke.operation,
                     outboundMsg, invokeResponseChannel);
 

Modified: ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/v2/PROCESS.java
URL: http://svn.apache.org/viewvc/ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/v2/PROCESS.java?rev=681872&r1=681871&r2=681872&view=diff
==============================================================================
--- ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/v2/PROCESS.java (original)
+++ ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/v2/PROCESS.java Fri Aug  1 15:27:40 2008
@@ -19,11 +19,6 @@
 package org.apache.ode.bpel.rtrep.v2;
 
 import org.apache.ode.bpel.evt.ProcessInstanceStartedEvent;
-import org.apache.ode.bpel.o.OBase;
-import org.apache.ode.bpel.o.OProcess;
-import org.apache.ode.bpel.o.OScope;
-import org.apache.ode.bpel.o.OFailureHandling;
-import org.apache.ode.bpel.o.OScope.Variable;
 import org.apache.ode.bpel.rtrep.v2.channels.FaultData;
 import org.apache.ode.bpel.rtrep.v2.channels.ParentScopeChannel;
 import org.apache.ode.bpel.rtrep.v2.channels.ParentScopeChannelListener;

Modified: ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/v2/RuntimeInstanceImpl.java
URL: http://svn.apache.org/viewvc/ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/v2/RuntimeInstanceImpl.java?rev=681872&r1=681871&r2=681872&view=diff
==============================================================================
--- ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/v2/RuntimeInstanceImpl.java (original)
+++ ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/v2/RuntimeInstanceImpl.java Fri Aug  1 15:27:40 2008
@@ -4,6 +4,7 @@
 import java.io.OutputStream;
 import java.util.Collection;
 import java.util.Date;
+import java.net.URI;
 
 import javax.wsdl.Operation;
 import javax.xml.namespace.QName;
@@ -342,53 +343,7 @@
         return _brc.getSourceEPR(mexId);
     }
 
-    public void executeExtension(QName extensionId, ExtensionContext context, Element element,
-            ExtensionResponseChannel extResponseChannel) throws FaultException {
-        __log.debug("Execute extension activity");
-        final String channelId = extResponseChannel.export();
-        ExtensionOperation ea = createExtensionActivityImplementation(extensionId);
-        if (ea == null) {
-            if (_runtime._mustUnderstandExtensions.contains(extensionId.getNamespaceURI())) {
-                __log.warn("Lookup of extension activity " + extensionId + " failed.");
-                throw new FaultException(new QName("urn:bpel20", "extlookup-failed"), "Lookup of extension activity " + extensionId
-                        + " failed.");
-            } else {
-                // act like <empty> - do nothing
-                completeExtensionExecution(channelId, null);
-                return;
-            }
-        }
-
-        try {
-            ea.run(context, element);
-            completeExtensionExecution(channelId, null);
-        } catch (RuntimeException e) {
-            __log.error("Error during execution of extension activity.", e);
-            completeExtensionExecution(channelId, e);
-        }
-    }
-
-    private void completeExtensionExecution(final String channelId, final Throwable t) {
-        if (t != null) {
-            _vpu.inject(new BpelJacobRunnable() {
-                private static final long serialVersionUID = -1L;
-
-                public void run() {
-                    importChannel(channelId, ExtensionResponseChannel.class).onFailure(t);
-                }
-            });
-        } else {
-            _vpu.inject(new BpelJacobRunnable() {
-                private static final long serialVersionUID = -1L;
-
-                public void run() {
-                    importChannel(channelId, ExtensionResponseChannel.class).onCompleted();
-                }
-            });
-        }
-    }
-
-    private ExtensionOperation createExtensionActivityImplementation(QName name) {
+    public ExtensionOperation createExtensionActivityImplementation(QName name) {
         if (name == null) {
             return null;
         }
@@ -397,7 +352,7 @@
             return null;
         } else {
             try {
-                return (ExtensionOperation) bundle.getExtensionOperationInstance(name.getLocalPart());
+                return bundle.getExtensionOperationInstance(name.getLocalPart());
             } catch (Exception e) {
                 return null;
             }
@@ -751,4 +706,7 @@
         _brc = ctx;
     }
 
+    public URI getBaseResourceURI() {
+        return _runtime._pconf.getBaseURI();
+    }
 }

Modified: ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/v2/SCOPE.java
URL: http://svn.apache.org/viewvc/ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/v2/SCOPE.java?rev=681872&r1=681871&r2=681872&view=diff
==============================================================================
--- ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/v2/SCOPE.java (original)
+++ ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/v2/SCOPE.java Fri Aug  1 15:27:40 2008
@@ -73,24 +73,22 @@
         instance(createChild(_child, _scopeFrame, _linkFrame));
 
         if (_oscope.eventHandler != null) {
-            for (Iterator<OEventHandler.OAlarm> i = _oscope.eventHandler.onAlarms.iterator(); i.hasNext(); ) {
-                OEventHandler.OAlarm alarm = i.next();
+            for (OEventHandler.OAlarm alarm : _oscope.eventHandler.onAlarms) {
                 EventHandlerInfo ehi = new EventHandlerInfo(alarm,
                         newChannel(EventHandlerControlChannel.class),
                         newChannel(ParentScopeChannel.class),
                         newChannel(TerminationChannel.class));
                 _eventHandlers.add(ehi);
-                instance(new EH_ALARM(ehi.psc,ehi.tc, ehi.cc, alarm, _scopeFrame));
+                instance(new EH_ALARM(ehi.psc, ehi.tc, ehi.cc, alarm, _scopeFrame));
             }
-            
-            for (Iterator<OEventHandler.OEvent> i = _oscope.eventHandler.onMessages.iterator(); i.hasNext(); ) {
-                OEventHandler.OEvent event = i.next();
+
+            for (OEventHandler.OEvent event : _oscope.eventHandler.onMessages) {
                 EventHandlerInfo ehi = new EventHandlerInfo(event,
                         newChannel(EventHandlerControlChannel.class),
                         newChannel(ParentScopeChannel.class),
                         newChannel(TerminationChannel.class));
                 _eventHandlers.add(ehi);
-                instance(new EH_EVENT(ehi.psc,ehi.tc, ehi.cc, event, _scopeFrame));
+                instance(new EH_EVENT(ehi.psc, ehi.tc, ehi.cc, event, _scopeFrame));
             }
         }
 

Added: ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/v2/xpath20/WrappedFaultException.java
URL: http://svn.apache.org/viewvc/ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/v2/xpath20/WrappedFaultException.java?rev=681872&view=auto
==============================================================================
--- ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/v2/xpath20/WrappedFaultException.java (added)
+++ ode/branches/rtver/runtime-repo/src/main/java/org/apache/ode/bpel/rtrep/v2/xpath20/WrappedFaultException.java Fri Aug  1 15:27:40 2008
@@ -0,0 +1,22 @@
+package org.apache.ode.bpel.rtrep.v2.xpath20;
+
+import org.apache.ode.bpel.common.FaultException;
+
+public class WrappedFaultException extends RuntimeException {
+    private static final long serialVersionUID = -2677245631724501573L;
+
+    public FaultException _fault;
+
+    public WrappedFaultException(String message) {
+        super(message);
+    }
+
+    public WrappedFaultException(FaultException message) {
+        _fault = message;
+    }
+
+    public WrappedFaultException(String message, FaultException cause) {
+        super(message, cause);
+    }
+
+}