Package org.milyn.xml

Source Code of org.milyn.xml.XsdValidatorTest$MyLSResourceResolver

/*
* Milyn - Copyright (C) 2006 - 2010
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License (version 2.1) as published by the Free Software
* Foundation.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
* See the GNU Lesser General Public License for more details:
* http://www.gnu.org/licenses/lgpl.txt
*/

package org.milyn.xml;

import junit.framework.TestCase;
import org.apache.xerces.jaxp.validation.XMLSchemaFactory;
import org.w3c.dom.Document;
import org.w3c.dom.ls.LSInput;
import org.w3c.dom.ls.LSResourceResolver;
import org.xml.sax.SAXException;

import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Source;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamSource;
import java.io.IOException;
import java.net.URISyntaxException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
* @author <a href="mailto:tom.fennelly@gmail.com">tom.fennelly@gmail.com</a>
*/
public class XsdValidatorTest extends TestCase {

    public void test_validation_via_sources() throws IOException, SAXException, ParserConfigurationException, URISyntaxException {
        Document document = XmlUtil.parseStream(getClass().getResourceAsStream("xsdDomValidator-test-01.xml"));
        XsdValidator validator = new XsdValidator();
        List<Source> sources = new ArrayList<Source>();

        sources.add(new StreamSource(getClass().getResourceAsStream("/META-INF/xsd/test-xsd-01.xsd")));
        sources.add(new StreamSource(getClass().getResourceAsStream("/META-INF/xsd/test-xsd-02.xsd")));

        validator.setXSDSources(sources);
        validator.validate(new DOMSource(document));
    }

    public void test_dom_validation_via_resolver() throws IOException, SAXException, ParserConfigurationException, URISyntaxException {
        Document document = XmlUtil.parseStream(getClass().getResourceAsStream("xsdDomValidator-test-01.xml"));
        XsdValidator validator = new XsdValidator();

        validator.setSchemaFactory(new XMLSchemaFactory());

        MyLSResourceResolver schemaSourceResolver = new MyLSResourceResolver();
        schemaSourceResolver.resources.put("http://www.milyn.org/xsd/test-xsd-01.xsd", new StreamSourceLSInput(new StreamSource(getClass().getResourceAsStream("/META-INF/xsd/test-xsd-01.xsd"))));
        schemaSourceResolver.resources.put("http://www.milyn.org/xsd/test-xsd-02.xsd", new StreamSourceLSInput(new StreamSource(getClass().getResourceAsStream("/META-INF/xsd/test-xsd-02.xsd"))));

        validator.setSchemaSourceResolver(schemaSourceResolver);
        validator.validate(new DOMSource(document));
    }

    public void test_stream_validation_via_resolver() throws IOException, SAXException, ParserConfigurationException, URISyntaxException {
        XsdValidator validator = new XsdValidator();

        validator.setSchemaFactory(new XMLSchemaFactory());

        MyLSResourceResolver schemaSourceResolver = new MyLSResourceResolver();
        schemaSourceResolver.resources.put("http://www.milyn.org/xsd/test-xsd-01.xsd", new StreamSourceLSInput(new StreamSource(getClass().getResourceAsStream("/META-INF/xsd/test-xsd-01.xsd"))));
        schemaSourceResolver.resources.put("http://www.milyn.org/xsd/test-xsd-02.xsd", new StreamSourceLSInput(new StreamSource(getClass().getResourceAsStream("/META-INF/xsd/test-xsd-02.xsd"))));

        validator.setSchemaSourceResolver(schemaSourceResolver);
        validator.validate(new StreamSource(getClass().getResourceAsStream("xsdDomValidator-test-01.xml")));
    }

    public class MyLSResourceResolver implements LSResourceResolver {

        private Map<String, StreamSourceLSInput> resources = new HashMap<String, StreamSourceLSInput>();

        public LSInput resolveResource(String type, String namespaceURI, String publicId, String systemId, String baseURI) {
            return resources.get(namespaceURI);
        }
    }
}
TOP

Related Classes of org.milyn.xml.XsdValidatorTest$MyLSResourceResolver

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.