summaryrefslogtreecommitdiffstats
path: root/src/main/java/org/openslx/libvirt/xml
diff options
context:
space:
mode:
authorManuel Bentele2021-01-30 12:00:35 +0100
committerManuel Bentele2021-01-30 12:00:35 +0100
commit4317a82d74d8b8518a5dbb6b3675aec3f912802e (patch)
treef4f449a37385a13133d429c6eaa09fb6b6709625 /src/main/java/org/openslx/libvirt/xml
parentRemove unused import in QemuMetaData class (diff)
downloadmaster-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/libvirt/xml')
-rw-r--r--src/main/java/org/openslx/libvirt/xml/LibvirtXmlDocument.java11
-rw-r--r--src/main/java/org/openslx/libvirt/xml/LibvirtXmlSchemaValidator.java7
2 files changed, 8 insertions, 10 deletions
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();