private void ValidateBySchema(XDocument xDoc, CheckRunDocumentType documentType, string errorMessage) { XmlSchemaSet schemas = null; try { switch (documentType) { case CheckRunDocumentType.CheckRunLaunch: { schemas = DataSchemas.Instance.CheckRunLaunchSchemaSet; break; } case CheckRunDocumentType.CheckRunArtifact: { schemas = DataSchemas.Instance.CheckRunArtifactSchemaSet; break; } default: { throw new CheckInfrastructureBaseException(string.Format("{0} LoadAndValidateXml failed. The received document type enum of '{1}' is not a valid value.", errorMessage, documentType)); } } xDoc.Validate(schemas, null); } catch (XmlSchemaException ex) { throw new CheckInfrastructureBaseException(string.Format("Validation failed with schema for '{0}'", documentType), ex); } }
private XDocument LoadAndValidateXml(string xml, CheckRunDocumentType documentType, string errorMessage) { XDocument result = null; int marker = -1; try { marker = 0; result = XDocFromString(xml); marker = 1; this.ValidateBySchema(result, documentType, errorMessage); marker = 2; this.CheckRequiredDataElements(result, documentType, errorMessage); } catch (Exception ex) { if (marker >= 0) { string message = string.Empty; switch (marker) { case 0: { message = "loading"; break; } case 1: { message = "validating"; break; } case 2: { message = "checking for specific DataElement elements"; break; } default: { break; } } errorMessage += string.Format("'{0}' Failed on {1}. '{3}'. Input XML '{2}'", errorMessage, message, xml, ex); throw new CheckInfrastructureBaseException(errorMessage, ex); } else { errorMessage += string.Format("LoadAndValidateXml failed. '{0}.'", ex); throw new CheckInfrastructureBaseException(errorMessage, ex); } } return(result); }
private void CheckRequiredDataElements(XDocument xDoc, CheckRunDocumentType documentType, string errorMessage) { XElement elementWithDataChildren = xDoc.Root.Element(DataStringConstants.ElementNames.CheckRunData); ReadOnlyCollection <string> listToCheck = null; switch (documentType) { case CheckRunDocumentType.CheckRunLaunch: { listToCheck = this.m_CrlChecklistReadOnly; break; } case CheckRunDocumentType.CheckRunArtifact: { listToCheck = this.m_CraChecklistReadOnly; break; } } this.VerifyDataElementsExist(elementWithDataChildren, listToCheck); }