You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@synapse.apache.org by ch...@apache.org on 2011/02/02 07:17:45 UTC

svn commit: r1066339 - in /synapse/trunk/java/modules: core/src/main/java/org/apache/synapse/core/axis2/ transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/

Author: charith
Date: Wed Feb  2 06:17:44 2011
New Revision: 1066339

URL: http://svn.apache.org/viewvc?rev=1066339&view=rev
Log:
fixing a Issue in the current Endpoint behavior with Out only MEP where endpoints not get notified when the endpoint is down.

Modified:
    synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/SynapseCallbackReceiver.java
    synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/ClientHandler.java
    synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/NhttpConstants.java

Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/SynapseCallbackReceiver.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/SynapseCallbackReceiver.java?rev=1066339&r1=1066338&r2=1066339&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/SynapseCallbackReceiver.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/SynapseCallbackReceiver.java Wed Feb  2 06:17:44 2011
@@ -107,6 +107,26 @@ public class SynapseCallbackReceiver imp
 
         String messageID = null;
 
+        /**
+         * In an Out-only scenario if the client receives a HTTP 202 accepted we need to
+         * remove the call back/s registered for that request.
+         * This if will check weather this is a message sent in a that scenario and remove the callback
+         */
+        if (messageCtx.getProperty(NhttpConstants.HTTP_202_RECEIVED) != null && "true".equals(
+                messageCtx.getProperty(NhttpConstants.HTTP_202_RECEIVED))) {
+            if (callbackStore.containsKey(messageCtx.getMessageID())) {
+                callbackStore.remove(messageCtx.getMessageID());
+                if (log.isDebugEnabled()) {
+                    log.debug("CallBack registered with Message id : " + messageCtx.getMessageID() +
+                            " removed from the " +
+                            "callback store since we got an accepted Notification");
+                }
+            }
+
+            return;
+        }
+
+
         if (messageCtx.getOptions() != null && messageCtx.getOptions().getRelatesTo() != null) {
             // never take a chance with a NPE at this stage.. so check at each level :-)
             Options options = messageCtx.getOptions();

Modified: synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/ClientHandler.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/ClientHandler.java?rev=1066339&r1=1066338&r2=1066339&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/ClientHandler.java (original)
+++ synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/ClientHandler.java Wed Feb  2 06:17:44 2011
@@ -713,9 +713,13 @@ public class ClientHandler implements NH
                         MessageContext responseMsgCtx = outMsgCtx.getOperationContext().
                                 getMessageContext(WSDL2Constants.MESSAGE_LABEL_IN);
                         if (responseMsgCtx == null ||
-                                outMsgCtx.getOptions().isUseSeparateListener()) {
-                            // This means that we received a 202 accepted for an out-only ,
-                            // for which we do not need a dummy message anyway
+                                outMsgCtx.getOptions().isUseSeparateListener() ||
+                                outMsgCtx.getOperationContext().isComplete()) {
+                            // Since we need to notify the SynapseCallback receiver to remove the
+                            // call backs registered  we set a custom property
+                            outMsgCtx.setProperty(NhttpConstants.HTTP_202_RECEIVED, "true");
+                            mr.receive(outMsgCtx);
+
                             return;
                         }
                         responseMsgCtx.setServerSide(true);

Modified: synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/NhttpConstants.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/NhttpConstants.java?rev=1066339&r1=1066338&r2=1066339&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/NhttpConstants.java (original)
+++ synapse/trunk/java/modules/transports/core/nhttp/src/main/java/org/apache/synapse/transport/nhttp/NhttpConstants.java Wed Feb  2 06:17:44 2011
@@ -129,6 +129,12 @@ public class NhttpConstants {
     /** Output stram of the message is set to this message context property */
     public static final String NHTTP_OUTPUT_STREAM = "nhttp.output.stream";
 
+    /**
+     * A message context property indicating "TRUE", This will set on success scenarios
+     */
+    public static final String HTTP_202_RECEIVED = "HTTP_202_RECEIVED";
+
+
     /** This constant is used to plugin a custom WSDL processor for Get requests*/
     public static final String HTTP_GET_PROCESSOR = "httpGetProcessor";