Author: hiranya
Date: Tue Jul 16 21:04:58 2013
New Revision: 1503887

URL: http://svn.apache.org/r1503887
Log:
SYNAPSE-777 Applying the patch from Dave to set a message ID on the message 
context instances created by SynapseAxisServlet.

Modified:
    
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/SynapseAxisServlet.java

Modified: 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/SynapseAxisServlet.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/SynapseAxisServlet.java?rev=1503887&r1=1503886&r2=1503887&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/SynapseAxisServlet.java
 (original)
+++ 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/SynapseAxisServlet.java
 Tue Jul 16 21:04:58 2013
@@ -18,7 +18,9 @@
  */
 package org.apache.synapse.core.axis2;
 
+import org.apache.axiom.util.UIDGenerator;
 import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.MessageContext;
 import org.apache.axis2.transport.http.AxisServlet;
 import org.apache.axis2.transport.http.ListingAgent;
 import org.apache.synapse.ServerManager;
@@ -27,6 +29,8 @@ import javax.servlet.ServletConfig;
 import javax.servlet.ServletContext;
 import javax.servlet.ServletException;
 import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
 
 /**
  * Extends axis2 servlet functionality so that  avoid  starting listeners again
@@ -59,4 +63,21 @@ public class SynapseAxisServlet extends 
     public void initContextRoot(HttpServletRequest req) {
         this.configContext.setContextRoot("/");
     }
+
+    /**
+     * The Axis servlet does not generate a messageId for a new 
MessageContext. This is needed
+     * at least by the Clone and IterateMediator in order to generate 
correlationIds that can be
+     * picked up by the AggregateMediator (when no correlation expression is 
provided).
+     *
+     * @see 
org.apache.axis2.transport.http.AxisServlet#createMessageContext(javax.servlet.http.HttpServletRequest,
 javax.servlet.http.HttpServletResponse, boolean)
+     */
+    protected MessageContext createMessageContext(HttpServletRequest request,
+                                                  HttpServletResponse response,
+                                                  boolean invocationType) 
throws IOException {
+       MessageContext msgCtx = super.createMessageContext(request, response, 
invocationType);
+        // Set a message ID as Axis2 doesn't seem to set one.
+        // Message ID is required for certain Synapse mediators.
+       msgCtx.setMessageID(UIDGenerator.generateURNString());
+       return msgCtx;
+    }
 }


Reply via email to