internal static XDocument CreateRuleCollectionDocumentFromTemplate(string rulePackId, string organizationId, string organizationName) { ArgumentValidator.ThrowIfNullOrEmpty("rulePackId", rulePackId); ArgumentValidator.ThrowIfNullOrEmpty("organizationId", organizationId); ArgumentValidator.ThrowIfNullOrEmpty("organizationName", organizationName); string text = string.Empty; using (Stream stream = ClassificationDefinitionUtils.LoadStreamFromEmbeddedResource("FingerprintRulePackTemplate.xml")) { using (StreamReader streamReader = new StreamReader(stream)) { text = streamReader.ReadToEnd(); } } if (string.IsNullOrEmpty(text)) { throw new FingerprintRulePackTemplateCorruptedException("FingerprintRulePackTemplate.xml"); } XDocument xdocument = XDocument.Parse(text); XElement xelement = xdocument.Root.Element(XmlProcessingUtils.GetMceNsQualifiedNodeName("RulePack")); xelement.SetAttributeValue("id", rulePackId); XElement xelement2 = xelement.Element(XmlProcessingUtils.GetMceNsQualifiedNodeName("Publisher")); xelement2.SetAttributeValue("id", organizationId); foreach (XElement xelement3 in xelement.Descendants(XmlProcessingUtils.GetMceNsQualifiedNodeName("PublisherName"))) { xelement3.SetValue(organizationName); } XmlProcessingUtils.SetRulePackVersionFromAssemblyFileVersion(xdocument); return(xdocument); }
private string ValidateAndReadMetadata(byte[] rulePackageRawData) { string result = null; try { XDocument xdocument = XmlProcessingUtils.ValidateRulePackageXmlContentsLite(rulePackageRawData); this.rulePackageIdentifier = XmlProcessingUtils.GetRulePackId(xdocument); this.rulePackVersion = (this.InstallDefaultCollection ? XmlProcessingUtils.SetRulePackVersionFromAssemblyFileVersion(xdocument) : XmlProcessingUtils.GetRulePackVersion(xdocument)); ClassificationRuleCollectionIdParameter classificationRuleCollectionIdParameter = ClassificationRuleCollectionIdParameter.Parse("*"); classificationRuleCollectionIdParameter.ShouldIncludeOutOfBoxCollections = true; List <TransportRule> list = base.GetDataObjects <TransportRule>(classificationRuleCollectionIdParameter, base.DataSession, ClassificationDefinitionUtils.GetClassificationRuleCollectionContainerId(base.DataSession)).ToList <TransportRule>(); this.existingRulePack = list.FirstOrDefault((TransportRule transportRule) => transportRule.Name.Equals(this.rulePackageIdentifier, StringComparison.OrdinalIgnoreCase)); this.validationContext = new ValidationContext(this.InstallDefaultCollection ? ClassificationRuleCollectionOperationType.ImportOrUpdate : ClassificationRuleCollectionOperationType.Import, base.CurrentOrganizationId, this.InstallDefaultCollection || (VariantConfiguration.InvariantNoFlightingSnapshot.Global.MultiTenancy.Enabled && this.OutOfBoxCollection), false, (IConfigurationSession)base.DataSession, this.existingRulePack, null, null); if (this.validationContext.DcValidationConfig != null && list.Count >= this.validationContext.DcValidationConfig.MaxRulePackages) { base.WriteError(new ClassificationRuleCollectionNumberExceedLimit(this.validationContext.DcValidationConfig.MaxRulePackages), ErrorCategory.InvalidOperation, null); } result = ClassificationRuleCollectionValidationUtils.ValidateRulePackageContents(this.validationContext, xdocument); this.rulePackageDetailsElement = XmlProcessingUtils.GetRulePackageMetadataElement(xdocument); ClassificationRuleCollectionLocalizableDetails classificationRuleCollectionLocalizableDetails = XmlProcessingUtils.ReadDefaultRulePackageMetadata(this.rulePackageDetailsElement); this.defaultName = classificationRuleCollectionLocalizableDetails.Name; ClassificationRuleCollectionLocalizableDetails classificationRuleCollectionLocalizableDetails2 = XmlProcessingUtils.ReadRulePackageMetadata(this.rulePackageDetailsElement, CultureInfo.CurrentCulture); this.localizedName = ((classificationRuleCollectionLocalizableDetails2 != null && classificationRuleCollectionLocalizableDetails2.Name != null) ? classificationRuleCollectionLocalizableDetails2.Name : this.defaultName); } catch (ClassificationRuleCollectionVersionValidationException ex) { this.WriteWarning(ex.LocalizedString); } catch (ClassificationRuleCollectionAlreadyExistsException exception) { base.WriteError(exception, ErrorCategory.InvalidOperation, null); } catch (ClassificationRuleCollectionInternalValidationException ex2) { base.WriteError(ex2, (-2147287038 == ex2.Error) ? ErrorCategory.ObjectNotFound : ErrorCategory.InvalidResult, null); } catch (ClassificationRuleCollectionTimeoutException exception2) { base.WriteError(exception2, ErrorCategory.OperationTimeout, null); } catch (LocalizedException exception3) { base.WriteError(exception3, ErrorCategory.InvalidData, null); } return(result); }