com.thaiopensource.validate.ResolverFactory Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jing Show documentation
Show all versions of jing Show documentation
Jing - tool for validating RelaxNG - (OSGi-compatible version)
package com.thaiopensource.validate;
import com.thaiopensource.resolver.Resolver;
import com.thaiopensource.resolver.SequenceResolver;
import com.thaiopensource.resolver.xml.sax.SAX;
import com.thaiopensource.resolver.xml.sax.SAXResolver;
import com.thaiopensource.resolver.xml.transform.Transform;
import com.thaiopensource.util.PropertyMap;
import com.thaiopensource.xml.sax.XMLReaderCreator;
import org.xml.sax.EntityResolver;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;
import javax.xml.transform.URIResolver;
public class ResolverFactory {
static private class CustomSAXResolver extends SAXResolver {
private final XMLReaderCreator xrc;
private CustomSAXResolver(Resolver resolver, XMLReaderCreator xrc) {
super(resolver);
this.xrc = xrc;
}
protected XMLReader createXMLReaderWithoutResolver() throws SAXException {
return xrc.createXMLReader();
}
}
static public SAXResolver createResolver(PropertyMap properties) {
Resolver[] resolvers = new Resolver[4];
int i = 0;
// user-specified Resolver first
resolvers[0] = properties.get(ValidateProperty.RESOLVER);
if (resolvers[0] != null)
i++;
// EntityResolver before uriResolver
EntityResolver entityResolver = properties.get(ValidateProperty.ENTITY_RESOLVER);
URIResolver uriResolver = properties.get(ValidateProperty.URI_RESOLVER);
if (entityResolver != null)
resolvers[i++] = SAX.createResolver(entityResolver, uriResolver == null);
if (uriResolver != null)
resolvers[i++] = Transform.createResolver(uriResolver);
while (--i > 0)
resolvers[i - 1] = new SequenceResolver(resolvers[i - 1], resolvers[i]);
// XMLReaderCreator last, so it can create an EntityResolver
XMLReaderCreator xrc = properties.get(ValidateProperty.XML_READER_CREATOR);
if (xrc != null)
return new CustomSAXResolver(resolvers[0], xrc);
return new SAXResolver(resolvers[0]);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy