public void TestExportChannels() { string policyCatalogueFilename = m_testPath + "SamplePolicyCatalogue.xml"; string policyLanguageFilename = m_testPath + "SampleLanguageBase.xml"; string policyFilename = m_testPath + "SamplePolicy.xml"; XmlPolicyLanguageStore languageStore = XmlPolicyLanguageStore.Instance; languageStore.AddLanguage(System.IO.File.ReadAllText(policyLanguageFilename)); XMLPolicyCatalogueStore catalogueStore = XMLPolicyCatalogueStore.Instance; catalogueStore.Reset(); catalogueStore.AddPolicyCatalogue(System.IO.File.ReadAllText(policyCatalogueFilename)); XmlStore store = new XmlStore(System.IO.File.ReadAllText(policyFilename)); IPolicyObjectCollection<IPolicySet> policySet = store.Reader.PolicySets; IPolicyObjectCollection<IPolicy> policies = store.Reader.Policies(policySet[0]); IPolicy policy = policies[0]; IPolicySet ps = policySet[0]; NxPolicyStore policyStore = new NxPolicyStore(); policyStore.ResourceManager = ResourcesCache.GetResources(); ps.Export(policyStore); string nxstore = policyStore.XMLRepresentation; CompiledPolicySetExtractor pse = new CompiledPolicySetExtractor(nxstore); List<string> channelNames = pse.GetChannelNames(); foreach (string channel in channelNames) { Assert.AreNotEqual("", pse.GetRules(channel)); Assert.AreNotEqual("", pse.GetObjects(channel)); } }
private void CompileNxBrePolicySet(IPolicySetVersionCache version, IPolicySet policySet, string target) { if ((null == version) || (null == policySet) || (string.IsNullOrEmpty(target))) return; NxPolicyStore nxBreStore = new NxPolicyStore(); nxBreStore.ResourceManager = ResourcesCache.GetResources(); policySet.Export(nxBreStore); CompiledPolicySetExtractor cpse = new CompiledPolicySetExtractor(nxBreStore.XMLRepresentation); List<string> channels = cpse.GetChannelNames(); foreach (string channel in channels) { string objects = cpse.GetObjects(channel); string rules = cpse.GetRules(channel); ICompiledPolicySetCache cps = version.GetCompiledPolicySet(channel, target); if (cps == null) { cps = version.NewCompiledPolicySet(channel, target, rules, objects); } else { cps.Content = rules; cps.ObjectReferences = objects; } SaveLanguages(cpse.GetLanguages(), cps); } }