[ 
https://issues.apache.org/jira/browse/CXF-8904?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17748133#comment-17748133
 ] 

Sreenivas K commented on CXF-8904:
----------------------------------

[~reta] That interceptor coming into picture when we configured
{color:#2a00ff}org.apache.cxf.feature.StaxTransformFeature{color}

to map namespace mappings in cxf bus like this:

 
_{color:#008080}<{color}{color:#3f7f7f}bean{color} 
{color:#7f007f}id{color}={color:#2a00ff}"nsTransformFeature"{color} 
{color:#7f007f}class{color}={color:#2a00ff}"org.apache.cxf.feature.StaxTransformFeature"{color}{color:#008080}>{color}_

_{color:#008080}<{color}{color:#3f7f7f}property{color} 
{color:#7f007f}name{color}={color:#2a00ff}"inTransformElements"{color} 
{color:#7f007f}ref{color}={color:#2a00ff}"inTransformMap"{color}{color:#008080}/>{color}_

_{color:#3f5fbf}<!-- <property name="outTransformElements" 
{color}{color:#3f5fbf}ref{color}{color:#3f5fbf}="outTransformMap"/> -->{color}_

_{color:#008080}</{color}{color:#3f7f7f}bean{color}{color:#008080}>{color}_

_{color:#008080}<{color}{color:#3f7f7f}util:map{color} 
{color:#7f007f}id{color}={color:#2a00ff}"inTransformMap"{color}{color:#008080}>{color}_

_{color:#008080}<{color}{color:#3f7f7f}entry{color} 
{color:#7f007f}key{color}={color:#2a00ff}"\{http://xyz.service.com}*"{color} 
{color:#7f007f}value{color}={color:#2a00ff}"http://api.service.spring.demo/}*"{color}
 {color:#008080}/>{color}_

_{color:#008080}</{color}{color:#3f7f7f}util:map{color}{color:#008080}>{color}_
_{color:#008080}<{color}{color:#3f7f7f}cxf:bus{color}{color:#008080}>{color}_
_{color:#008080}<{color}{color:#3f7f7f}cxf:features{color}{color:#008080}>{color}_

_{color:#008080}<{color}{color:#3f7f7f}ref{color} 
{color:#7f007f}bean{color}={color:#2a00ff}"nsTransformFeature"{color}{color:#008080}/>{color}_

_{color:#008080}</{color}{color:#3f7f7f}cxf:features{color}{color:#008080}>{color}_

_{color:#008080}</cxf:bus>{color}_
 

Without these mappings, that interceptor is not getting added into interceptor 
chain and everything just works.

When i looked at code of {*}TransformInInterceptor{*}, found this:

 
_{color:#7f0055}public{color}{color:#000000} 
{color}{color:#7f0055}void{color}{color:#000000} handleMessage(Message 
{color}{color:#6a3e3e}message{color}{color:#000000}) {{color}_

 _{color:#000000}{color}{color:#7f0055}if{color}{color:#000000} 
({color}{color:#7f0055}this{color}{color:#000000}.{color}{color:#0000c0}contextPropertyName{color}{color:#000000}
 == {color}{color:#7f0055}null{color}_

 _{color:#000000}|| 
MessageUtils.{color}{color:#000000}getContextualBoolean{color}{color:#000000}({color}{color:#6a3e3e}message{color}{color:#000000},
 
{color}{color:#7f0055}this{color}{color:#000000}.{color}{color:#0000c0}contextPropertyName{color}{color:#000000},
 {color}{color:#7f0055}false{color}{color:#000000})) {{color}_

 _{color:#000000}XMLStreamReader 
{color}{color:#6a3e3e}reader{color}{color:#000000} = (XMLStreamReader) 
{color}{color:#6a3e3e}message{color}{color:#000000}.getContent(XMLStreamReader.{color}{color:#7f0055}class{color}{color:#000000});{color}_

 _{color:#000000}InputStream {color}{color:#6a3e3e}is{color}{color:#000000} = 
(InputStream) 
{color}{color:#6a3e3e}message{color}{color:#000000}.getContent(InputStream.{color}{color:#7f0055}class{color}{color:#000000});{color}_

 _{color:#000000}XMLStreamReader 
{color}{color:#6a3e3e}transformReader{color}{color:#000000} = 
{color}{color:#7f0055}this{color}{color:#000000}.createTransformReaderIfNeeded({color}{color:#6a3e3e}reader{color}{color:#000000},
 {color}{color:#6a3e3e}is{color}{color:#000000});{color}_

 _{color:#000000}{color}{color:#7f0055}if{color}{color:#000000} 
({color}{color:#6a3e3e}transformReader{color}{color:#000000} != 
{color}{color:#7f0055}null{color}{color:#000000}) {{color}_

 
_{color:#000000}{color}{color:#6a3e3e}message{color}{color:#000000}.setContent(XMLStreamReader.{color}{color:#7f0055}class{color}{color:#000000},
 {color}{color:#6a3e3e}transformReader{color}{color:#000000});{color}_

 _{color:#000000}}{color}_

 _{color:#000000}}{color}_

 _{color:#000000}}{color}_

This logic setting XMLStreamReader to Message. 

 

> TransformInInterceptor and SAAJInInterceptor - Getting SoapFault when 
> accessing WSDL
> ------------------------------------------------------------------------------------
>
>                 Key: CXF-8904
>                 URL: https://issues.apache.org/jira/browse/CXF-8904
>             Project: CXF
>          Issue Type: Bug
>          Components: JAX-WS Runtime
>    Affects Versions: 3.5.3
>            Reporter: Sreenivas K
>            Priority: Major
>
> Due to my peculiar usecase, i had to configure both *TransformInInterceptor 
> (to transform namespaces) and SAAJInInterceptor*  *(to modify soap body for a 
> case).*
> But due to this, when i accessed webservice *?wsdl* in browser, its failing 
> with below exception:
> _org.apache.cxf.binding.soap.SoapFault: Error reading XMLStreamReader._
>         _at 
> org.apache.cxf.binding.soap.saaj.SAAJInInterceptor$SAAJPreInInterceptor.handleMessage(SAAJInInterceptor.java:145)
>  ~[cxf-rt-bindings-soap-3.5._
> _3.jar:3.5.3]_
>   _Caused by: com.ctc.wstx.exc.WstxEOFException: Unexpected EOF in prolog_
>  _at [row,col \\{unknown-source}]: [1,0]_
>         _at 
> com.ctc.wstx.sr.StreamScanner.throwUnexpectedEOF(StreamScanner.java:701) 
> ~[woodstox-core-6.2.8.jar:6.2.8]_
>         _at 
> com.ctc.wstx.sr.BasicStreamReader.handleEOF(BasicStreamReader.java:2235) 
> ~[woodstox-core-6.2.8.jar:6.2.8]_
>  
> When i looked into source code of  
> _*org.apache.cxf.binding.soap.saaj.SAAJInInterceptor$SAAJPreInInterceptor, 
> found below code to validate whether its GET request or not, which is failing 
> and so it proceeded further and thrown that exception:*_
>  
> {color:#000000} {color}{color:#7f0055}public{color}{color:#000000} 
> {color}{color:#7f0055}boolean{color}{color:#000000} isGET(T 
> {color}{color:#6a3e3e}message{color}{color:#000000}) {{color}
> {color:#000000} String {color}{color:#6a3e3e}method{color}{color:#000000} = 
> (String) 
> {color}{color:#6a3e3e}message{color}{color:#000000}.get({color}{color:#2a00ff}"org.apache.cxf.request.method"{color}{color:#000000});{color}
> {color:#000000} {color}{color:#7f0055}return{color}{color:#000000} 
> {color}{color:#2a00ff}"GET"{color}{color:#000000}.equals({color}{color:#6a3e3e}method{color}{color:#000000})
>  && 
> {color}{color:#6a3e3e}message{color}{color:#000000}.{color}{color:#000000}getContent{color}{color:#000000}(XMLStreamReader.{color}{color:#7f0055}class{color}{color:#000000})
>  == {color}{color:#7f0055}null{color}{color:#000000};{color}
> {color:#000000} }{color}
> Here, this condition, 
> *{color:#6a3e3e}message{color}{color:#000000}.{color}{color:#000000}getContent{color}{color:#000000}(XMLStreamReader.{color}{color:#7f0055}class{color}{color:#000000})
>  == {color}{color:#7f0055}null,{color}* {color:#172b4d}is failing and reason 
> i found is, its being set in *TransformInInterceptor.*{color}
> {color:#172b4d}To fix it (for now), i can remove that condition by extending 
> the interceptor and overriding *isGET* method. But i just want to know is 
> this expected or a bug ? And if i remove that condition, any other issues i 
> may get? Or is there any other solution to address my problem?{color}
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to