com.thaiopensource.validation.SchemaFactory2 Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of wicketstuff-jing Show documentation
Show all versions of wicketstuff-jing Show documentation
Jing is a validator for RELAX NG and other schema languages. This
project was taken from http://code.google.com/p/jing-trang and
mavenized for inclusion in the Wicket Stuff HTML Validator.
The code was taken from the 20091111 release.
package com.thaiopensource.validation;
import org.xml.sax.SAXException;
import org.xml.sax.ErrorHandler;
import org.xml.sax.SAXNotRecognizedException;
import org.xml.sax.SAXNotSupportedException;
import org.xml.sax.InputSource;
import org.w3c.dom.ls.LSResourceResolver;
import javax.xml.transform.Source;
import javax.xml.transform.sax.SAXSource;
import javax.xml.transform.stream.StreamSource;
import javax.xml.validation.SchemaFactory;
import javax.xml.XMLConstants;
import java.io.File;
import java.net.URL;
/**
* Extends the SchemaFactory abstract class. All methods of SchemaFactory
* that return a Schema are overridden to return a Schema2. Default implementations
* of several methods are provided.
* @see SchemaFactory
*/
public abstract class SchemaFactory2 extends SchemaFactory {
// Corresponds to XMLConstants.FEATURE_SECURE_PROCESSING.
private boolean secureProcessing = false;
private ErrorHandler errorHandler = null;
private LSResourceResolver resourceResolver = null;
/**
* Create a new Schema from a SAXSource. Subclasses must implement this.
* @see SchemaFactory#newSchema(Source)
*/
public abstract Schema2 newSchema(SAXSource schema) throws SAXException;
public Schema2 newSchema(Source[] schemas) throws SAXException {
if (schemas.length != 1)
throw new UnsupportedOperationException();
return newSchema(schemas[0]);
}
/**
* This implementation of SchemaFactory#newSchema simply throws UnsupportedOperationException.
* @see SchemaFactory#newSchema
*/
public Schema2 newSchema() throws SAXException {
throw new UnsupportedOperationException();
}
public Schema2 newSchema(Source source) throws SAXException {
if (source == null)
throw new NullPointerException();
if (source instanceof SAXSource)
return newSchema((SAXSource)source);
InputSource inputSource = SAXSource.sourceToInputSource(source);
// XXX support other types of Source for the schema
if (inputSource == null)
throw new IllegalArgumentException("unsupported type of Source for schema");
return newSchema(new SAXSource(inputSource));
}
public Schema2 newSchema(File schema) throws SAXException {
return newSchema(new StreamSource(schema));
}
public Schema2 newSchema(URL schema) throws SAXException {
return newSchema(new StreamSource(schema.toExternalForm()));
}
public void setErrorHandler(ErrorHandler errorHandler) {
this.errorHandler = errorHandler;
}
public ErrorHandler getErrorHandler() {
return errorHandler;
}
public void setResourceResolver(LSResourceResolver resourceResolver) {
this.resourceResolver = resourceResolver;
}
public LSResourceResolver getResourceResolver() {
return resourceResolver;
}
/**
* Extends SchemaFactory.setFeature by implementing the secure processing feature.
* The implementation simply sets an internal flag, which can be accessed using
* getSecureProcessing.
* @see SchemaFactory#setFeature
* @see #getSecureProcessing
*/
public void setFeature(String name, boolean value) throws SAXNotRecognizedException, SAXNotSupportedException {
if (XMLConstants.FEATURE_SECURE_PROCESSING.equals(name))
secureProcessing = value;
else
super.setFeature(name, value);
}
/**
* Extends SchemaFactory.setFeature by implementing the secure processing feature.
* The implementation simply sets an internal flag, which can be accessed using
* getSecureProcessing.
* @see SchemaFactory#getFeature
* @see #getSecureProcessing
*/
public boolean getFeature(String name) throws SAXNotRecognizedException, SAXNotSupportedException {
if (XMLConstants.FEATURE_SECURE_PROCESSING.equals(name))
return secureProcessing;
return super.getFeature(name);
}
public void setSecureProcessing(boolean secureProcessing) {
this.secureProcessing = secureProcessing;
}
public boolean getSecureProcessing() {
return secureProcessing;
}
}