Hello again,
I've found the reason of empty line and column numbers. It was a
"conflicting" SoapMessageHandler, which was injected by handler chain.
But the following line is still not printed at system.out
System.out.println("Server XmlEventHandler: NodeName=" +
event.getLocator().getNode().getNodeName());
regards
Christian
2012/10/17 Christian Gräfe <[email protected]>
> Hello,
>
> i tried your way to get a customized validation error message, but it
> doesn't work for me. Do you have any idea why it doesn't work?
> The second system.out of the "NodeName" is not printed?
>
> My validation event handler code:
> =========================
> package eu.myCompany.schemas.wsdl.precalculation;
>
> import javax.xml.bind.ValidationEvent;
> import javax.xml.bind.helpers.DefaultValidationEventHandler;
>
> public class MyValidationEventHandler extends
> DefaultValidationEventHandler {
> @Override
> public boolean handleEvent(ValidationEvent event) {
>
> System.out.println("Server XmlEventHandler: handleEvent()......");
> System.out.println("Server XmlEventHandler: Serverity=" +
> String.valueOf(event.getSeverity()));
> System.out.println("Server XmlEventHandler: Message=" +
> event.getMessage());
> System.out.println("Server XmlEventHandler: Line Number=" +
> event.getLocator().getLineNumber());
> System.out.println("Server XmlEventHandler: Column Number= " +
> event.getLocator().getColumnNumber());
> System.out.println("Server XmlEventHandler: NodeName=" +
> event.getLocator().getObject());
> System.out.println("Server XmlEventHandler: NodeName=" +
> event.getLocator().getNode().getNodeName());
>
> if (event.getSeverity() == ValidationEvent.WARNING) {
> System.out.println("Server XmlEventHandler: WARNING");
> return super.handleEvent(event);
>
> }
> else
> {
>
> //System.out.println("Server XmlEventHandler:
> handleEvent()......" + event.getLocator().getNode().getNodeName());
> System.out.println("Server XmlEventHandler: handleEvent()......"
> + event.getMessage() + " [line:"+event.getLocator().getLineNumber()+"]");
> throw new RuntimeException(event.getMessage() + "
> [line:"+event.getLocator().getLineNumber()+"]");
> }
> }
> }
> =========================
> Code in cxf-servlet.xml
> =========================
> <jaxws:properties>
> <entry key="schema-validation-enabled" value="true" />
> <entry key="jaxb-validation-event-handler">
> <bean
> class="eu.myCompany.schemas.wsdl.precalculation.MyValidationEventHandler" />
> </entry>
> </jaxws:properties>
> =========================
>
> 2012/9/20 Glen Mazza <[email protected]>
>
>> Hmm, when I did this (2 years ago), the error messages *did* give the
>> element that failed, see here for the sample output:
>> http://www.jroller.com/gmazza/**entry/soap_xml_schema_**validation<http://www.jroller.com/gmazza/entry/soap_xml_schema_validation>
>>
>> Glen
>>
>>
>> On 09/19/2012 03:13 PM, Christian Gräfe wrote:
>>
>>> Hello,
>>>
>>> I'm using the CXF version 2.6.2 on the server side with enabled schema
>>> validation.
>>> Due to special requirements I need to catch the soap faults, which
>>> happens
>>> after a validation error, and wrap the message into a defined structure.
>>> Curently I'm using a SOAPMessageHandler to filter he soap fault message.
>>>
>>> I get a fault message like this:
>>> cvc-enumeration-valid: Value 'Y' is not facet-valid with respect to
>>> enumeration '[J, N]'. It must be a value from the enumeration.
>>>
>>> It is possible to get the xml element which is causing the problem?
>>>
>>>
>>> best regards
>>> Christian G.
>>>
>>>
>>
>> --
>> Glen Mazza
>> Talend Community Coders - coders.talend.com
>> blog: www.jroller.com/gmazza
>>
>>
>