http://git-wip-us.apache.org/repos/asf/ode/blob/cf630ce4/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/EXTENSIONACTIVITY.java
----------------------------------------------------------------------
diff --git 
a/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/EXTENSIONACTIVITY.java 
b/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/EXTENSIONACTIVITY.java
index 7c61035..9182c38 100644
--- 
a/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/EXTENSIONACTIVITY.java
+++ 
b/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/EXTENSIONACTIVITY.java
@@ -19,14 +19,16 @@
 package org.apache.ode.bpel.runtime;
 
 import java.io.IOException;
+import java.io.PrintWriter;
+import java.io.StringWriter;
 
 import org.apache.ode.bpel.common.FaultException;
-import org.apache.ode.bpel.extension.ExtensionOperation;
+import org.apache.ode.bpel.compiler.bom.ExtensibilityQNames;
+import org.apache.ode.bpel.eapi.ExtensionContext;
 import org.apache.ode.bpel.obj.OExtensionActivity;
-import org.apache.ode.bpel.obj.OProcess;
-import 
org.apache.ode.bpel.runtime.common.extension.AbstractSyncExtensionOperation;
-import org.apache.ode.bpel.runtime.common.extension.ExtensibilityQNames;
-import org.apache.ode.bpel.runtime.common.extension.ExtensionContext;
+import org.apache.ode.bpel.runtime.channels.ExtensionResponse;
+import org.apache.ode.bpel.runtime.channels.FaultData;
+import org.apache.ode.jacob.ReceiveProcess;
 import org.apache.ode.utils.DOMUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -43,56 +45,52 @@ public class EXTENSIONACTIVITY extends ACTIVITY {
        private static final Logger __log = LoggerFactory
                        .getLogger(EXTENSIONACTIVITY.class);
 
+    private OExtensionActivity _oext;
+
        public EXTENSIONACTIVITY(ActivityInfo self, ScopeFrame scopeFrame,
                        LinkFrame linkFrame) {
                super(self, scopeFrame, linkFrame);
+            _oext = (OExtensionActivity) _self.o;
        }
 
        public final void run() {
-               final ExtensionContext context = new ExtensionContextImpl(this,
-                               getBpelRuntimeContext());
-               final OExtensionActivity oea = (OExtensionActivity) _self.o;
+        try {
+               final ExtensionResponse responseChannel = 
newChannel(ExtensionResponse.class);
+               final ExtensionContext helper = new 
ExtensionContextImpl(_scopeFrame, getBpelRuntimeContext());
+
+               
getBpelRuntimeContext().executeExtension(_oext.getExtensionName(), helper, 
DOMUtils.stringToDOM(_oext.getNestedElement()), responseChannel);
+               
+               object(new ReceiveProcess() {
+                                       private static final long 
serialVersionUID = 3643564901004147956L;
+                               }.setChannel(responseChannel).setReceiver(new 
ExtensionResponse() {
+                                       private static final long 
serialVersionUID = -6977609968638662977L;
 
-               try {
-                       ExtensionOperation ea = getBpelRuntimeContext()
-                                       
.createExtensionActivityImplementation(oea.getExtensionName());
-                       if (ea == null) {
-                               for (OProcess.OExtension oe : 
oea.getOwner().getMustUnderstandExtensions()) {
-                                       if 
(oea.getExtensionName().getNamespaceURI().equals(
-                                                       oe.getNamespace())) {
-                                               __log.warn("Lookup of extension 
activity "
-                                                               + 
oea.getExtensionName() + " failed.");
-                                               throw new FaultException(
-                                                               
ExtensibilityQNames.UNKNOWN_EA_FAULT_NAME,
-                                                               "Lookup of 
extension activity "
-                                                                               
+ oea.getExtensionName()
-                                                                               
+ " failed. No implementation found.");
+                                       public void onCompleted() {
+                                               _self.parent.completed(null, 
CompensationHandler.emptySet());
                                        }
-                               }
-                               // act like <empty> - do nothing
-                               context.complete();
-                               return;
-                       }
 
-                       ea.run(context, 
DOMUtils.stringToDOM(oea.getNestedElement()));
+                       public void onFailure(Throwable t) {
+                               StringWriter sw = new StringWriter();
+                               t.printStackTrace(new PrintWriter(sw));
+                               FaultData fault = 
createFault(_oext.getOwner().getConstants().getQnSubLanguageExecutionFault(), 
_oext, sw.getBuffer().toString());
+                           _self.parent.completed(fault, 
CompensationHandler.emptySet());
+                       };
+            }));
 
-                       // Complete the context for sync extension operations. 
Asynchronous
-                       // operations have to control their completion 
themselves.
-                       if (ea instanceof AbstractSyncExtensionOperation) {
-                               context.complete();
-                       }
                } catch (FaultException fault) {
-                       __log.error("Execution of extension activity caused an 
exception.",
-                                       fault);
-                       context.completeWithFault(fault);
+                       __log.error("Exception while invoking extension 
activity '" + _oext.getName() + "'.", fault);
+            FaultData faultData = createFault(fault.getQName(), _oext, 
fault.getMessage());
+            _self.parent.completed(faultData, CompensationHandler.emptySet());
                } catch (SAXException e) {
-               FaultException fault = new 
FaultException(ExtensibilityQNames.INVALID_EXTENSION_ELEMENT, "The nested 
element of extension activity '" + oea.getName() + "' for extension '" + 
oea.getExtensionName() + "' is no valid XML.");
-               context.completeWithFault(fault);
+               __log.error("Exception while invoking extension activity '" + 
_oext.getName() + "'.", e);
+               FaultData faultData = 
createFault(ExtensibilityQNames.INVALID_EXTENSION_ELEMENT, _self.o, "The nested 
element of extension activity '" + _oext.getName() + "' for extension '" + 
_oext.getExtensionName() + "' is no valid XML.");
+               _self.parent.completed(faultData, 
CompensationHandler.emptySet());
                } catch (IOException e) {
-                       FaultException fault = new 
FaultException(ExtensibilityQNames.INVALID_EXTENSION_ELEMENT, "The nested 
element of extension activity '" + oea.getName() + "' for extension '" + 
oea.getExtensionName() + "' is no valid XML.");
-                       context.completeWithFault(fault);
+                       __log.error("Exception while invoking extension 
activity '" + _oext.getName() + "'.", e);
+               FaultData faultData = 
createFault(ExtensibilityQNames.INVALID_EXTENSION_ELEMENT, _self.o, "The nested 
element of extension activity '" + _oext.getName() + "' for extension '" + 
_oext.getExtensionName() + "' is no valid XML.");
+               _self.parent.completed(faultData, 
CompensationHandler.emptySet());
                }
 
        }
 
-}
\ No newline at end of file
+}

http://git-wip-us.apache.org/repos/asf/ode/blob/cf630ce4/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ExtensionContextImpl.java
----------------------------------------------------------------------
diff --git 
a/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ExtensionContextImpl.java
 
b/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ExtensionContextImpl.java
index 4117c7e..f51b449 100644
--- 
a/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ExtensionContextImpl.java
+++ 
b/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ExtensionContextImpl.java
@@ -18,48 +18,37 @@
  */
 package org.apache.ode.bpel.runtime;
 
-import java.io.PrintWriter;
-import java.io.StringWriter;
-import java.net.URI;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
-import javax.xml.namespace.QName;
-
 import org.apache.ode.bpel.common.FaultException;
-import org.apache.ode.bpel.evar.ExternalVariableModuleException;
-import org.apache.ode.bpel.evt.ScopeEvent;
-import org.apache.ode.bpel.evt.VariableModificationEvent;
+import org.apache.ode.bpel.eapi.ExtensionContext;
 import org.apache.ode.bpel.obj.OActivity;
-import org.apache.ode.bpel.obj.OPartnerLink;
-import org.apache.ode.bpel.obj.OProcess;
+import org.apache.ode.bpel.obj.OLink;
+import org.apache.ode.bpel.obj.OProcess.OProperty;
 import org.apache.ode.bpel.obj.OScope;
-import org.apache.ode.bpel.runtime.channels.FaultData;
-import org.apache.ode.bpel.runtime.common.extension.ExtensionContext;
-import org.apache.ode.utils.Namespaces;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import org.apache.ode.bpel.obj.OScope.Variable;
 import org.w3c.dom.Node;
 
 /**
  * @author Tammo van Lessen (University of Stuttgart)
  */
 public class ExtensionContextImpl implements ExtensionContext {
-       private static final Logger __log = 
LoggerFactory.getLogger(ExtensionContextImpl.class);
-
        private BpelRuntimeContext _context;
-       private ACTIVITY _activity;
-       private ActivityInfo _activityInfo;
-       
-       private boolean hasCompleted = false;
-
-       //@hahnml: Changed to ACTIVITY to get the whole stuff with one parameter
-       public ExtensionContextImpl(ACTIVITY activity, BpelRuntimeContext 
context) {
-               _activityInfo = activity._self;
+       private ScopeFrame _scopeFrame;
+
+       public ExtensionContextImpl(ScopeFrame scopeFrame,
+                       BpelRuntimeContext context) {
                _context = context;
-               _activity = activity;
+               _scopeFrame = scopeFrame;
        }
-       
+
+       public List<OLink> getLinks() throws FaultException {
+               // TODO Auto-generated method stub
+               return null;
+       }
+
        public Long getProcessId() {
                return _context.getPid();
        }
@@ -68,13 +57,14 @@ public class ExtensionContextImpl implements 
ExtensionContext {
                        throws FaultException {
                Map<String, OScope.Variable> visVars = new HashMap<String, 
OScope.Variable>();
 
-               OActivity current = _activity._scopeFrame.oscope;
+               OActivity current = _scopeFrame.oscope;
                while (current != null) {
                        if (current instanceof OScope) {
-                               for (String varName : ((OScope) 
current).getVariables().keySet()) {
+                               for (String varName : ((OScope) 
current).getVariables()
+                                               .keySet()) {
                                        if (!visVars.containsKey(varName)) {
-                                               visVars.put(varName,
-                                                               ((OScope) 
current).getVariables().get(varName));
+                                               visVars.put(varName, ((OScope) 
current).getVariables()
+                                                               .get(varName));
                                        }
                                }
                        }
@@ -84,135 +74,44 @@ public class ExtensionContextImpl implements 
ExtensionContext {
                return visVars;
        }
 
-       public String readMessageProperty(OScope.Variable variable,
-                       OProcess.OProperty property) throws FaultException {
-               VariableInstance vi = _activity._scopeFrame.resolve(variable);
+       public boolean isLinkActive(OLink olink) throws FaultException {
+               // TODO Auto-generated method stub
+               return false;
+       }
+
+       public String readMessageProperty(Variable variable, OProperty property)
+                       throws FaultException {
+               VariableInstance vi = _scopeFrame.resolve(variable);
                return _context.readProperty(vi, property);
        }
 
        public Node readVariable(OScope.Variable variable) throws 
FaultException {
-               VariableInstance vi = _activity._scopeFrame.resolve(variable);
-               
-               return _activity._scopeFrame.fetchVariableData(_context, vi, 
false);
+               VariableInstance vi = _scopeFrame.resolve(variable);
+               return _context.readVariable(vi.scopeInstance,
+                               vi.declaration.getName(), true);
        }
 
        public void writeVariable(String variableName, Node value)
-                       throws FaultException, ExternalVariableModuleException {
-               OScope.Variable var = getVisibleVariable(variableName);
-               if (var == null) {
-                       throw new RuntimeException("Variable '" + variableName
-                                       + "' not visible.");
-               }
-               writeVariable(var, value);
+                       throws FaultException {
+               VariableInstance vi = _scopeFrame
+                               .resolve(getVisibleVariable(variableName));
+               _context.writeVariable(vi, value);
        }
 
        public Node readVariable(String variableName) throws FaultException {
-               OScope.Variable var = getVisibleVariable(variableName);
-               if (var == null) {
-                       throw new RuntimeException("Variable '" + variableName
-                                       + "' not visible.");
-               }
-
-               return readVariable(var);
-       }
-
-       public void writeVariable(OScope.Variable variable, Node value)
-                       throws FaultException, ExternalVariableModuleException {
-               VariableInstance vi = _activity._scopeFrame.resolve(variable);
-               _activity._scopeFrame.initializeVariable(_context, vi, value);
-               VariableModificationEvent vme = new VariableModificationEvent(
-                               variable.getName());
-               vme.setNewValue(value);
-               sendEvent(vme);
-       }
-
-       public OScope.Variable getVisibleVariable(String varName) {
-               return _activity._scopeFrame.oscope.getVisibleVariable(varName);
+               VariableInstance vi = _scopeFrame
+                               .resolve(getVisibleVariable(variableName));
+               return _context.readVariable(vi.scopeInstance,
+                               vi.declaration.getName(), true);
        }
 
-       public boolean isVariableVisible(String varName) {
-               return _activity._scopeFrame.oscope.getVisibleVariable(varName) 
!= null;
-       }
-
-       public String getActivityName() {
-               return _activityInfo.o.getName();
-       }
-
-       public OActivity getOActivity() {
-               return _activityInfo.o;
-       }
-
-       public void sendEvent(ScopeEvent event) {
-               if (event.getLineNo() == -1 && _activityInfo.o.getDebugInfo() 
!= null) {
-                       
event.setLineNo(_activityInfo.o.getDebugInfo().getStartLine());
-               }
-               _activity._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.getName()
-                                               + "' 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.getName()
-                                               + "' 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.getName()
-                                               + "' has already been 
completed.");
-                       }
-               }
-
-       }
-       
-       public BpelRuntimeContext getRuntimeInstance() {
-               return _context;
-       }
-
-       public URI getDUDir() {
-               return _context.getBaseResourceURI();
-       }
-
-       public void printToConsole(String msg) {
-               
LoggerFactory.getLogger("org.apache.ode.extension.Console").info(msg);
+       public void writeVariable(Variable variable, Node value)
+                       throws FaultException {
+               VariableInstance vi = _scopeFrame.resolve(variable);
+               _context.writeVariable(vi, value);
        }
 
-       public PartnerLinkInstance resolvePartnerLinkInstance(OPartnerLink pl) {
-               return _activity._scopeFrame.resolve(pl);
+       private Variable getVisibleVariable(String varName) {
+               return _scopeFrame.oscope.getVisibleVariable(varName);
        }
 }

http://git-wip-us.apache.org/repos/asf/ode/blob/cf630ce4/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/channels/ExtensionResponse.java
----------------------------------------------------------------------
diff --git 
a/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/channels/ExtensionResponse.java
 
b/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/channels/ExtensionResponse.java
new file mode 100644
index 0000000..3720391
--- /dev/null
+++ 
b/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/channels/ExtensionResponse.java
@@ -0,0 +1,34 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.ode.bpel.runtime.channels;
+
+import org.apache.ode.jacob.Channel;
+
+/**
+ * Response channel for extension activity executions.
+ *
+ * @author Tammo van Lessen (University of Stuttgart)
+ */
+public interface ExtensionResponse extends Channel {
+
+       void onCompleted();
+       
+       void onFailure(Throwable t);
+       
+}

http://git-wip-us.apache.org/repos/asf/ode/blob/cf630ce4/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/common/extension/AbstractAsyncExtensionOperation.java
----------------------------------------------------------------------
diff --git 
a/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/common/extension/AbstractAsyncExtensionOperation.java
 
b/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/common/extension/AbstractAsyncExtensionOperation.java
deleted file mode 100644
index a3c61df..0000000
--- 
a/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/common/extension/AbstractAsyncExtensionOperation.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.ode.bpel.runtime.common.extension;
-
-import org.apache.ode.bpel.common.FaultException;
-import org.apache.ode.bpel.extension.ExtensionOperation;
-import org.w3c.dom.Element;
-
-/**
- * Base class for creating new asynchronous extension implementations.
- * 
- * @author Tammo van Lessen (University of Stuttgart)
- */
-public abstract class AbstractAsyncExtensionOperation implements
-               ExtensionOperation {
-
-       public abstract void run(Object context, Element element)
-                       throws FaultException;
-
-}

http://git-wip-us.apache.org/repos/asf/ode/blob/cf630ce4/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/common/extension/AbstractExtensionBundle.java
----------------------------------------------------------------------
diff --git 
a/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/common/extension/AbstractExtensionBundle.java
 
b/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/common/extension/AbstractExtensionBundle.java
deleted file mode 100644
index e4e1857..0000000
--- 
a/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/common/extension/AbstractExtensionBundle.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.ode.bpel.runtime.common.extension;
-
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Set;
-
-import javax.xml.namespace.QName;
-
-import org.apache.ode.bpel.extension.ExtensionBundleRuntime;
-import org.apache.ode.bpel.extension.ExtensionBundleValidation;
-import org.apache.ode.bpel.extension.ExtensionOperation;
-import org.apache.ode.bpel.extension.ExtensionValidator;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Abstract class that bundles and registers
- * <code>&lt;extensionActivity&gt;</code> and
- * <code>&lt;extensionAssignOperation&gt;</code> implementations related to a
- * particular namespace.
- * 
- * @author Tammo van Lessen (University of Stuttgart)
- */
-public abstract class AbstractExtensionBundle implements
-               ExtensionBundleRuntime, ExtensionBundleValidation {
-
-       private static Logger __log = 
LoggerFactory.getLogger(AbstractExtensionBundle.class);
-       private Map<String, Class<? extends ExtensionOperation>> 
extensionsByName = new HashMap<String, Class<? extends ExtensionOperation>>();
-
-       /**
-        * Returns the extension namespace this bundle provides implementations 
for.
-        * 
-        * @return
-        */
-       public abstract String getNamespaceURI();
-
-       /**
-        * Register extension operations.
-        */
-       public abstract void registerExtensionActivities();
-
-       /**
-        * Register an {@link org.apache.ode.bpel.extension.ExtensionOperation}
-        * implementation as <code>&lt;extensionActivity&gt;</code>.
-        * 
-        * @param localName
-        * @param activity
-        */
-       protected final void registerExtensionOperation(String localName,
-                       Class<? extends ExtensionOperation> operation) {
-               extensionsByName.put(localName, operation);
-       }
-
-       /**
-        * Returns a list of the local names of registered extension operations.
-        */
-       public final Set<String> getExtensionOperationNames() {
-               return Collections.unmodifiableSet(extensionsByName.keySet());
-       }
-
-       public final Class<? extends ExtensionOperation> 
getExtensionOperationClass(
-                       String localName) {
-               return extensionsByName.get(localName);
-       }
-
-       public final ExtensionOperation getExtensionOperationInstance(
-                       String localName) throws InstantiationException,
-                       IllegalAccessException {
-               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;
-       }
-}

http://git-wip-us.apache.org/repos/asf/ode/blob/cf630ce4/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/common/extension/AbstractSyncExtensionOperation.java
----------------------------------------------------------------------
diff --git 
a/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/common/extension/AbstractSyncExtensionOperation.java
 
b/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/common/extension/AbstractSyncExtensionOperation.java
deleted file mode 100644
index 65420c4..0000000
--- 
a/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/common/extension/AbstractSyncExtensionOperation.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.ode.bpel.runtime.common.extension;
-
-import org.apache.ode.bpel.common.FaultException;
-import org.apache.ode.bpel.extension.ExtensionOperation;
-import org.w3c.dom.Element;
-
-/**
- * Base class for creating new extension implementations.
- * 
- * @author Tammo van Lessen (University of Stuttgart)
- */
-public abstract class AbstractSyncExtensionOperation implements
-               ExtensionOperation {
-
-       protected abstract void runSync(ExtensionContext context, Element 
element)
-                       throws FaultException;
-
-       public void run(Object contexto, Element element) throws FaultException 
{
-               ExtensionContext context = (ExtensionContext) contexto;
-               try {
-                       runSync(context, element);
-               } catch (FaultException f) {
-                       throw f;
-               }
-       }
-       
-}

http://git-wip-us.apache.org/repos/asf/ode/blob/cf630ce4/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/common/extension/ExtensibilityQNames.java
----------------------------------------------------------------------
diff --git 
a/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/common/extension/ExtensibilityQNames.java
 
b/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/common/extension/ExtensibilityQNames.java
deleted file mode 100644
index ed238ad..0000000
--- 
a/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/common/extension/ExtensibilityQNames.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.ode.bpel.runtime.common.extension;
-
-import javax.xml.namespace.QName;
-
-public abstract class ExtensibilityQNames {
-       /*
-        * Activity Recovery extensibility elements.
-        */
-       public static final String NS_ACTIVITY_RECOVERY = 
"http://ode.apache.org/activityRecovery";;
-       public static final QName FAILURE_HANDLING = new QName(
-                       NS_ACTIVITY_RECOVERY, "failureHandling");
-       public static final QName FAILURE_HANDLING_RETRY_FOR = new QName(
-                       NS_ACTIVITY_RECOVERY, "retryFor");
-       public static final QName FAILURE_HANDLING_RETRY_DELAY = new QName(
-                       NS_ACTIVITY_RECOVERY, "retryDelay");
-       public static final QName FAILURE_HANDLING_FAULT_ON = new QName(
-                       NS_ACTIVITY_RECOVERY, "faultOnFailure");
-
-       public static final String NS_BPEL_EXTENSIBILITY = 
"http://ode.apache.org/bpelExtensibility";;
-       
-       public static final QName UNKNOWN_EA_FAULT_NAME = new QName(
-                       NS_BPEL_EXTENSIBILITY, 
"unknownExtensionImplementation");
-       
-       public static final QName INVALID_EXTENSION_ELEMENT = new QName(
-                       NS_BPEL_EXTENSIBILITY, "invalidExtensionElement");
-       
-       //
-       // External variables
-       //
-       /** Namespace for external variables. */
-       private static final String EXTVAR_NS = 
"http://ode.apache.org/externalVariables";;
-
-       /** Attribute name for external variable id. */
-       public static final QName EXTVAR_ATTR = new QName(EXTVAR_NS, "id");
-
-       /** Attribute holding the name of the "related" variable. */
-       public static final QName EXTVAR_RELATED = new QName(EXTVAR_NS,
-                       "relates-to");
-
-}

http://git-wip-us.apache.org/repos/asf/ode/blob/cf630ce4/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/common/extension/ExtensionContext.java
----------------------------------------------------------------------
diff --git 
a/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/common/extension/ExtensionContext.java
 
b/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/common/extension/ExtensionContext.java
deleted file mode 100644
index 61da3aa..0000000
--- 
a/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/common/extension/ExtensionContext.java
+++ /dev/null
@@ -1,190 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.ode.bpel.runtime.common.extension;
-
-import java.net.URI;
-import java.util.Map;
-
-import org.apache.ode.bpel.common.FaultException;
-import org.apache.ode.bpel.evar.ExternalVariableModuleException;
-import org.apache.ode.bpel.obj.OActivity;
-import org.apache.ode.bpel.obj.OPartnerLink;
-import org.apache.ode.bpel.obj.OProcess;
-import org.apache.ode.bpel.obj.OScope;
-import org.apache.ode.bpel.runtime.BpelRuntimeContext;
-import org.apache.ode.bpel.runtime.PartnerLinkInstance;
-import org.w3c.dom.Node;
-
-/**
- * Context for executing extension activities or extension assign operations.
- * Implementations of the
- * {@link org.apache.ode.bpel.extension.ExtensionOperation} class use this
- * interface to access BPEL variables, property sets and link status.
- * 
- * All <code>ExtensionOperation</code> implementations must complete with
- * <code>complete()</code>, <code>completeWithFault(...)</code>.
- * 
- * @author Tammo van Lessen (University of Stuttgart)
- */
-public interface ExtensionContext {
-
-       /**
-        * Returns a list of variables visible in the current scope.
-        * 
-        * @return an unmodifiable list of visible variables.
-        * @throws FaultException
-        */
-       Map<String, OScope.Variable> getVisibleVariables() throws 
FaultException;
-
-       /**
-        * Returns whether a variable is visible in the current scope or not.
-        * 
-        * @param variableName
-        *            name of the variable.
-        * @return true if the variable is visible.
-        * @throws FaultException
-        */
-       boolean isVariableVisible(String variableName);
-
-       /**
-        * Read the value of a BPEL variable.
-        * 
-        * @param variable
-        *            variable to read
-        * @return the value of the variable, wrapped in a <code>Node</code>
-        */
-       Node readVariable(OScope.Variable variable) throws FaultException;
-
-       /**
-        * Read the value of a BPEL variable.
-        * 
-        * @param variableName
-        *            variable to read
-        * @return the value of the variable, wrapped in a <code>Node</code>
-        */
-       Node readVariable(String variableName) throws FaultException;
-
-       /**
-        * Write the value into a BPEL variable.
-        * 
-        * @param variable
-        *            variable to write
-        * @param value
-        *            the value to be stored into the variable
-        * @return the value of the variable, wrapped in a <code>Node</code>
-        */
-       void writeVariable(OScope.Variable variable, Node value)
-                       throws FaultException, ExternalVariableModuleException;
-
-       /**
-        * Write the value into a BPEL variable.
-        * 
-        * @param variableName
-        *            variable to write
-        * @param value
-        *            the value to be stored into the variable
-        * @return the value of the variable, wrapped in a <code>Node</code>
-        */
-       void writeVariable(String variableName, Node value) throws 
FaultException,
-                       ExternalVariableModuleException;
-
-       /**
-        * Read the value of a BPEL property.
-        * 
-        * @param variable
-        *            variable containing property
-        * @param property
-        *            property to read
-        * @return value of the property
-        */
-       String readMessageProperty(OScope.Variable variable,
-                       OProcess.OProperty property) throws FaultException;
-
-       /**
-        * Reads the current process instance id.
-        * 
-        * @return instance id
-        */
-       Long getProcessId();
-
-       /**
-        * Returns the name of the invoking activity.
-        * 
-        * @return activity name
-        */
-       String getActivityName();
-
-       /**
-        * Returns the location of the deployment bundle of the executed 
process.
-        * 
-        * @return URI of the deployment bundle.
-        */
-       URI getDUDir();
-
-       /**
-        * Allows printing debug output to the console. Output will be 
redirected to
-        * the logger associated with 
<code>org.apache.ode.extension.Console</code>.
-        * The target log level is INFO.
-        */
-       void printToConsole(String msg);
-
-       /**
-        * Marks the currently executed activity as successfully completed.
-        */
-       void complete();
-
-       /**
-        * Marks the currently executed activity as faulted.
-        * 
-        * @param t
-        *            an exception to be reported as the fault cause.
-        */
-       void completeWithFault(Throwable t);
-
-       /**
-        * Marks the currently executed activity as faulted.
-        * 
-        * @param fault
-        *            a fault.
-        */
-       void completeWithFault(FaultException fault);
-
-       /*
-        * Low-level-methods
-        */
-
-       /**
-        * Returns the OActivity object.
-        */
-       OActivity getOActivity();
-
-       /**
-        * Returns ODE's runtime instance.
-        */
-       BpelRuntimeContext getRuntimeInstance();
-
-       /**
-        * Returns an instance of the given OPartnerLink object
-        * 
-        * @param pl
-        *            the partner link model object
-        * @return the related partner link instance
-        */
-       PartnerLinkInstance resolvePartnerLinkInstance(OPartnerLink pl);
-}

http://git-wip-us.apache.org/repos/asf/ode/blob/cf630ce4/bpel-runtime/src/test/java/org/apache/ode/bpel/elang/xpath20/runtime/MockCompilerContext.java
----------------------------------------------------------------------
diff --git 
a/bpel-runtime/src/test/java/org/apache/ode/bpel/elang/xpath20/runtime/MockCompilerContext.java
 
b/bpel-runtime/src/test/java/org/apache/ode/bpel/elang/xpath20/runtime/MockCompilerContext.java
index 348ba28..ff92db5 100644
--- 
a/bpel-runtime/src/test/java/org/apache/ode/bpel/elang/xpath20/runtime/MockCompilerContext.java
+++ 
b/bpel-runtime/src/test/java/org/apache/ode/bpel/elang/xpath20/runtime/MockCompilerContext.java
@@ -35,7 +35,6 @@ import org.apache.ode.bpel.compiler.bom.Activity;
 import org.apache.ode.bpel.compiler.bom.BpelObject;
 import org.apache.ode.bpel.compiler.bom.Expression;
 import org.apache.ode.bpel.compiler.bom.ScopeLikeActivity;
-import org.apache.ode.bpel.extension.ExtensionValidator;
 import org.apache.ode.bpel.obj.OActivity;
 import org.apache.ode.bpel.obj.OElementVarType;
 import org.apache.ode.bpel.obj.OExpression;
@@ -255,10 +254,4 @@ public class MockCompilerContext implements 
CompilerContext {
                // TODO Auto-generated method stub
                return false;
        }
-    
-       @Override
-       public ExtensionValidator getExtensionValidator(QName 
extensionElementName) {
-               // TODO Auto-generated method stub
-               return null;
-       }
 }

http://git-wip-us.apache.org/repos/asf/ode/blob/cf630ce4/bpel-runtime/src/test/java/org/apache/ode/bpel/runtime/CoreBpelTest.java
----------------------------------------------------------------------
diff --git 
a/bpel-runtime/src/test/java/org/apache/ode/bpel/runtime/CoreBpelTest.java 
b/bpel-runtime/src/test/java/org/apache/ode/bpel/runtime/CoreBpelTest.java
index 3ae8f6f..18dd7a8 100644
--- a/bpel-runtime/src/test/java/org/apache/ode/bpel/runtime/CoreBpelTest.java
+++ b/bpel-runtime/src/test/java/org/apache/ode/bpel/runtime/CoreBpelTest.java
@@ -34,7 +34,7 @@ import org.apache.ode.bpel.common.CorrelationKey;
 import org.apache.ode.bpel.common.FaultException;
 import org.apache.ode.bpel.evar.ExternalVariableModuleException;
 import org.apache.ode.bpel.evt.ProcessInstanceEvent;
-import org.apache.ode.bpel.extension.ExtensionOperation;
+import org.apache.ode.bpel.eapi.ExtensionContext;
 import org.apache.ode.bpel.iapi.ProcessConf.PartnerRoleConfig;
 import org.apache.ode.bpel.obj.OCatch;
 import org.apache.ode.bpel.obj.OEmpty;
@@ -49,6 +49,7 @@ import org.apache.ode.bpel.obj.OScope.Variable;
 import org.apache.ode.bpel.obj.OSequence;
 import org.apache.ode.bpel.obj.OThrow;
 import org.apache.ode.bpel.runtime.channels.ActivityRecovery;
+import org.apache.ode.bpel.runtime.channels.ExtensionResponse;
 import org.apache.ode.bpel.runtime.channels.FaultData;
 import org.apache.ode.bpel.runtime.channels.InvokeResponse;
 import org.apache.ode.bpel.runtime.channels.PickResponse;
@@ -481,20 +482,10 @@ public class CoreBpelTest extends TestCase implements 
BpelRuntimeContext {
 
     public void checkInvokeExternalPermission() {}
 
-    public Node initializeVariable(VariableInstance var, ScopeFrame scopeFrame,
-                       Node val) throws ExternalVariableModuleException {
+    public void executeExtension(QName extensionId, ExtensionContext context,
+                       Element element,
+                       ExtensionResponse extResponseChannel) throws 
FaultException {
                // TODO Auto-generated method stub
-               return null;
-       }
-
-       public Node fetchVariableData(VariableInstance variable,
-                       ScopeFrame scopeFrame, boolean forWriting) throws 
FaultException {
-               // TODO Auto-generated method stub
-               return null;
-       }
-
-       public ExtensionOperation createExtensionActivityImplementation(QName 
name) {
-               // TODO Auto-generated method stub
-               return null;
+               
        }
 }

http://git-wip-us.apache.org/repos/asf/ode/blob/cf630ce4/bpel-store/src/main/java/org/apache/ode/store/DeploymentUnitDir.java
----------------------------------------------------------------------
diff --git 
a/bpel-store/src/main/java/org/apache/ode/store/DeploymentUnitDir.java 
b/bpel-store/src/main/java/org/apache/ode/store/DeploymentUnitDir.java
index c36d4b1..2af6b90 100644
--- a/bpel-store/src/main/java/org/apache/ode/store/DeploymentUnitDir.java
+++ b/bpel-store/src/main/java/org/apache/ode/store/DeploymentUnitDir.java
@@ -20,7 +20,6 @@ package org.apache.ode.store;
 
 import java.io.File;
 import java.io.FileFilter;
-import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.net.URI;
@@ -49,12 +48,8 @@ import org.apache.ode.bpel.compiler.wsdl.WSDLFactoryBPEL20;
 import org.apache.ode.bpel.dd.DeployDocument;
 import org.apache.ode.bpel.dd.TDeployment;
 import org.apache.ode.bpel.dd.TDeployment.Process;
-import org.apache.ode.bpel.extension.ExtensionValidator;
 import org.apache.ode.bpel.iapi.ContextException;
-import org.apache.ode.bpel.obj.OProcess;
 import org.apache.ode.bpel.obj.serde.DeSerializer;
-import org.apache.ode.bpel.obj.serde.OmDeserializer;
-import org.apache.ode.bpel.obj.serde.OmSerdeFactory;
 import org.apache.ode.utils.InternPool;
 import org.apache.ode.utils.InternPool.InternableBlock;
 import org.apache.ode.utils.fs.FileUtils;
@@ -85,8 +80,6 @@ class DeploymentUnitDir {
     private volatile DeployDocument _dd;
     private volatile DocumentRegistry _docRegistry;
 
-    private Map<QName, ExtensionValidator> _extensionValidators;
-
     private long _version = -1;
 
     private static final FileFilter _wsdlFilter = new FileFilter() {
@@ -202,7 +195,6 @@ class DeploymentUnitDir {
             bpelc.setProcessWSDL(bpel11wsdl.toURI());
 
         bpelc.setCompileProperties(prepareCompileProperties(bpelFile));
-        bpelc.setExtensionValidators(_extensionValidators);
         bpelc.setBaseDirectory(_duDirectory);
         // Create process such that immutable objects are intern'ed.
         InternPool.runBlock(new InternableBlock() {
@@ -352,10 +344,6 @@ class DeploymentUnitDir {
         return result;
     }
 
-    public void setExtensionValidators(Map<QName, ExtensionValidator> 
extensionValidators) {
-       _extensionValidators = extensionValidators;
-    }
-
     public final class CBPInfo {
         final QName processName;
         final String guid;

http://git-wip-us.apache.org/repos/asf/ode/blob/cf630ce4/bpel-store/src/main/java/org/apache/ode/store/ProcessStoreImpl.java
----------------------------------------------------------------------
diff --git 
a/bpel-store/src/main/java/org/apache/ode/store/ProcessStoreImpl.java 
b/bpel-store/src/main/java/org/apache/ode/store/ProcessStoreImpl.java
index 87927fe..5524018 100644
--- a/bpel-store/src/main/java/org/apache/ode/store/ProcessStoreImpl.java
+++ b/bpel-store/src/main/java/org/apache/ode/store/ProcessStoreImpl.java
@@ -23,7 +23,6 @@ import org.slf4j.LoggerFactory;
 import org.apache.ode.bpel.compiler.api.CompilationException;
 import org.apache.ode.bpel.dd.DeployDocument;
 import org.apache.ode.bpel.dd.TDeployment;
-import org.apache.ode.bpel.extension.ExtensionValidator;
 import org.apache.ode.bpel.iapi.*;
 import org.apache.ode.il.config.OdeConfigProperties;
 import org.apache.ode.store.DeploymentUnitDir.CBPInfo;
@@ -89,8 +88,6 @@ public class ProcessStoreImpl implements ProcessStore {
 
     protected File _configDir;
 
-    private Map<QName, ExtensionValidator> _extensionValidators = new 
HashMap<QName, ExtensionValidator>();
-
     /**
      * Executor used to process DB transactions. Allows us to isolate the TX 
context, and to ensure that only one TX gets executed a
      * time. We don't really care to parallelize these operations because: i) 
HSQL does not isolate transactions and we don't want
@@ -190,7 +187,6 @@ public class ProcessStoreImpl implements ProcessStore {
 
         // Create the DU and compile/scan it before acquiring lock.
         final DeploymentUnitDir du = new 
DeploymentUnitDir(deploymentUnitDirectory);
-        du.setExtensionValidators(_extensionValidators);
         if( duName != null ) {
             // Override the package name if given from the parameter
             du.setName(duName);
@@ -929,13 +925,4 @@ public class ProcessStoreImpl implements ProcessStore {
         }
         return undeployed;
     }
-
-    public void setExtensionValidators(
-                       Map<QName, ExtensionValidator> extensionValidators) {
-               _extensionValidators = extensionValidators;
-       }
-       
-       public Map<QName, ExtensionValidator> getExtensionValidators() {
-               return _extensionValidators;
-       }
 }

http://git-wip-us.apache.org/repos/asf/ode/blob/cf630ce4/jbi/src/main/java/org/apache/ode/jbi/OdeLifeCycle.java
----------------------------------------------------------------------
diff --git a/jbi/src/main/java/org/apache/ode/jbi/OdeLifeCycle.java 
b/jbi/src/main/java/org/apache/ode/jbi/OdeLifeCycle.java
index 3a789a1..6cf41cc 100644
--- a/jbi/src/main/java/org/apache/ode/jbi/OdeLifeCycle.java
+++ b/jbi/src/main/java/org/apache/ode/jbi/OdeLifeCycle.java
@@ -24,11 +24,9 @@ import org.slf4j.LoggerFactory;
 import org.apache.geronimo.transaction.manager.GeronimoTransactionManager;
 import org.apache.ode.bpel.connector.BpelServerConnector;
 import org.apache.ode.bpel.dao.BpelDAOConnectionFactoryJDBC;
+import org.apache.ode.bpel.eapi.AbstractExtensionBundle;
 import org.apache.ode.bpel.engine.BpelServerImpl;
 import org.apache.ode.bpel.engine.ProcessAndInstanceManagementMBean;
-import org.apache.ode.bpel.extension.ExtensionBundleRuntime;
-import org.apache.ode.bpel.extension.ExtensionBundleValidation;
-import org.apache.ode.bpel.extension.ExtensionValidator;
 import org.apache.ode.bpel.extvar.jdbc.JdbcExternalVariableModule;
 import org.apache.ode.bpel.iapi.BpelEventListener;
 import org.apache.ode.bpel.intercept.MessageExchangeInterceptor;
@@ -373,58 +371,18 @@ public class OdeLifeCycle implements ComponentLifeCycle {
         }
     }
     
-    // @hahnml: Added support for extension bundles based on ODE 2.0 alpha 
branch
     private void registerExtensionActivityBundles() {
-               String extensionsRTStr = 
_ode._config.getExtensionActivityBundlesRT();
-               String extensionsValStr = _ode._config
-                               .getExtensionActivityBundlesValidation();
-               if (extensionsRTStr != null) {
-                       // TODO replace StringTokenizer by regex
-                       for (StringTokenizer tokenizer = new StringTokenizer(
-                                       extensionsRTStr, ",;"); 
tokenizer.hasMoreTokens();) {
-                               String bundleCN = tokenizer.nextToken();
-                               
-                               //@hahnml: Remove any whitespaces
-                               bundleCN = bundleCN.replaceAll(" ", "");
-                               
-                               try {
-                                       // instantiate bundle
-                                       ExtensionBundleRuntime bundleRT = 
(ExtensionBundleRuntime) Class
-                                                       
.forName(bundleCN).newInstance();
-                                       // register extension bundle (BPEL 
server)
-                                       
_ode._server.registerExtensionBundle(bundleRT);
-                               } catch (Exception e) {
-                                       __log.warn("Couldn't register the 
extension bundle runtime "
-                                                       + bundleCN
-                                                       + ", the class couldn't 
be "
-                                                       + "loaded properly.");
-                               }
-                       }
-               }
-               if (extensionsValStr != null) {
-                       Map<QName, ExtensionValidator> validators = new 
HashMap<QName, ExtensionValidator>();
-                       for (StringTokenizer tokenizer = new StringTokenizer(
-                                       extensionsValStr, ",;"); 
tokenizer.hasMoreTokens();) {
-                               String bundleCN = tokenizer.nextToken();
-                               
-                               //@hahnml: Remove any whitespaces
-                               bundleCN = bundleCN.replaceAll(" ", "");
-                               
-                               try {
-                                       // instantiate bundle
-                                       ExtensionBundleValidation bundleVal = 
(ExtensionBundleValidation) Class
-                                                       
.forName(bundleCN).newInstance();
-                                       // add validators
-                                       
validators.putAll(bundleVal.getExtensionValidators());
-                               } catch (Exception e) {
-                                       __log.warn("Couldn't register the 
extension bundle validator "
-                                                       + bundleCN
-                                                       + ", the class couldn't 
be "
-                                                       + "loaded properly.");
-                               }
-                       }
-                       // register extension bundle (BPEL store)
-                       _ode._store.setExtensionValidators(validators);
+        String listenersStr = _ode._config.getExtensionActivityBundles();
+        if (listenersStr != null) {
+               for (String bundleCN : listenersStr.split("\\s*(,|;)\\s*")) {
+                String bundleCN = tokenizer.nextToken();
+                try {
+                    
_ode._server.registerExtensionBundle((AbstractExtensionBundle) 
Class.forName(bundleCN).newInstance());
+                } catch (Exception e) {
+                    __log.warn("Couldn't register the extension bundle " + 
bundleCN + ", the class couldn't be " +
+                            "loaded properly.");
+                }
+            }
         }
     }
 

Reply via email to