You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by "Mike Rheinheimer (JIRA)" <ji...@apache.org> on 2008/01/11 00:03:34 UTC

[jira] Resolved: (AXIS2-3228) TransportUtils aggressively changing content type from text/xml to application/xml

     [ https://issues.apache.org/jira/browse/AXIS2-3228?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Mike Rheinheimer resolved AXIS2-3228.
-------------------------------------

    Resolution: Fixed

Resolved in 610975

> TransportUtils aggressively changing content type from text/xml to application/xml
> ----------------------------------------------------------------------------------
>
>                 Key: AXIS2-3228
>                 URL: https://issues.apache.org/jira/browse/AXIS2-3228
>             Project: Axis 2.0 (Axis2)
>          Issue Type: Bug
>          Components: kernel
>            Reporter: Mike Rheinheimer
>            Assignee: Deepal Jayasinghe
>         Attachments: patch_608910.txt
>
>
> org.apache.axis2.transport.TransportUtils.createDocumentElement aggressively pushes REST processing by performing the following checks.  This is breaking regular text/xml SOAP processing in some environments.  See code:
>             // Some services send REST responces as text/xml. We should convert it to
>             // application/xml if its a REST response, if not it will try to use the SOAPMessageBuilder.
>             if (HTTPConstants.MEDIA_TYPE_TEXT_XML.equals(type)) {
>                 if (msgContext.isServerSide()) {
>                     if (msgContext.getSoapAction() == null) {
>                         type = HTTPConstants.MEDIA_TYPE_APPLICATION_XML;
>                     }
>                 } else if (msgContext.isDoingREST() &&
>                         !msgContext.isPropertyTrue(Constants.Configuration.SOAP_RESPONSE_MEP)) {
>                     type = HTTPConstants.MEDIA_TYPE_APPLICATION_XML;
>                 }
>             }
>             Builder builder = BuilderUtil.getBuilderFromSelector(type, msgContext);
> The failure case is the case where the client makes an async request.  In this case the reply message has content type "text/xml", isServerSide() passes due to the async client listening on a reply port (that's just the way it works...), and there is no soapAction.  All of the checks pass in the async case, changing the content type to application/xml, therefore picking the wrong builder (ApplicationXMLBuilder rather than SOAP11Builder).
> Proposed fix:
> I propose we add a configuration option such as BuilderForTextXML or similarly named, and move the above code to another TransportUtils method, such as:
> Builder getBuilderForTextXML(String contentType) {
>     if (msgContext.isPropertyTrue(Constants.Configuration.TEXTXML_IS_SOAP11)) {
>         return BuilderUtil.getBuilderFromSelector(HTTPConstants.MEDIA_TYPE_TEXT_XML, msgContext);
>     } else {
>             // Some services send REST responces as text/xml. We should convert it to
>             // application/xml if its a REST response, if not it will try to use the SOAPMessageBuilder.
>             if (HTTPConstants.MEDIA_TYPE_TEXT_XML.equals(type)) {
>                 if (msgContext.isServerSide()) {
>                     if (msgContext.getSoapAction() == null) {
>                         type = HTTPConstants.MEDIA_TYPE_APPLICATION_XML;
>                     }
>                 } else if (msgContext.isDoingREST() &&
>                         !msgContext.isPropertyTrue(Constants.Configuration.SOAP_RESPONSE_MEP)) {
>                     type = HTTPConstants.MEDIA_TYPE_APPLICATION_XML;
>                 }
>             }
>             return BuilderUtil.getBuilderFromSelector(type, msgContext);
>     }
> }

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: axis-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-dev-help@ws.apache.org