You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ode.apache.org by ms...@apache.org on 2007/08/07 20:40:07 UTC

svn commit: r563613 - in /ode/branches/bart/jbi/src/main/java/org/apache/ode/jbi: MessageExchangeContextImpl.java OdeConsumer.java OdeService.java

Author: mszefler
Date: Tue Aug  7 11:40:06 2007
New Revision: 563613

URL: http://svn.apache.org/viewvc?view=rev&rev=563613
Log:
BART: Update JBI to use UNRELIABLE instead of BLOCKING/ASYNC

Modified:
    ode/branches/bart/jbi/src/main/java/org/apache/ode/jbi/MessageExchangeContextImpl.java
    ode/branches/bart/jbi/src/main/java/org/apache/ode/jbi/OdeConsumer.java
    ode/branches/bart/jbi/src/main/java/org/apache/ode/jbi/OdeService.java

Modified: ode/branches/bart/jbi/src/main/java/org/apache/ode/jbi/MessageExchangeContextImpl.java
URL: http://svn.apache.org/viewvc/ode/branches/bart/jbi/src/main/java/org/apache/ode/jbi/MessageExchangeContextImpl.java?view=diff&rev=563613&r1=563612&r2=563613
==============================================================================
--- ode/branches/bart/jbi/src/main/java/org/apache/ode/jbi/MessageExchangeContextImpl.java (original)
+++ ode/branches/bart/jbi/src/main/java/org/apache/ode/jbi/MessageExchangeContextImpl.java Tue Aug  7 11:40:06 2007
@@ -49,8 +49,7 @@
     private static final Set<InvocationStyle> __supported;
     static {
         HashSet<InvocationStyle> supported = new HashSet<InvocationStyle>();
-        supported.add(InvocationStyle.BLOCKING);
-        supported.add(InvocationStyle.ASYNC);
+        supported.add(InvocationStyle.UNRELIABLE);
         __supported = Collections.unmodifiableSet(supported);
     }
 
@@ -58,16 +57,8 @@
         _ode = ode;
     }
 
-    public void onAsyncReply(MyRoleMessageExchange myrolemex) throws BpelEngineException {
-        __log.error("Unexpected onAsyncReply notification: " + myrolemex);
-        // Due to JBI limitiations (i.e. we cannot recover a JBI message-exchange object) , we don't support ASYNC invocations
-    }
 
-    public void invokePartnerAsynch(PartnerRoleMessageExchange mex) throws ContextException {
-        _ode._consumer.invokePartner(mex);
-    }
-
-    public void invokePartnerBlocking(PartnerRoleMessageExchange mex) throws ContextException {
+    public void invokePartnerUnreliable(PartnerRoleMessageExchange mex) throws ContextException {
         _ode._consumer.invokePartner(mex);
     }
 
@@ -81,10 +72,6 @@
 
     }
 
-    public void onReliableReply(MyRoleMessageExchange myRoleMex) throws BpelEngineException {
-        __log.error("Unexpected onRepliabeReply notification: " + myRoleMex);
-
-    }
 
     public void cancel(PartnerRoleMessageExchange mex) throws ContextException {
         // What can we do in JBI to cancel? --- not much. 
@@ -93,6 +80,11 @@
 
     public Set<InvocationStyle> getSupportedInvocationStyle(PartnerRoleChannel prc, EndpointReference partnerEpr) {
         return __supported ;
+    }
+
+
+    public void onMyRoleMessageExchangeStateChanged(MyRoleMessageExchange myRoleMex) throws BpelEngineException {
+        // TODO: add support for message exchange recovery. 
     }
     
 

Modified: ode/branches/bart/jbi/src/main/java/org/apache/ode/jbi/OdeConsumer.java
URL: http://svn.apache.org/viewvc/ode/branches/bart/jbi/src/main/java/org/apache/ode/jbi/OdeConsumer.java?view=diff&rev=563613&r1=563612&r2=563613
==============================================================================
--- ode/branches/bart/jbi/src/main/java/org/apache/ode/jbi/OdeConsumer.java (original)
+++ ode/branches/bart/jbi/src/main/java/org/apache/ode/jbi/OdeConsumer.java Tue Aug  7 11:40:06 2007
@@ -199,16 +199,7 @@
 
     protected void doSendJBI(final PartnerRoleMessageExchange odeMex, final MessageExchange jbiMex) {
         try {
-            switch (odeMex.getInvocationStyle()) {
-            case ASYNC:
-                _ode.getChannel().send(jbiMex);
-                break;
-            case BLOCKING:
-                _ode.getChannel().sendSync(jbiMex, odeMex.getTimeout());
-                break;
-            default:
-                throw new ContextException("Unsupported Invocation Style: " + odeMex.getInvocationStyle());
-            }
+            _ode.getChannel().send(jbiMex);
         } catch (MessagingException e) {
             String errmsg = "Error sending request-only message to JBI for ODE mex " + odeMex;
             __log.error(errmsg, e);

Modified: ode/branches/bart/jbi/src/main/java/org/apache/ode/jbi/OdeService.java
URL: http://svn.apache.org/viewvc/ode/branches/bart/jbi/src/main/java/org/apache/ode/jbi/OdeService.java?view=diff&rev=563613&r1=563612&r2=563613
==============================================================================
--- ode/branches/bart/jbi/src/main/java/org/apache/ode/jbi/OdeService.java (original)
+++ ode/branches/bart/jbi/src/main/java/org/apache/ode/jbi/OdeService.java Tue Aug  7 11:40:06 2007
@@ -166,29 +166,6 @@
     }
 
     /**
-     * Called from {@link MessageExchangeContextImpl#onAsyncReply(MyRoleMessageExchange)}
-     * 
-     * @param mex
-     *            message exchenge
-     */
-    public void onResponse(MyRoleMessageExchange mex, javax.jbi.messaging.MessageExchange jbiMex) {
-        switch (mex.getStatus()) {
-        case FAULT:
-            outResponseFault(mex, jbiMex);
-            break;
-        case RESPONSE:
-            outResponse(mex, jbiMex);
-            break;
-        case FAILURE:
-            outFailure(mex, jbiMex);
-            break;
-        default:
-            __log.warn("Received ODE message exchange in unexpected state: " + mex.getStatus());
-        }
-        mex.release();
-    }
-
-    /**
      * Forward a JBI input message to ODE.
      * 
      * @param jbiMex
@@ -201,7 +178,7 @@
                     + jbiMex.getOperation());
         }
 
-        odeMex = _ode._server.createMessageExchange(InvocationStyle.BLOCKING, _endpoint.serviceName, jbiMex.getOperation()
+        odeMex = _ode._server.createMessageExchange(InvocationStyle.UNRELIABLE, _endpoint.serviceName, jbiMex.getOperation()
                 .getLocalPart(), jbiMex.getExchangeId());
 
         if (odeMex.getOperation() == null) {
@@ -226,23 +203,34 @@
         odeMex.setRequest(odeRequest);
         try {
             odeMex.invokeBlocking();
-            // Handle the response if it is immediately available.
-            if (odeMex.getStatus() != Status.ASYNC) {
-                __log.debug("ODE MEX " + odeMex + " completed SYNCHRONOUSLY.");
-                onResponse(odeMex, jbiMex);
-            } else {
-                __log.fatal("ODE MEX " + odeMex + " unexpectedly completed ASYNCHRONOUSLY.");
-            }
+
         } catch (Exception ex) {
             __log.error("ODE MEX " + odeMex + " resulted in an error.");
             sendError(jbiMex, ex);
+            return;
+        }
+
+        switch (odeMex.getAckType()) {
+        case FAULT:
+            outResponseFault(odeMex, jbiMex);
+            break;
+        case RESPONSE:
+            outResponse(odeMex, jbiMex);
+            break;
+        case FAILURE:
+            outFailure(odeMex, jbiMex);
+            break;
+        default:
+            __log.fatal("Unexpected AckType:" + odeMex.getAckType());
+            sendError(jbiMex, new RuntimeException("Unexpected AckType:" + odeMex.getAckType()));
+            
         }
 
     }
 
     private void outFailure(MyRoleMessageExchange odeMex, javax.jbi.messaging.MessageExchange jbiMex) {
         try {
-            jbiMex.setError(new Exception("MEXFailure"));
+            jbiMex.setError(new Exception("MEXFailure: " + odeMex.getFailureType()));
             jbiMex.setStatus(ExchangeStatus.ERROR);
             // TODO: get failure codes out of the message.
             _ode.getChannel().send(jbiMex);