1 16 package org.outerj.daisy.frontend.components.misc; 17 18 import org.apache.cocoon.forms.validation.WidgetValidator; 19 import org.apache.cocoon.forms.validation.ValidationErrorAware; 20 import org.apache.cocoon.forms.validation.ValidationError; 21 import org.apache.cocoon.forms.formmodel.Widget; 22 import org.xml.sax.InputSource ; 23 import org.xml.sax.SAXException ; 24 import org.xml.sax.helpers.DefaultHandler ; 25 26 import javax.xml.parsers.SAXParserFactory ; 27 import javax.xml.parsers.SAXParser ; 28 import java.io.StringReader ; 29 import java.io.IOException ; 30 31 34 public class XmlValidator implements WidgetValidator { 35 public boolean validate(Widget widget) { 36 Object value = widget.getValue(); 37 if (value != null && value instanceof String ) { 38 SAXParserFactory parserFactory = SAXParserFactory.newInstance(); 40 SAXParser parser = null; 41 try { 42 parser = parserFactory.newSAXParser(); 43 } catch (Exception e) { 44 throw new RuntimeException ("Unexpected error constructing SAX parser in XML validator.", e); 45 } 46 try { 47 parser.parse(new InputSource (new StringReader ((String )value)), new DefaultHandler ()); 48 } catch (SAXException e) { 49 ((ValidationErrorAware)widget).setValidationError(new ValidationError("Well-formed XML required.", false)); 50 return false; 51 } catch (IOException e) { 52 throw new RuntimeException ("Unexpected IO exception in XML validator.", e); 53 } 54 } 55 return true; 56 } 57 } 58 | Popular Tags |