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