You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by di...@apache.org on 2008/03/18 19:32:18 UTC
svn commit: r638494 -
/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/util/CallbackReceiver.java
Author: dims
Date: Tue Mar 18 11:32:15 2008
New Revision: 638494
URL: http://svn.apache.org/viewvc?rev=638494&view=rev
Log:
Fix for AXIS2-3545 - The MessageId generator creates duplicates
Modified:
webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/util/CallbackReceiver.java
Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/util/CallbackReceiver.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/util/CallbackReceiver.java?rev=638494&r1=638493&r2=638494&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/util/CallbackReceiver.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/util/CallbackReceiver.java Tue Mar 18 11:32:15 2008
@@ -50,14 +50,30 @@
callbackStore = new ConcurrentHashMap();
}
- public void addCallback(String MsgID, Callback callback) {
- callbackStore.put(MsgID, callback);
- if (log.isDebugEnabled()) log.debug("CallbackReceiver: add callback " + MsgID + ", " + callback + " ," + this);
+ public void addCallback(String msgID, Callback callback) throws AxisFault {
+ putIfAbsent(msgID, callback);
}
- public void addCallback(String msgID, AxisCallback callback) {
- callbackStore.put(msgID, callback);
- if (log.isDebugEnabled()) log.debug("CallbackReceiver: add callback " + msgID + ", " + callback + " ," + this);
+ public void addCallback(String msgID, AxisCallback callback) throws AxisFault {
+ putIfAbsent(msgID, callback);
+ }
+
+ /**
+ * Inserts the specified key, value into the callback map. It throws an
+ * exception if the message id was a duplicate.
+ *
+ * @param msgID The message id.
+ * @param callback The callback object.
+ * @throws AxisFault If the message id was a duplicate.
+ */
+ private final void putIfAbsent(String msgID, Object callback) throws AxisFault {
+ if (callbackStore.putIfAbsent(msgID, callback) == null) {
+ if (log.isDebugEnabled()) {
+ log.debug("CallbackReceiver: add callback " + msgID + ", " + callback + " ," + this);
+ }
+ } else {
+ throw new AxisFault("The Callback for MessageID " + msgID + " is a duplicate");
+ }
}
public Object lookupCallback(String msgID) {
---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org