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]

Reply via email to