Operation dispatch based on message body is broken
--------------------------------------------------

         Key: AXIS2-667
         URL: http://issues.apache.org/jira/browse/AXIS2-667
     Project: Apache Axis 2.0 (Axis2)
        Type: Bug

  Components: core  
    Versions: 1.0    
 Environment: n/a
    Reporter: Dennis Sosnoski
    Priority: Critical
 Attachments: patch.diff

In working with doc/lit services where the operation was defined by the child 
element of the SOAP:Body I found that Axis2 was trying to dispatch the wrong 
operation. I tracked this down to the way 
org.apache.axis2.description.AxisService sets up the operationsAliasMap, where 
on line 329 it adds an entry mapping the getSoapAction() value to the 
operation. If the soap actions for the operations are empty strings, as 
normally occurs with doc/lit, the empty string will end up mapped to the last 
operation encountered. org.apache.axis2.deployment.ServiceBuilder then maps the 
empty strings again by calling the mapActionToOperation() method of the service.

org.apache.axis2.engine.SOAPActionBasedDispatcher tries to look up the 
operation based on the soap action string (line 54). This results in the last 
operation being invoked for every service request.

The fix is to make the AxisService code only map the soap action if the string 
is non-empty. I'm attaching diffs for the fix, but not committing it myself 
because of the imminent 1.0 release. I have tested the patches and passed all 
the build tests. I urge strongly that this patch be reviewed and applied before 
the 1.0 release.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira

Reply via email to