jochen 2005/02/21 01:15:23 Modified: src/jaxme/org/apache/ws/jaxme/impl JMValidatorImpl.java Log: Simple implementation of ValidationEventHandler. Revision Changes Path 1.3 +43 -9 ws-jaxme/src/jaxme/org/apache/ws/jaxme/impl/JMValidatorImpl.java Index: JMValidatorImpl.java =================================================================== RCS file: /home/cvs/ws-jaxme/src/jaxme/org/apache/ws/jaxme/impl/JMValidatorImpl.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- JMValidatorImpl.java 16 Feb 2004 23:39:57 -0000 1.2 +++ JMValidatorImpl.java 21 Feb 2005 09:15:23 -0000 1.3 @@ -16,19 +16,53 @@ */ package org.apache.ws.jaxme.impl; +import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBException; +import javax.xml.bind.Marshaller; +import javax.xml.bind.Unmarshaller; +import javax.xml.bind.UnmarshallerHandler; +import javax.xml.bind.ValidationEvent; +import javax.xml.bind.ValidationEventHandler; import org.apache.ws.jaxme.JMValidator; -/** - * @author <a href="mailto:[EMAIL PROTECTED]">Jochen Wiedmann</a> - * @version $Id$ + +/** Simple validator implementation. Works by creating a + * [EMAIL PROTECTED] javax.xml.bind.Marshaller}, which generates SAX events. + * The SAX events are piped into an instance of + * [EMAIL PROTECTED] javax.xml.bind.UnmarshallerHandler}. */ public class JMValidatorImpl extends JMControllerImpl implements JMValidator { - public boolean validate(Object pObject) throws JAXBException { - return true; - } - public boolean validateRoot(Object pObject) throws JAXBException { - return true; - } + private class MyEventHandler implements ValidationEventHandler { + private boolean invalid; + public boolean handleEvent(ValidationEvent pEvent) { + int severity = pEvent.getSeverity(); + boolean result = severity == ValidationEvent.ERROR + || severity == ValidationEvent.FATAL_ERROR; + if (result) { + invalid = true; + } + ValidationEventHandler eh = getEventHandler(); + if (eh == null) { + return result; + } else { + return eh.handleEvent(pEvent); + } + } + } + + public boolean validate(Object pObject) throws JAXBException { + JAXBContext jc = getJAXBContextImpl(); + Marshaller m = jc.createMarshaller(); + Unmarshaller u = jc.createUnmarshaller(); + MyEventHandler eh = new MyEventHandler(); + u.setEventHandler(eh); + UnmarshallerHandler uh = u.getUnmarshallerHandler(); + m.marshal(pObject, uh); + return !eh.invalid; + } + + public boolean validateRoot(Object pObject) throws JAXBException { + throw new IllegalStateException("Not implemented, use validate(Object)"); + } }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]