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
>
>

Reply via email to