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(),