package com.rayo.server.validation;
import java.io.StringReader;
import javax.annotation.PostConstruct;
import javax.xml.XMLConstants;
import javax.xml.transform.stream.StreamSource;
import javax.xml.validation.Schema;
import javax.xml.validation.SchemaFactory;
import javax.xml.validation.Validator;
import org.springframework.core.io.Resource;
import com.rayo.core.validation.ValidationException;
import com.voxeo.logging.Loggerf;
public class SsmlValidator {
private static final Loggerf logger = Loggerf.getLogger(SsmlValidator.class);
private Schema schema;
Resource resource;
@PostConstruct
public void init() {
final SchemaFactory sf = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
try {
schema = sf.newSchema(resource.getFile());
} catch (Exception e) {
logger.error("Could not initialize SSML Validation. SSML Validation will be turned off");
e.printStackTrace();
}
}
public void validateSsml(String ssml) throws ValidationException {
Validator validator = schema.newValidator();
try {
validator.validate(new StreamSource( new StringReader(ssml)));
} catch (Exception e) {
throw new ValidationException("Invalid SSML: " + e.getMessage());
}
}
public void setResource(Resource resource) {
this.resource = resource;
}
}