Redundant codes removed.

pull/460/merge^2
Buddhika Chathuranga 2020-05-11 23:33:12 +05:30
parent a2740d5eb9
commit a56f2290e9
3 changed files with 17 additions and 56 deletions

View File

@ -67,7 +67,8 @@ namespace winsw
try
{
ValidateAndLoadXmlSchema(GetXMLReader());
string xmlstring = File.ReadAllText(BasePath + ".xml");
dom = ServiceDescriptor.FromXML(xmlstring).dom;
}
catch (XmlException e)
{
@ -101,41 +102,6 @@ namespace winsw
this.dom = dom;
}
public void ValidateAndLoadXmlSchema(XmlReader reader)
{
XmlReaderSettings settings = new XmlReaderSettings();
settings.ValidationType = ValidationType.Schema;
settings.ValidationEventHandler += new ValidationEventHandler(XmlValidationEventHandler);
Assembly a = Assembly.GetExecutingAssembly();
using (Stream schemaStream = a.GetManifestResourceStream("winsw.XMLSchema.xsd"))
{
using (XmlReader schemaReader = XmlReader.Create(schemaStream))
{
settings.Schemas.Add(null, schemaReader);
}
}
var new_reader = XmlReader.Create(reader, settings);
dom.Load(new_reader);
}
private XmlReader GetXMLReader()
{
return XmlReader.Create(BasePath + ".xml");
}
private void XmlValidationEventHandler(object sender, ValidationEventArgs e)
{
if (e.Severity == XmlSeverityType.Error)
{
throw new XmlException("[Error] XML validation - " + e.Message);
}
}
// ReSharper disable once InconsistentNaming
public static ServiceDescriptor FromXML(string xml)
{

View File

@ -87,21 +87,21 @@
<!-- extensions -->
<xs:element name="extensions">
<xs:element name="extensions" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:choice maxOccurs="unbounded">
<!-- extension -->
<xs:element name="extension">
<xs:element name="extension" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:choice maxOccurs="unbounded">
<xs:element type="xs:string" name="pidfile"/>
<xs:element type="xs:short" name="stopTimeout"/>
<xs:element type="xs:string" name="stopParentFirst"/>
<xs:element type="xs:string" name="checkWinSWEnvironmentVariable"/>
<xs:element type="xs:string" name="pidfile" minOccurs="0" maxOccurs="unbounded"/>
<xs:element type="xs:short" name="stopTimeout" minOccurs="0" maxOccurs="unbounded"/>
<xs:element type="xs:string" name="stopParentFirst" minOccurs="0" maxOccurs="unbounded"/>
<xs:element type="xs:string" name="checkWinSWEnvironmentVariable" minOccurs="0" maxOccurs="unbounded"/>
<!-- mapping -->
<xs:element name="mapping">
<xs:element name="mapping" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:choice maxOccurs="unbounded">
<xs:element name="map" maxOccurs="unbounded" minOccurs="0">

View File

@ -446,22 +446,17 @@ $@"<service>
}
[Test]
public void ValidateAndLoadXmlSchemaTest()
public void FromXMLTest()
{
const string seedXml = @"<id>
<id>myapp</id>
<name>appname</name>
<description>app description</description>
<executable>jenkins</executable>
</id>";
<name>MyApp Service (powered by WinSW)</name>
<description>This service is a service created from a minimal configuration</description>
<executable>%BASE%\myExecutable.exe</executable>
</id>
";
XmlDocument dom = new XmlDocument();
dom.LoadXml(seedXml);
var serviceDescriptor = new ServiceDescriptor(dom);
var reader = XmlReader.Create(new StringReader(seedXml));
Assert.That(() => serviceDescriptor.ValidateAndLoadXmlSchema(reader), Throws.Exception.TypeOf<XmlException>());
Assert.That(() => ServiceDescriptor.FromXML(seedXml), Throws.Exception.TypeOf<XmlException>());
}
}
}