Author: mszefler
Date: Mon Aug 7 10:36:52 2006
New Revision: 429410
URL: http://svn.apache.org/viewvc?rev=429410&view=rev
Log:
ODE-21 Fixed routing issues in the JBI binding.
ODE-22 Modified process loader to handle pre-ODE compiled processes.
Modified:
incubator/ode/trunk/bpel-api/src/main/java/org/apache/ode/bpel/iapi/BpelEngine.java
incubator/ode/trunk/bpel-api/src/main/java/org/apache/ode/bpel/iapi/BpelServer.java
incubator/ode/trunk/bpel-obj/src/main/java/org/apache/ode/bpel/o/Serializer.java
incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelEngineImpl.java
incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelServerImpl.java
incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/Contexts.java
incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/Messages.java
incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/MyRoleMessageExchangeImpl.java
incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ExpressionLanguageRuntimeRegistry.java
Modified:
incubator/ode/trunk/bpel-api/src/main/java/org/apache/ode/bpel/iapi/BpelEngine.java
URL:
http://svn.apache.org/viewvc/incubator/ode/trunk/bpel-api/src/main/java/org/apache/ode/bpel/iapi/BpelEngine.java?rev=429410&r1=429409&r2=429410&view=diff
==============================================================================
---
incubator/ode/trunk/bpel-api/src/main/java/org/apache/ode/bpel/iapi/BpelEngine.java
(original)
+++
incubator/ode/trunk/bpel-api/src/main/java/org/apache/ode/bpel/iapi/BpelEngine.java
Mon Aug 7 10:36:52 2006
@@ -50,7 +50,7 @@
/**
* Create a "my role" message exchange for invoking a BPEL process.
*
- * @param callee the process id of the process being called, if known
+ * @param serviceId the service id of the process being called, if known
* @param epr endpoint reference of the port being called, if known
* @param operation name of the operation
* @return [EMAIL PROTECTED] MyRoleMessageExchange} the newly created
message
@@ -58,7 +58,7 @@
*/
MyRoleMessageExchange createMessageExchange(
String clientKey,
- QName callee,
+ QName serviceId,
EndpointReference epr,
String operation)
throws BpelEngineException;
Modified:
incubator/ode/trunk/bpel-api/src/main/java/org/apache/ode/bpel/iapi/BpelServer.java
URL:
http://svn.apache.org/viewvc/incubator/ode/trunk/bpel-api/src/main/java/org/apache/ode/bpel/iapi/BpelServer.java?rev=429410&r1=429409&r2=429410&view=diff
==============================================================================
---
incubator/ode/trunk/bpel-api/src/main/java/org/apache/ode/bpel/iapi/BpelServer.java
(original)
+++
incubator/ode/trunk/bpel-api/src/main/java/org/apache/ode/bpel/iapi/BpelServer.java
Mon Aug 7 10:36:52 2006
@@ -153,4 +153,7 @@
*/
BpelManagementFacade getBpelManagementFacade();
+ void registerBpelEventListener(BpelEventListener bpelEventListener);
+ void registerMessageExchangeInterceptor(MessageExchangeInterceptor
interceptor);
+
}
Modified:
incubator/ode/trunk/bpel-obj/src/main/java/org/apache/ode/bpel/o/Serializer.java
URL:
http://svn.apache.org/viewvc/incubator/ode/trunk/bpel-obj/src/main/java/org/apache/ode/bpel/o/Serializer.java?rev=429410&r1=429409&r2=429410&view=diff
==============================================================================
---
incubator/ode/trunk/bpel-obj/src/main/java/org/apache/ode/bpel/o/Serializer.java
(original)
+++
incubator/ode/trunk/bpel-obj/src/main/java/org/apache/ode/bpel/o/Serializer.java
Mon Aug 7 10:36:52 2006
@@ -156,6 +156,23 @@
}
return super.resolveObject(obj);
}
+
+ /**
+ * Override coverts old class names into new class names to preserve
compatibility with
+ * pre-Apache namespaces.
+ */
+ @Override
+ protected ObjectStreamClass readClassDescriptor() throws IOException,
ClassNotFoundException {
+ ObjectStreamClass read = super.readClassDescriptor();
+ if (read.getName().startsWith("com.fs.pxe.")) {
+ return
ObjectStreamClass.lookup(Class.forName(read.getName().replace("com.fs.pxe.",
"org.apache.ode.")));
+ }
+ if (read.getName().startsWith("com.fs.utils.")) {
+ return
ObjectStreamClass.lookup(Class.forName(read.getName().replace("com.fs.utils.",
"org.apache.ode.utils.")));
+ }
+ return read;
+ }
+
}
static class OQName implements Serializable{
Modified:
incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelEngineImpl.java
URL:
http://svn.apache.org/viewvc/incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelEngineImpl.java?rev=429410&r1=429409&r2=429410&view=diff
==============================================================================
---
incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelEngineImpl.java
(original)
+++
incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelEngineImpl.java
Mon Aug 7 10:36:52 2006
@@ -29,6 +29,7 @@
import org.apache.ode.bpel.iapi.EndpointReference;
import org.apache.ode.bpel.iapi.Message;
import org.apache.ode.bpel.iapi.MessageExchange;
+import org.apache.ode.bpel.iapi.MessageExchangeInterceptor;
import org.apache.ode.bpel.iapi.MessageExchange.MessageExchangePattern;
import org.apache.ode.bpel.iapi.MessageExchange.Status;
import org.apache.ode.bpel.iapi.MyRoleMessageExchange;
@@ -44,9 +45,16 @@
import javax.xml.namespace.QName;
import java.util.Date;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
+/**
+ * Implementation of the [EMAIL PROTECTED] BpelEngine} interface: provides the
server
+ * methods that should be invoked in the context of a transaction.
+ * @author mszefler
+ *
+ */
public class BpelEngineImpl implements BpelEngine {
private static final Log __log = LogFactory.getLog(BpelEngineImpl.class);
@@ -71,6 +79,7 @@
final Contexts _contexts;
+
public BpelEngineImpl(Contexts contexts) {
_contexts = contexts;
}
@@ -97,7 +106,7 @@
dao.setEPR(epr == null ? null : epr.toXML().getDocumentElement());
MyRoleMessageExchangeImpl mex = new MyRoleMessageExchangeImpl(this, dao);
- BpelProcess target = route(targetService, epr,null);
+ BpelProcess target = route(targetService, null);
if (target != null)
target.initMyRoleMex(mex);
@@ -201,20 +210,24 @@
}
/**
- * Route to a process using the service id.
+ * Route to a process using the service id. Note, that we do not need the
+ * endpoint name here, we are assuming that two processes would not be
+ * registered under the same service qname but different endpoint.
*
- * @param service
- * process id
- * @param request
- * @return
+ * @param service target service id
+ * @param request request message
+ * @return process corresponding to the targetted service, or
<code>null</code>
+ * if service identifier is not recognized.
*/
- BpelProcess route(QName service, EndpointReference epr, Message request) {
+ BpelProcess route(QName service, Message request) {
// TODO: use the message to route to the correct service if more than one
// service is listening on the same endpoint.
- if ( __log.isDebugEnabled() ) {
- __log.debug( "Route: service=" + service + ", epr=" + epr + " request="
+ request );
- }
- return _serviceMap.get(service);
+
+ BpelProcess routed = _serviceMap.get(service);
+ if (__log.isDebugEnabled())
+ __log.debug("Routed: svcQname " +service + " --> " + routed);
+ return routed;
+
}
@@ -256,6 +269,14 @@
public MessageExchange getMessageExchangeByClientKey(String clientKey) {
// TODO Auto-generated method stub
return null;
+ }
+
+ /**
+ * Get the list of globally-registered message-exchange interceptors.
+ * @return
+ */
+ List<MessageExchangeInterceptor> getGlobalInterceptors() {
+ return _contexts.globalIntereceptors;
}
Modified:
incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelServerImpl.java
URL:
http://svn.apache.org/viewvc/incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelServerImpl.java?rev=429410&r1=429409&r2=429410&view=diff
==============================================================================
---
incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelServerImpl.java
(original)
+++
incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelServerImpl.java
Mon Aug 7 10:36:52 2006
@@ -53,10 +53,12 @@
import org.apache.ode.bpel.explang.ConfigurationException;
import org.apache.ode.bpel.iapi.BpelEngine;
import org.apache.ode.bpel.iapi.BpelEngineException;
+import org.apache.ode.bpel.iapi.BpelEventListener;
import org.apache.ode.bpel.iapi.BpelServer;
import org.apache.ode.bpel.iapi.DeploymentUnit;
import org.apache.ode.bpel.iapi.EndpointReferenceContext;
import org.apache.ode.bpel.iapi.MessageExchangeContext;
+import org.apache.ode.bpel.iapi.MessageExchangeInterceptor;
import org.apache.ode.bpel.iapi.Scheduler;
import org.apache.ode.bpel.o.OExpressionLanguage;
import org.apache.ode.bpel.o.OProcess;
@@ -806,5 +808,11 @@
OProcess compiledProcess;
Map<Integer, QName> serviceNames;
Map<Integer, Element> myEprs;
+ }
+
+
+ public void registerMessageExchangeInterceptor(MessageExchangeInterceptor
interceptor) {
+ // TODO Auto-generated method stub
+
}
}
Modified:
incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/Contexts.java
URL:
http://svn.apache.org/viewvc/incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/Contexts.java?rev=429410&r1=429409&r2=429410&view=diff
==============================================================================
---
incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/Contexts.java
(original)
+++
incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/Contexts.java
Mon Aug 7 10:36:52 2006
@@ -19,9 +19,13 @@
package org.apache.ode.bpel.engine;
+import java.util.ArrayList;
+import java.util.List;
+
import org.apache.ode.bpel.dao.BpelDAOConnectionFactory;
import org.apache.ode.bpel.iapi.EndpointReferenceContext;
import org.apache.ode.bpel.iapi.MessageExchangeContext;
+import org.apache.ode.bpel.iapi.MessageExchangeInterceptor;
import org.apache.ode.bpel.iapi.Scheduler;
/**
@@ -34,4 +38,6 @@
Scheduler scheduler;
EndpointReferenceContext eprContext;
BpelDAOConnectionFactory dao;
+ final List<MessageExchangeInterceptor> globalIntereceptors = new
ArrayList<MessageExchangeInterceptor>();
+
}
Modified:
incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/Messages.java
URL:
http://svn.apache.org/viewvc/incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/Messages.java?rev=429410&r1=429409&r2=429410&view=diff
==============================================================================
---
incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/Messages.java
(original)
+++
incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/Messages.java
Mon Aug 7 10:36:52 2006
@@ -18,6 +18,7 @@
*/
package org.apache.ode.bpel.engine;
+import org.apache.ode.bpel.iapi.MessageExchangeInterceptor;
import org.apache.ode.utils.msg.MessageBundle;
import javax.xml.namespace.QName;
@@ -159,4 +160,8 @@
return format("Error in schema processing: {0}", detailMessage);
}
-}
\ No newline at end of file
+ public String msgInterceptorAborted(String mexId, String interceptor) {
+ return format("Message exchange {0} aborted by interceptor {1}",
mexId, interceptor);
+ }
+
+}
Modified:
incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/MyRoleMessageExchangeImpl.java
URL:
http://svn.apache.org/viewvc/incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/MyRoleMessageExchangeImpl.java?rev=429410&r1=429409&r2=429410&view=diff
==============================================================================
---
incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/MyRoleMessageExchangeImpl.java
(original)
+++
incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/MyRoleMessageExchangeImpl.java
Mon Aug 7 10:36:52 2006
@@ -31,6 +31,7 @@
import org.apache.ode.bpel.iapi.EndpointReference;
import org.apache.ode.bpel.iapi.Message;
import org.apache.ode.bpel.iapi.MessageExchange;
+import org.apache.ode.bpel.iapi.MessageExchangeInterceptor;
import org.apache.ode.bpel.iapi.MyRoleMessageExchange;
@@ -65,8 +66,25 @@
_dao.setRequest(((MessageImpl)request)._dao);
_dao.setStatus(MessageExchange.Status.REQUEST.toString());
+
+ for (MessageExchangeInterceptor i: _engine.getGlobalInterceptors()) {
+ __log.debug("onBpelServerInvoke --> interceptor " + i);
+ boolean cont = i.onBpelServerInvoked(this);
+ if (!cont) {
+ __log.debug("interceptor " + i + " caused invoke on " + this +
"to be aborted");
+ if (getStatus() == Status.REQUEST) {
+ __log.debug("aborting interceptor " + i + " did not
set message exchange status, assuming failure");
+ setFailure(MessageExchange.FailureType.NO_RESPONSE,
+
__msgs.msgInterceptorAborted(getMessageExchangeId(),i.toString()), null);
+
+ }
+
+ return;
+ }
+ }
+
- BpelProcess target = _engine.route(getDAO().getCallee(), _epr, request);
+ BpelProcess target = _engine.route(getDAO().getCallee(), request);
if (__log.isDebugEnabled())
Modified:
incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ExpressionLanguageRuntimeRegistry.java
URL:
http://svn.apache.org/viewvc/incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ExpressionLanguageRuntimeRegistry.java?rev=429410&r1=429409&r2=429410&view=diff
==============================================================================
---
incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ExpressionLanguageRuntimeRegistry.java
(original)
+++
incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ExpressionLanguageRuntimeRegistry.java
Mon Aug 7 10:36:52 2006
@@ -46,6 +46,8 @@
public void registerRuntime(OExpressionLanguage oelang) throws
ConfigurationException {
try {
String className = oelang.properties.get("runtime-class");
+ // backward compatibility.
+ className = className.replace("com.fs.pxe.","org.apache.ode.");
Class cls = Class.forName(className);
ExpressionLanguageRuntime elangRT = (ExpressionLanguageRuntime)
cls.newInstance();
elangRT.initialize(oelang.properties);