package org.keycloak.protocol.cas; 
 | 
  
 | 
import org.glassfish.jaxb.runtime.v2.util.FatalAdapter; 
 | 
import org.w3c.dom.Document; 
 | 
import org.xml.sax.InputSource; 
 | 
import org.xml.sax.SAXException; 
 | 
import org.xml.sax.helpers.DefaultHandler; 
 | 
  
 | 
import javax.xml.XMLConstants; 
 | 
import javax.xml.parsers.DocumentBuilder; 
 | 
import javax.xml.parsers.DocumentBuilderFactory; 
 | 
import javax.xml.validation.Schema; 
 | 
import javax.xml.validation.SchemaFactory; 
 | 
import java.io.StringReader; 
 | 
  
 | 
public abstract class XMLValidator { 
 | 
    private XMLValidator(){} 
 | 
  
 | 
    public static Schema schemaFromClassPath(String path) throws SAXException { 
 | 
        return SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI) 
 | 
                .newSchema(XMLValidator.class.getResource(path)); 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * Parse XML document and validate against CAS schema 
 | 
     */ 
 | 
    public static Document parseAndValidate(String xml, Schema schema) throws Exception { 
 | 
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 
 | 
        factory.setSchema(schema); 
 | 
        factory.setNamespaceAware(true); 
 | 
        DocumentBuilder builder = factory.newDocumentBuilder(); 
 | 
        builder.setErrorHandler(new FatalAdapter(new DefaultHandler())); 
 | 
        return builder.parse(new InputSource(new StringReader(xml))); 
 | 
    } 
 | 
} 
 |