void GetDependenciesForWorkerService(XElement xml)
{
var loadXml = xml.Descendants("Actions").ToList();
if(loadXml.Count != 1)
{
return;
}
using(var textReader = new StringReader(loadXml[0].Value))
{
var errors = new StringBuilder();
try
{
var elementToUse = loadXml[0].HasElements ? loadXml[0] : XElement.Load(textReader, LoadOptions.None);
var dependenciesFromXml = from desc in elementToUse.Descendants()
where
desc.Name.LocalName.Contains("Action") &&
desc.Attribute("SourceID") != null
select desc;
var xElements = dependenciesFromXml as List<XElement> ?? dependenciesFromXml.ToList();
var count = xElements.Count;
if(count > 0)
{
Dependencies = new List<IResourceForTree>();
xElements.ForEach(element =>
{
var uniqueIdAsString = element.AttributeSafe("SourceID");
var resourceIdAsString = element.AttributeSafe("ResourceID");
var resourceName = element.AttributeSafe("SourceName");
var actionTypeStr = element.AttributeSafe("Type");
var resourceType = GetResourceTypeFromString(actionTypeStr);
Guid uniqueId;
Guid.TryParse(uniqueIdAsString, out uniqueId);
Guid resId;
Guid.TryParse(resourceIdAsString, out resId);
if (resId == Guid.Empty)
{
resId = uniqueId;
}
if(resourceType == ResourceType.WebService)
{
resId = uniqueId;
}
Dependencies.Add(CreateResourceForTree(resId, uniqueId, resourceName, resourceType));
});
}
}
catch(Exception e)
{
var resName = xml.AttributeSafe("Name");
errors.AppendLine("Loading dependencies for [ " + resName + " ] caused " + e.Message);
}
}
}