Refactoring: Null checks for getters in ServiceDescriptor (broken XmlDocument)

Signed-off-by: Oleg Nenashev <o.v.nenashev@gmail.com>
pull/75/head
Oleg Nenashev 2015-01-31 12:38:48 +03:00
parent 9291ac911c
commit b95f6f6d5c
1 changed files with 34 additions and 25 deletions

View File

@ -75,6 +75,7 @@ namespace winsw
this.dom = dom; this.dom = dom;
} }
// ReSharper disable once InconsistentNaming
public static ServiceDescriptor FromXML(string xml) public static ServiceDescriptor FromXML(string xml)
{ {
var dom = new XmlDocument(); var dom = new XmlDocument();
@ -357,10 +358,12 @@ namespace winsw
{ {
ArrayList serviceDependencies = new ArrayList(); ArrayList serviceDependencies = new ArrayList();
foreach (XmlNode depend in dom.SelectNodes("//depend")) var xmlNodeList = dom.SelectNodes("//depend");
{ if (xmlNodeList != null)
serviceDependencies.Add(depend.InnerText); foreach (XmlNode depend in xmlNodeList)
} {
serviceDependencies.Add(depend.InnerText);
}
return (string[])serviceDependencies.ToArray(typeof(string)); return (string[])serviceDependencies.ToArray(typeof(string));
} }
@ -470,10 +473,12 @@ namespace winsw
get get
{ {
List<Download> r = new List<Download>(); List<Download> r = new List<Download>();
foreach (XmlNode n in dom.SelectNodes("//download")) var xmlNodeList = dom.SelectNodes("//download");
{ if (xmlNodeList != null)
r.Add(new Download(n)); foreach (XmlNode n in xmlNodeList)
} {
r.Add(new Download(n));
}
return r; return r;
} }
} }
@ -483,26 +488,30 @@ namespace winsw
get get
{ {
List<SC_ACTION> r = new List<SC_ACTION>(); List<SC_ACTION> r = new List<SC_ACTION>();
foreach (XmlNode n in dom.SelectNodes("//onfailure")) var childNodes = dom.SelectNodes("//onfailure");
if (childNodes != null)
{ {
SC_ACTION_TYPE type; foreach (XmlNode n in childNodes)
string action = n.Attributes["action"].Value;
switch (action)
{ {
case "restart": SC_ACTION_TYPE type;
type = SC_ACTION_TYPE.SC_ACTION_RESTART; string action = n.Attributes["action"].Value;
break; switch (action)
case "none": {
type = SC_ACTION_TYPE.SC_ACTION_NONE; case "restart":
break; type = SC_ACTION_TYPE.SC_ACTION_RESTART;
case "reboot": break;
type = SC_ACTION_TYPE.SC_ACTION_REBOOT; case "none":
break; type = SC_ACTION_TYPE.SC_ACTION_NONE;
default: break;
throw new Exception("Invalid failure action: " + action); case "reboot":
type = SC_ACTION_TYPE.SC_ACTION_REBOOT;
break;
default:
throw new Exception("Invalid failure action: " + action);
}
XmlAttribute delay = n.Attributes["delay"];
r.Add(new SC_ACTION(type, delay != null ? ParseTimeSpan(delay.Value) : TimeSpan.Zero));
} }
XmlAttribute delay = n.Attributes["delay"];
r.Add(new SC_ACTION(type, delay != null ? ParseTimeSpan(delay.Value) : TimeSpan.Zero));
} }
return r; return r;
} }