AegisSchemaValidationInInterceptor trying to setup validation for ?wsdl request
-------------------------------------------------------------------------------

                 Key: CXF-3945
                 URL: https://issues.apache.org/jira/browse/CXF-3945
             Project: CXF
          Issue Type: Bug
    Affects Versions: 2.4.1
            Reporter: James Phillpotts


I have a service that is using Aegis for the databindings. If I switch on 
message validation as follows:

{code:xml}
<jaxws:properties>
  <entry key="schema-validation-enabled" value="true"/>
</jaxws:properties>
{code}

And then make a request for the WSDL, 
http://localhost:8080/webservices/soap/myService?wsdl I get the following 
response:

{code:xml}
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/";>
  <soap:Body>
    <soap:Fault>
      <faultcode>soap:Server</faultcode>
      <faultstring>Fault occurred while processing.</faultstring>
    </soap:Fault>
  </soap:Body>
</soap:Envelope>
{code}

And the following stack trace:

{noformat}
java.lang.NullPointerException
        at 
org.apache.cxf.wstx_msv_validation.Stax2ValidationUtils.setupValidation(Stax2ValidationUtils.java:71)
        at 
org.apache.cxf.wstx_msv_validation.WoodstoxValidationImpl.setupValidation(WoodstoxValidationImpl.java:67)
        at 
org.apache.cxf.aegis.databinding.AegisSchemaValidationInInterceptor.setSchemaInMessage(AegisSchemaValidationInInterceptor.java:68)
        at 
org.apache.cxf.aegis.databinding.AegisSchemaValidationInInterceptor.handleMessage(AegisSchemaValidationInInterceptor.java:56)
        at 
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:263)
        at 
org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:118)
        at 
org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:208)
        at 
org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:223)
        at 
org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:205)
        at 
org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:113)
        at 
org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:184)
        at 
org.apache.cxf.transport.servlet.AbstractHTTPServlet.doGet(AbstractHTTPServlet.java:112)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
{noformat}

It looks like this is because there is no XMLStreamReader for a GET request. 
This could be fixed by changing the handleMessage method in 
AegisSchemaValidationInInterceptor to only call setSchemaInMessage if it is not 
a WSDL GET request.

Found in version 2.4.1, but checked trunk source code, and there don't appear 
to have been any changes here.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to