com.thaiopensource.validate.jarv.VerifierFactorySchemaReader 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.validate.jarv;
import com.thaiopensource.util.PropertyMap;
import com.thaiopensource.validate.AbstractSchema;
import com.thaiopensource.validate.AbstractSchemaReader;
import com.thaiopensource.validate.IncorrectSchemaException;
import com.thaiopensource.validate.Option;
import com.thaiopensource.validate.Schema;
import com.thaiopensource.validate.Validator;
import org.iso_relax.verifier.VerifierConfigurationException;
import org.iso_relax.verifier.VerifierFactory;
import org.xml.sax.SAXException;
import javax.xml.transform.sax.SAXSource;
import java.io.IOException;
public class VerifierFactorySchemaReader extends AbstractSchemaReader {
private final VerifierFactory vf;
static private class SchemaImpl extends AbstractSchema {
final org.iso_relax.verifier.Schema schema;
private SchemaImpl(org.iso_relax.verifier.Schema schema) {
this.schema = schema;
}
public Validator createValidator(PropertyMap properties) {
try {
return new VerifierValidator(schema.newVerifier(), properties);
}
catch (VerifierConfigurationException e) {
Exception cause = e.getCauseException();
if (cause instanceof RuntimeException
&& (e.getMessage() == null || e.getMessage().equals(cause.getMessage())))
throw (RuntimeException)cause;
throw new JarvConfigurationException(e);
}
}
}
public VerifierFactorySchemaReader(VerifierFactory vf) {
this.vf = vf;
}
public Schema createSchema(SAXSource source, PropertyMap properties)
throws IOException, SAXException, IncorrectSchemaException {
try {
return new SchemaImpl(vf.compileSchema(source.getInputSource()));
}
catch (SAXException e) {
System.err.println("compileSchema threw a SAXException class " + e.getClass().toString());
if (e.getException() != null)
System.err.println("cause has class " + e.getException().getClass().toString());
throw e;
}
catch (VerifierConfigurationException e) {
for (;;) {
Exception cause = e.getCauseException();
String message = e.getMessage();
if (cause != null && message != null && message.equals(cause.getMessage()))
message = null; // don't really have a message
if (message == null) {
if (cause instanceof RuntimeException)
throw (RuntimeException)cause;
if (cause instanceof SAXException)
throw (SAXException)cause;
if (cause instanceof IOException)
throw (IOException)cause;
if (cause instanceof VerifierConfigurationException) {
e = (VerifierConfigurationException)cause;
continue;
}
}
throw new SAXException(message, cause);
}
}
}
public Option getOption(String uri) {
return null;
}
}