I try to get validation message in variable with Jaxb. Try example from here http://docs.oracle.com/cd/E17802_01/webservices/webservices/docs/1.6/api/javax/xml/bind/Unmarshaller.html
My code:
JAXBContext jaxbContext = JAXBContext.newInstance("com.piyush");
SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = factory.newSchema(new StreamSource(new File("D:/liferay-develop/workspace/cat_test/v1/STD_MP.xsd")));
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
jaxbUnmarshaller.setSchema(schema);
ValidationEventCollector validationCollector= new ValidationEventCollector();
jaxbUnmarshaller.setEventHandler( validationCollector );
STDMP ts = (STDMP)jaxbUnmarshaller.unmarshal(xml_gkuzu);
if(validationCollector.hasEvents())
{
for(ValidationEvent event:validationCollector.getEvents())
{
String msg = event.getMessage();
System.out.println(msg);
}
}
But nothing happens. What am I doing wrong ?
The following should help:
JAXB2ValidationEventCollector
ValidationEventCollector
came from JAXB 1 (JSR-31) and doesn't appear to support the changes we made to validation in JAXB 2 (JSR-222) very well. You can solve this issue by creating a subclass ofValidationEventHandler
like the following.EXAMPLE
The following example can be used to prove that everything works
Customer
PhoneNumber
customer.xsd
input.xml
Demo
Output