[
https://issues.apache.org/jira/browse/AXIS2-3228?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Deepal Jayasinghe reassigned AXIS2-3228:
----------------------------------------
Assignee: Deepal Jayasinghe
> 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.txt, patch2.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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]