-
Bug
-
Resolution: Done
-
Major
-
None
-
None
JBossWS seems to have a problem on the translation between SOAPFaultException
and SOAPFault, that is performed by SOAPFaultExceptionHelper
(getSOAPFaultException and exceptionToFaultMessage methods). For example, if I
run this test method (based on
org.jboss.test.ws.soap.SOAPFaultTestCase.testExceptionToFault()):
[code]
public void testExceptionToFault() throws Exception
{
SOAPFactory factory = SOAPFactory.newInstance();
// Create a detail element.
Detail detail = factory.createDetail();
Name el1 = factory.createName("name", "ns1", "http://somens");
DetailEntry detailEntry = detail.addDetailEntry(el1);
detailEntry.setValue("Kermmit");
SOAPFaultException faultEx = new SOAPFaultException(Constants.SOAP11_FAULT_CODE_CLIENT, "Some fault message", "Some fault actor", detail);
SOAPEnvelope soapEnv = SOAPFaultExceptionHelper.exceptionToFaultMessage(faultEx).getSOAPPart().getEnvelope();
assertEquals(DOMUtils.parse(envStr), soapEnv);
}
[/code]
The soapEnv variable will contain the following:
[code]
<env:Envelope xmlns:env='http://schemas.xmlsoap.org/soap/envelope/'>
<env:Header/>
<env:Body>
<env:Fault>
<faultcode>env:Client</faultcode>
<faultstring>Some fault message</faultstring>
</env:Fault>
</env:Body>
</env:Envelope>
[/code]
When in fact it should contain:
[code]
<env:Envelope xmlns:env='http://schemas.xmlsoap.org/soap/envelope/'>
<env:Header/>
<env:Body>
<env:Fault>
<faultcode>env:Client</faultcode>
<faultstring>Some fault message</faultstring>
<faultactor>Some fault actor</faultactor>
<detail>
<ns1:name xmlns:ns1='http://somens'>Kermmit</ns1:name>
</detail>
</env:Fault>
</env:Body>
</env:Envelope>
[/code]
What I mean is that JBossWS ignores the fault actor and detail elements of a
SOAPFaultException. I've attached a modified SOAPFaultTestCase that reproduces
this error.