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