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);


Reply via email to