String exMessage = new String("Test Exception");
FaultDetail ec = new FaultDetail();
ec.setMajor((short)2);
ec.setMinor((short)1);
PingMeFault ex = new PingMeFault(exMessage, ec);
objContext.setException(ex);
binding.marshalFault(objContext,
xmlContext,
new JAXBDataBindingCallback(objContext.getMethod(),
DataBindingCallback.Mode.PARTS,
null));
XMLMessage msg = xmlContext.getMessage();
assertNotNull(msg);
Node xmlNode = msg.getRoot();
assertNotNull(xmlNode);
assertEquals(1, xmlNode.getChildNodes().getLength());
assertTrue(msg.hasFault());
XMLFault fault = msg.getFault();
assertNotNull(fault);
assertEquals(getExceptionString(ex, exMessage),
fault.getFaultString());
assertTrue(fault.hasChildNodes());
Node detail = fault.getFaultDetail();
assertNotNull(detail);
NodeList list = detail.getChildNodes();
assertEquals(1, list.getLength());
WebFault wfAnnotation = ex.getClass().getAnnotation(WebFault.class);
assertEquals(wfAnnotation.targetNamespace(), list.item(0).getNamespaceURI());
assertEquals(wfAnnotation.name(), list.item(0).getLocalName());
}