You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by cw...@apache.org on 2013/09/20 18:43:55 UTC

svn commit: r1525051 - /uima/uima-as/trunk/uimaj-as-jms/src/main/java/org/apache/uima/adapter/jms/client/BaseMessageSender.java

Author: cwiklik
Date: Fri Sep 20 16:43:55 2013
New Revision: 1525051

URL: http://svn.apache.org/r1525051
Log:
UIMA-3288 Moved client callback beyond send()

Modified:
    uima/uima-as/trunk/uimaj-as-jms/src/main/java/org/apache/uima/adapter/jms/client/BaseMessageSender.java

Modified: uima/uima-as/trunk/uimaj-as-jms/src/main/java/org/apache/uima/adapter/jms/client/BaseMessageSender.java
URL: http://svn.apache.org/viewvc/uima/uima-as/trunk/uimaj-as-jms/src/main/java/org/apache/uima/adapter/jms/client/BaseMessageSender.java?rev=1525051&r1=1525050&r2=1525051&view=diff
==============================================================================
--- uima/uima-as/trunk/uimaj-as-jms/src/main/java/org/apache/uima/adapter/jms/client/BaseMessageSender.java (original)
+++ uima/uima-as/trunk/uimaj-as-jms/src/main/java/org/apache/uima/adapter/jms/client/BaseMessageSender.java Fri Sep 20 16:43:55 2013
@@ -253,6 +253,7 @@ public abstract class BaseMessageSender 
     // will call doStop() which sets the global flag 'done' to true.
     PendingMessage pm = null;
     ClientRequest cacheEntry = null;
+    boolean doCallback = false;
     while (!done) {
       // Remove the oldest message from the shared 'queue'
       // // Wait for a new message
@@ -336,22 +337,9 @@ public abstract class BaseMessageSender 
                    cacheEntry.setCASDepartureTime(System.nanoTime());
                  }
                  cacheEntry.setCASDepartureTime(System.nanoTime());
-                 UimaASProcessStatus status = new UimaASProcessStatusImpl(new ProcessTrace_impl(),cacheEntry.getCAS(),
-                         cacheEntry.getCasReferenceId());
-                 // Notify engine before sending a message
-                 if (UIMAFramework.getLogger(CLASS_NAME).isLoggable(Level.FINE)) {
-                     UIMAFramework.getLogger(CLASS_NAME).logrb(
-                             Level.FINE,
-                             CLASS_NAME.getName(),
-                             "run",
-                             JmsConstants.JMS_LOG_RESOURCE_BUNDLE,
-                             "UIMAJMS_calling_onBeforeMessageSend__FINE",
-                             new Object[] {
-                            	 pm.get(AsynchAEMessage.CasReference),
-                            	 String.valueOf(cas.hashCode())
-                             });
-                   }
-                 engine.onBeforeMessageSend(status);
+         
+                 doCallback = true;
+                 
              } else {
                  if (UIMAFramework.getLogger(CLASS_NAME).isLoggable(Level.WARNING)) {
                      UIMAFramework.getLogger(CLASS_NAME).logrb(
@@ -391,7 +379,28 @@ public abstract class BaseMessageSender 
              } 
              //  Dispatch asynchronous request to Uima AS service
              producer.send(message);
+             if ( doCallback ) {
+               UimaASProcessStatus status = new UimaASProcessStatusImpl(new ProcessTrace_impl(),cacheEntry.getCAS(),
+                       cacheEntry.getCasReferenceId());
+               // Notify engine before sending a message
+               if (UIMAFramework.getLogger(CLASS_NAME).isLoggable(Level.FINE)) {
+                   UIMAFramework.getLogger(CLASS_NAME).logrb(
+                           Level.FINE,
+                           CLASS_NAME.getName(),
+                           "run",
+                           JmsConstants.JMS_LOG_RESOURCE_BUNDLE,
+                           "UIMAJMS_calling_onBeforeMessageSend__FINE",
+                           new Object[] {
+                             pm.get(AsynchAEMessage.CasReference),
+                             String.valueOf(cacheEntry.getCAS().hashCode())
+                           });
+                 }  
+               // Note the callback is a misnomer. The callback is made *after* the send now
+               // Application receiving this callback can consider the CAS as delivere to a queue
+               engine.onBeforeMessageSend(status);
              
+             
+             }
            } catch (Exception e) {
              if (UIMAFramework.getLogger(CLASS_NAME).isLoggable(Level.WARNING)) {
                UIMAFramework.getLogger(CLASS_NAME).logrb(Level.WARNING, getClass().getName(),