diff options
author | Manuel Bentele | 2021-01-30 12:00:35 +0100 |
---|---|---|
committer | Manuel Bentele | 2021-01-30 12:00:35 +0100 |
commit | 4317a82d74d8b8518a5dbb6b3675aec3f912802e (patch) | |
tree | f4f449a37385a13133d429c6eaa09fb6b6709625 /src/main/java/org/openslx | |
parent | Remove unused import in QemuMetaData class (diff) | |
download | master-sync-shared-4317a82d74d8b8518a5dbb6b3675aec3f912802e.tar.gz master-sync-shared-4317a82d74d8b8518a5dbb6b3675aec3f912802e.tar.xz master-sync-shared-4317a82d74d8b8518a5dbb6b3675aec3f912802e.zip |
Add automatic RelaxNG schema validation for Libvirt domain XML documents
Diffstat (limited to 'src/main/java/org/openslx')
3 files changed, 13 insertions, 14 deletions
diff --git a/src/main/java/org/openslx/libvirt/domain/Domain.java b/src/main/java/org/openslx/libvirt/domain/Domain.java index 35cd012..4e15ec1 100644 --- a/src/main/java/org/openslx/libvirt/domain/Domain.java +++ b/src/main/java/org/openslx/libvirt/domain/Domain.java @@ -33,6 +33,7 @@ import org.openslx.libvirt.domain.device.Video; import org.openslx.libvirt.xml.LibvirtXmlDocument; import org.openslx.libvirt.xml.LibvirtXmlDocumentException; import org.openslx.libvirt.xml.LibvirtXmlNode; +import org.openslx.libvirt.xml.LibvirtXmlResources; import org.openslx.libvirt.xml.LibvirtXmlSerializationException; import org.openslx.libvirt.xml.LibvirtXmlValidationException; import org.w3c.dom.Node; @@ -61,7 +62,7 @@ public class Domain extends LibvirtXmlDocument public Domain( String xml ) throws LibvirtXmlDocumentException, LibvirtXmlSerializationException, LibvirtXmlValidationException { - super( xml ); + super( xml, LibvirtXmlResources.getLibvirtRng( "domain.rng" ) ); } /** @@ -76,7 +77,7 @@ public class Domain extends LibvirtXmlDocument public Domain( File xml ) throws LibvirtXmlDocumentException, LibvirtXmlSerializationException, LibvirtXmlValidationException { - super( xml ); + super( xml, LibvirtXmlResources.getLibvirtRng( "domain.rng" ) ); } /** @@ -92,7 +93,7 @@ public class Domain extends LibvirtXmlDocument public Domain( InputStream xml ) throws LibvirtXmlDocumentException, LibvirtXmlSerializationException, LibvirtXmlValidationException { - super( xml ); + super( xml, LibvirtXmlResources.getLibvirtRng( "domain.rng" ) ); } /** @@ -108,7 +109,7 @@ public class Domain extends LibvirtXmlDocument public Domain( InputSource xml ) throws LibvirtXmlDocumentException, LibvirtXmlSerializationException, LibvirtXmlValidationException { - super( xml ); + super( xml, LibvirtXmlResources.getLibvirtRng( "domain.rng" ) ); } /** diff --git a/src/main/java/org/openslx/libvirt/xml/LibvirtXmlDocument.java b/src/main/java/org/openslx/libvirt/xml/LibvirtXmlDocument.java index abab162..8fe642b 100644 --- a/src/main/java/org/openslx/libvirt/xml/LibvirtXmlDocument.java +++ b/src/main/java/org/openslx/libvirt/xml/LibvirtXmlDocument.java @@ -9,7 +9,6 @@ import java.io.StringWriter; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; -import javax.xml.transform.Source; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerConfigurationException; import javax.xml.transform.TransformerException; @@ -66,7 +65,7 @@ public abstract class LibvirtXmlDocument implements LibvirtXmlSerializable, Libv * @throws LibvirtXmlDocumentException error occured during setup of the XML context to read and * write from/to a Libvirt XML file. */ - private void createXmlContext( Source rngSchema ) throws LibvirtXmlDocumentException + private void createXmlContext( InputStream rngSchema ) throws LibvirtXmlDocumentException { // used for XML input try { @@ -134,7 +133,7 @@ public abstract class LibvirtXmlDocument implements LibvirtXmlSerializable, Libv * @throws LibvirtXmlSerializationException serialization of the XML content failed. * @throws LibvirtXmlValidationException XML content is not a valid Libvirt XML. */ - public LibvirtXmlDocument( String xml, Source rngSchema ) + public LibvirtXmlDocument( String xml, InputStream rngSchema ) throws LibvirtXmlDocumentException, LibvirtXmlSerializationException, LibvirtXmlValidationException { this.createXmlContext( rngSchema ); @@ -167,7 +166,7 @@ public abstract class LibvirtXmlDocument implements LibvirtXmlSerializable, Libv * @throws LibvirtXmlSerializationException serialization of the XML content failed. * @throws LibvirtXmlValidationException XML content is not a valid Libvirt XML. */ - public LibvirtXmlDocument( File xml, Source rngSchema ) + public LibvirtXmlDocument( File xml, InputStream rngSchema ) throws LibvirtXmlDocumentException, LibvirtXmlSerializationException, LibvirtXmlValidationException { this.createXmlContext( rngSchema ); @@ -200,7 +199,7 @@ public abstract class LibvirtXmlDocument implements LibvirtXmlSerializable, Libv * @throws LibvirtXmlSerializationException serialization of the XML content failed. * @throws LibvirtXmlValidationException XML content is not a valid Libvirt XML. */ - public LibvirtXmlDocument( InputStream xml, Source rngSchema ) + public LibvirtXmlDocument( InputStream xml, InputStream rngSchema ) throws LibvirtXmlDocumentException, LibvirtXmlSerializationException, LibvirtXmlValidationException { this.createXmlContext( rngSchema ); @@ -233,7 +232,7 @@ public abstract class LibvirtXmlDocument implements LibvirtXmlSerializable, Libv * @throws LibvirtXmlSerializationException serialization of the XML content failed. * @throws LibvirtXmlValidationException XML content is not a valid Libvirt XML. */ - public LibvirtXmlDocument( InputSource xml, Source rngSchema ) + public LibvirtXmlDocument( InputSource xml, InputStream rngSchema ) throws LibvirtXmlDocumentException, LibvirtXmlSerializationException, LibvirtXmlValidationException { this.createXmlContext( rngSchema ); diff --git a/src/main/java/org/openslx/libvirt/xml/LibvirtXmlSchemaValidator.java b/src/main/java/org/openslx/libvirt/xml/LibvirtXmlSchemaValidator.java index 01e8adb..e074948 100644 --- a/src/main/java/org/openslx/libvirt/xml/LibvirtXmlSchemaValidator.java +++ b/src/main/java/org/openslx/libvirt/xml/LibvirtXmlSchemaValidator.java @@ -8,7 +8,6 @@ import java.io.InputStream; import java.io.Reader; import javax.xml.XMLConstants; -import javax.xml.transform.Source; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerException; import javax.xml.transform.TransformerFactory; @@ -200,7 +199,7 @@ public class LibvirtXmlSchemaValidator * @param rngSchema * @throws SAXException */ - public LibvirtXmlSchemaValidator( Source rngSchema ) throws SAXException + public LibvirtXmlSchemaValidator( InputStream rngSchema ) throws SAXException { this.createValidationContext( rngSchema ); } @@ -212,7 +211,7 @@ public class LibvirtXmlSchemaValidator * * @throws SAXException Loading, creation and processing of <code>rngSchema</code> has failed. */ - private void createValidationContext( Source rngSchema ) throws SAXException + private void createValidationContext( InputStream rngSchema ) throws SAXException { // use hack to load specific schema factory implementation for RelaxNG schemas System.setProperty( SchemaFactory.class.getName() + ":" + XMLConstants.RELAXNG_NS_URI, @@ -224,7 +223,7 @@ public class LibvirtXmlSchemaValidator // create schema factory to be able to create a RelaxNG schema validator SchemaFactory factory = SchemaFactory.newInstance( XMLConstants.RELAXNG_NS_URI ); factory.setResourceResolver( schemaResolver ); - Schema schema = factory.newSchema( rngSchema ); + Schema schema = factory.newSchema( new StreamSource( rngSchema ) ); // create the RelaxNG schema validator this.rngSchemaValidator = schema.newValidator(); |