public void TestParseIfNested() { using (var docStream = AssemblyResourceHelper.GetResourceStream(this, "text_in_if_document.xml")) { doc = XDocument.Load(docStream); var expectedRootProcessor = new RootProcessor(); ITagProcessor expectedIfProcessor = new IfProcessor(); expectedIfProcessor.AddProcessor(new TextProcessor()); var expectedIfProcessors = new List<ITagProcessor>(expectedIfProcessor.Processors); expectedRootProcessor.AddProcessor(expectedIfProcessor); var expectedRootProcessors = new List<ITagProcessor>(expectedRootProcessor.Processors); var actualRootProcessor = new RootProcessor(); generalParser.Parse(actualRootProcessor, doc.Root); var actualRootProcessors = new List<ITagProcessor>(actualRootProcessor.Processors); Assert.AreEqual(expectedRootProcessors.Count, actualRootProcessors.Count); Assert.AreEqual(expectedRootProcessors[0].GetType(), actualRootProcessors[0].GetType()); var actualIfProcessors = new List<ITagProcessor>(actualRootProcessors[0].Processors); Assert.AreEqual(expectedIfProcessors.Count, actualIfProcessors.Count); Assert.AreEqual(expectedIfProcessors[0].GetType(), actualIfProcessors[0].GetType()); Assert.AreEqual(expectedIfProcessors[0].Processors.Count, expectedIfProcessors[0].Processors.Count); } }
public void TestParseIfNested() { using (var docStream = AssemblyResourceHelper.GetResourceStream(this, "text_in_if_document.xml")) { doc = XDocument.Load(docStream); var expectedRootProcessor = new RootProcessor(); ITagProcessor expectedIfProcessor = new IfProcessor(); expectedIfProcessor.AddProcessor(new TextProcessor()); var expectedIfProcessors = new List <ITagProcessor>(expectedIfProcessor.Processors); expectedRootProcessor.AddProcessor(expectedIfProcessor); var expectedRootProcessors = new List <ITagProcessor>(expectedRootProcessor.Processors); var actualRootProcessor = new RootProcessor(); generalParser.Parse(actualRootProcessor, doc.Root); var actualRootProcessors = new List <ITagProcessor>(actualRootProcessor.Processors); Assert.AreEqual(expectedRootProcessors.Count, actualRootProcessors.Count); Assert.AreEqual(expectedRootProcessors[0].GetType(), actualRootProcessors[0].GetType()); var actualIfProcessors = new List <ITagProcessor>(actualRootProcessors[0].Processors); Assert.AreEqual(expectedIfProcessors.Count, actualIfProcessors.Count); Assert.AreEqual(expectedIfProcessors[0].GetType(), actualIfProcessors[0].GetType()); Assert.AreEqual(expectedIfProcessors[0].Processors.Count, expectedIfProcessors[0].Processors.Count); } }
private ProcessorTopology BuildTopology(ISet<string> nodeGroup) { IProcessor rootProcessor = new RootProcessor(); IDictionary<string, IProcessor> sources = new Dictionary<string, IProcessor>(); IDictionary<string, IProcessor> sinks = new Dictionary<string, IProcessor>(); IDictionary<string, IProcessor> processors = new Dictionary<string, IProcessor>(); IDictionary<string, IStateStore> stateStores = new Dictionary<string, IStateStore>(); foreach (var nodeFactory in nodeFactories.Values) { if(nodeGroup == null || nodeGroup.Contains(nodeFactory.Name)) { var processor = nodeFactory.Build(); processors.Add(nodeFactory.Name, processor); if (nodeFactory is IProcessorNodeFactory) BuildProcessorNode(processors, stateStores, nodeFactory as IProcessorNodeFactory, processor); else if (nodeFactory is ISourceNodeFactory) BuildSourceNode(sources, nodeFactory as ISourceNodeFactory, processor); else if (nodeFactory is ISinkNodeFactory) BuildSinkNode(processors, sinks, nodeFactory as ISinkNodeFactory, processor); else throw new TopologyException($"Unknown definition class: {nodeFactory.GetType().Name}"); } } foreach (var sourceProcessor in sources.Values) rootProcessor.AddNextProcessor(sourceProcessor); return new ProcessorTopology(rootProcessor, sources, sinks, processors, stateStores); }
protected ControllerRequestProcessor( RootProcessor module, ProfileManager profileManager) : base(module, profileManager) { Contract.Requires<ArgumentNullException>(module != null); Contract.Requires<ArgumentNullException>(profileManager != null); }
private ProcessorTopology BuildTopology(ISet <string> nodeGroup, TaskId taskId) { // need refactor a little for repartition topic/processor source & sink etc .. change topic name IProcessor rootProcessor = new RootProcessor(); IDictionary <string, IProcessor> sources = new Dictionary <string, IProcessor>(); IDictionary <string, IProcessor> sinks = new Dictionary <string, IProcessor>(); IDictionary <string, IProcessor> processors = new Dictionary <string, IProcessor>(); IDictionary <string, IStateStore> stateStores = new Dictionary <string, IStateStore>(); IList <string> repartitionTopics = new List <string>(); foreach (var nodeFactory in nodeFactories.Values) { if (nodeGroup == null || nodeGroup.Contains(nodeFactory.Name)) { var processor = nodeFactory.Build(); processors.Add(nodeFactory.Name, processor); if (nodeFactory is IProcessorNodeFactory) { BuildProcessorNode(processors, stateStores, nodeFactory as IProcessorNodeFactory, processor, taskId); } else if (nodeFactory is ISourceNodeFactory) { BuildSourceNode(sources, repartitionTopics, nodeFactory as ISourceNodeFactory, processor); } else if (nodeFactory is ISinkNodeFactory) { BuildSinkNode(processors, repartitionTopics, sinks, nodeFactory as ISinkNodeFactory, processor); } else { throw new TopologyException($"Unknown definition class: {nodeFactory.GetType().Name}"); } } } foreach (var sourceProcessor in sources.Values) { rootProcessor.AddNextProcessor(sourceProcessor); } var storesToChangelog = new Dictionary <string, string>( storesToTopics .Where(e => stateStores.ContainsKey(e.Key) || GlobalStateStores.ContainsKey(e.Key))); return(new ProcessorTopology( rootProcessor, sources, sinks, processors, stateStores, GlobalStateStores, storesToChangelog, repartitionTopics.Distinct().ToList())); }
public void TestParse() { var expectedTableProcessor = new TableProcessor(); var expectedIfProcessor = new IfProcessor(); expectedIfProcessor.AddProcessor(new TextProcessor()); expectedTableProcessor.AddProcessor(new TextProcessor()); expectedTableProcessor.AddProcessor(expectedIfProcessor); var expectedRepeaterProcessor = new RepeaterProcessor(); expectedRepeaterProcessor.AddProcessor(new TextProcessor()); var expectedRootProcessor = new RootProcessor(); expectedRootProcessor.AddProcessor(expectedTableProcessor); expectedRootProcessor.AddProcessor(expectedRepeaterProcessor); var actualRootProcessor = new RootProcessor(); generalParser.Parse(actualRootProcessor, this.doc.Root); Assert.AreEqual(2, actualRootProcessor.Processors.Count); var actualInnerRootProcessors = new List <ITagProcessor>(actualRootProcessor.Processors); Assert.AreEqual(typeof(TableProcessor), actualInnerRootProcessors[0].GetType()); Assert.AreEqual(typeof(RepeaterProcessor), actualInnerRootProcessors[1].GetType()); var actualTableProcessor = actualInnerRootProcessors[0]; Assert.AreEqual(2, actualTableProcessor.Processors.Count); var actualInnerTableProcessors = new List <ITagProcessor>(actualTableProcessor.Processors); Assert.AreEqual(typeof(TextProcessor), actualInnerTableProcessors[0].GetType()); Assert.AreEqual(typeof(IfProcessor), actualInnerTableProcessors[1].GetType()); Assert.AreEqual(0, actualInnerTableProcessors[0].Processors.Count); var actualIfProcessor = actualInnerTableProcessors[1]; Assert.AreEqual(1, actualIfProcessor.Processors.Count); var actualInnerIfProcessors = new List <ITagProcessor>(actualIfProcessor.Processors); Assert.AreEqual(typeof(TextProcessor), actualInnerIfProcessors[0].GetType()); var actualRepeaterProcessor = actualInnerRootProcessors[1]; Assert.AreEqual(1, actualRepeaterProcessor.Processors.Count); var actualInnerRepeaterProcessors = new List <ITagProcessor>(actualRepeaterProcessor.Processors); Assert.AreEqual(typeof(TextProcessor), actualInnerRepeaterProcessors[0].GetType()); Assert.AreEqual(0, actualInnerRepeaterProcessors[0].Processors.Count); }
public void TestParseNedted() { var parser = new TableParser(); var rootProcessor = new RootProcessor(); var tableElement = this.nestedDocumentRoot.Element(WordMl.TableName); parser.Parse(rootProcessor, this.nestedDocumentRoot.Elements(WordMl.SdtName).First()); var tableProcessor = rootProcessor.Processors.First(); var tag = ((TableProcessor)tableProcessor).TableTag; Assert.AreEqual(4, tag.DynamicRow); Assert.AreEqual("//test/certificates", tag.TagTable.Value); Assert.AreEqual(tableElement, tag.Table); this.CheckTagElements(tag); Assert.AreEqual(2, tableProcessor.Processors.Count); Assert.IsTrue(tableProcessor.Processors.All(p => p is TextProcessor)); }
public void TestParseCplx() { using (var docStream = AssemblyResourceHelper.GetResourceStream(this, "document_dontworking_if.xml")) { var doc = XDocument.Load(docStream); var documentRoot = doc.Root.Element(WordMl.WordMlNamespace + "body"); var parser = new IfParser(); var startElement = TraverseUtils.TagElement(documentRoot, "If"); var endElement = TraverseUtils.TagElement(documentRoot, "EndIf"); var parentProcessor = new RootProcessor(); parser.Parse(parentProcessor, startElement); var ifProcessor = (IfProcessor)parentProcessor.Processors.First(); var ifTag = ifProcessor.Tag; const string IfCondition = "//test/condition"; Assert.IsNotNull(ifProcessor); //Assert.IsTrue(IfCondition.Equals(ifTag.Conidition)); CollectionAssert.AreEqual(Encoding.UTF8.GetBytes(IfCondition), Encoding.UTF8.GetBytes(ifTag.Conidition)); Assert.AreEqual(startElement, ifTag.StartIf); Assert.AreEqual(endElement, ifTag.EndIf); var elements = ifTag.IfContent.ToList(); Assert.AreEqual(1, elements.Count()); /* * Assert.IsTrue(elements.Take(6).All(e => e.Name.Equals(WordMl.TextRunName))); * Assert.IsTrue(elements.Skip(6).Take(1).All(e => e.Name.Equals(WordMl.ParagraphName))); * Assert.IsTrue(elements.Skip(7).Take(1).All(e => e.Name.Equals(WordMl.ParagraphPropertiesName))); * Assert.IsTrue(elements.Skip(8).Take(1).All(e => e.Name.Equals(WordMl.BookmarkStartName))); * Assert.IsTrue(elements.Skip(9).Take(4).All(e => e.Name.Equals(WordMl.TextRunName))); * Assert.IsTrue(elements.Skip(13).Take(1).All(e => e.Name.Equals(WordMl.ProofingErrorAnchorName))); * Assert.IsTrue(elements.Skip(14).Take(1).All(e => e.Name.Equals(WordMl.TextRunName))); * Assert.IsTrue(elements.Skip(15).Take(1).All(e => e.Name.Equals(WordMl.ProofingErrorAnchorName))); * Assert.IsTrue(elements.Skip(16).Take(1).All(e => e.Name.Equals(WordMl.TextRunName))); */ Assert.AreEqual(startElement, ifTag.StartIf); Assert.AreEqual(endElement, ifTag.EndIf); } }
private ProcessorTopology BuildTopology(ISet <string> nodeGroup, TaskId taskId) { IProcessor rootProcessor = new RootProcessor(); IDictionary <string, IProcessor> sources = new Dictionary <string, IProcessor>(); IDictionary <string, IProcessor> sinks = new Dictionary <string, IProcessor>(); IDictionary <string, IProcessor> processors = new Dictionary <string, IProcessor>(); IDictionary <string, IStateStore> stateStores = new Dictionary <string, IStateStore>(); foreach (var nodeFactory in nodeFactories.Values) { if (nodeGroup == null || nodeGroup.Contains(nodeFactory.Name)) { var processor = nodeFactory.Build(); processors.Add(nodeFactory.Name, processor); switch (nodeFactory) { case IProcessorNodeFactory factory: BuildProcessorNode(processors, stateStores, factory, processor, taskId); break; case ISourceNodeFactory sourceNodeFactory: BuildSourceNode(sources, sourceNodeFactory, processor); break; case ISinkNodeFactory sinkNodeFactory: BuildSinkNode(processors, sinks, sinkNodeFactory, processor); break; default: throw new TopologyException($"Unknown definition class: {nodeFactory.GetType().Name}"); } } } foreach (var sourceProcessor in sources.Values) { rootProcessor.AddNextProcessor(sourceProcessor); } return(new ProcessorTopology(rootProcessor, sources, sinks, processors, stateStores, GlobalStateStores, storesToTopics)); }
public void TestParse() { using (var docStream = AssemblyResourceHelper.GetResourceStream(this, "IfParserTest.xml")) { var doc = XDocument.Load(docStream); var documentRoot = doc.Root.Element(WordMl.WordMlNamespace + "body"); var parser = new IfParser(); var startElement = TraverseUtils.TagElement(documentRoot, "If"); var endElement = TraverseUtils.TagElement(documentRoot, "EndIf"); var parentProcessor = new RootProcessor(); parser.Parse(parentProcessor, startElement); var ifProcessor = (IfProcessor)parentProcessor.Processors.First(); var ifTag = ifProcessor.Tag; const string IfCondition = "//test/condition"; Assert.IsNotNull(ifProcessor); Assert.AreEqual(IfCondition, ifTag.Conidition); var content = ifTag.IfContent.ToList(); Assert.AreEqual(1, content.Count); Assert.AreEqual(WordMl.ParagraphName, content[0].Name); var paragraphChildren = content[0].Elements().ToList(); Assert.AreEqual(6, paragraphChildren.Count()); Assert.AreEqual(WordMl.ParagraphPropertiesName, paragraphChildren[0].Name); Assert.AreEqual(WordMl.ProofingErrorAnchorName, paragraphChildren[1].Name); Assert.AreEqual(WordMl.TextRunName, paragraphChildren[2].Name); Assert.AreEqual("Hello", paragraphChildren[2].Value); Assert.AreEqual(WordMl.ProofingErrorAnchorName, paragraphChildren[3].Name); Assert.AreEqual(WordMl.TextRunName, paragraphChildren[4].Name); Assert.AreEqual(", World!", paragraphChildren[4].Value); Assert.AreEqual(WordMl.SdtName, paragraphChildren[5].Name); Assert.IsTrue(paragraphChildren[5].IsTag("text")); Assert.AreEqual(startElement, ifTag.StartIf); Assert.AreEqual(endElement, ifTag.EndIf); var textProcessor = (TextProcessor)ifProcessor.Processors.FirstOrDefault(); Assert.IsNotNull(textProcessor); Assert.IsNotNull(textProcessor.TextTag); Assert.AreEqual("//test/text", textProcessor.TextTag.Expression); } }
public void TestParse() { using (var docStream = AssemblyResourceHelper.GetResourceStream(this, "IfParserTest.xml")) { var doc = XDocument.Load(docStream); var documentRoot = doc.Root.Element(WordMl.WordMlNamespace + "body"); var parser = new IfParser(); var startElement = TraverseUtils.TagElement(documentRoot, "If"); var endElement = TraverseUtils.TagElement(documentRoot, "EndIf"); var parentProcessor = new RootProcessor(); parser.Parse(parentProcessor, startElement); var ifProcessor = (IfProcessor) parentProcessor.Processors.First(); var ifTag = ifProcessor.Tag; const string IfCondition = "//test/condition"; Assert.IsNotNull(ifProcessor); Assert.AreEqual(IfCondition, ifTag.Conidition); var content = ifTag.IfContent.ToList(); Assert.AreEqual(1, content.Count); Assert.AreEqual(WordMl.ParagraphName, content[0].Name); var paragraphChildren = content[0].Elements().ToList(); Assert.AreEqual(6, paragraphChildren.Count()); Assert.AreEqual(WordMl.ParagraphPropertiesName, paragraphChildren[0].Name); Assert.AreEqual(WordMl.ProofingErrorAnchorName, paragraphChildren[1].Name); Assert.AreEqual(WordMl.TextRunName, paragraphChildren[2].Name); Assert.AreEqual("Hello", paragraphChildren[2].Value); Assert.AreEqual(WordMl.ProofingErrorAnchorName, paragraphChildren[3].Name); Assert.AreEqual(WordMl.TextRunName, paragraphChildren[4].Name); Assert.AreEqual(", World!", paragraphChildren[4].Value); Assert.AreEqual(WordMl.SdtName, paragraphChildren[5].Name); Assert.IsTrue(paragraphChildren[5].IsTag("text")); Assert.AreEqual(startElement, ifTag.StartIf); Assert.AreEqual(endElement, ifTag.EndIf); var textProcessor = (TextProcessor) ifProcessor.Processors.FirstOrDefault(); Assert.IsNotNull(textProcessor); Assert.IsNotNull(textProcessor.TextTag); Assert.AreEqual("//test/text", textProcessor.TextTag.Expression); } }
public void TestParse() { var expectedTableProcessor = new TableProcessor(); var expectedIfProcessor = new IfProcessor(); expectedIfProcessor.AddProcessor(new TextProcessor()); expectedTableProcessor.AddProcessor(new TextProcessor()); expectedTableProcessor.AddProcessor(expectedIfProcessor); var expectedRepeaterProcessor = new RepeaterProcessor(); expectedRepeaterProcessor.AddProcessor(new TextProcessor()); var expectedRootProcessor = new RootProcessor(); expectedRootProcessor.AddProcessor(expectedTableProcessor); expectedRootProcessor.AddProcessor(expectedRepeaterProcessor); var actualRootProcessor = new RootProcessor(); generalParser.Parse(actualRootProcessor, this.doc.Root); Assert.AreEqual(2, actualRootProcessor.Processors.Count); var actualInnerRootProcessors = new List<ITagProcessor>(actualRootProcessor.Processors); Assert.AreEqual(typeof(TableProcessor), actualInnerRootProcessors[0].GetType()); Assert.AreEqual(typeof(RepeaterProcessor), actualInnerRootProcessors[1].GetType()); var actualTableProcessor = actualInnerRootProcessors[0]; Assert.AreEqual(2, actualTableProcessor.Processors.Count); var actualInnerTableProcessors = new List<ITagProcessor>(actualTableProcessor.Processors); Assert.AreEqual(typeof(TextProcessor), actualInnerTableProcessors[0].GetType()); Assert.AreEqual(typeof(IfProcessor), actualInnerTableProcessors[1].GetType()); Assert.AreEqual(0, actualInnerTableProcessors[0].Processors.Count); var actualIfProcessor = actualInnerTableProcessors[1]; Assert.AreEqual(1, actualIfProcessor.Processors.Count); var actualInnerIfProcessors = new List<ITagProcessor>(actualIfProcessor.Processors); Assert.AreEqual(typeof(TextProcessor), actualInnerIfProcessors[0].GetType()); var actualRepeaterProcessor = actualInnerRootProcessors[1]; Assert.AreEqual(1,actualRepeaterProcessor.Processors.Count); var actualInnerRepeaterProcessors = new List<ITagProcessor>(actualRepeaterProcessor.Processors); Assert.AreEqual(typeof(TextProcessor), actualInnerRepeaterProcessors[0].GetType()); Assert.AreEqual(0, actualInnerRepeaterProcessors[0].Processors.Count); }
public void TestParseComplex() { using (var docStream = AssemblyResourceHelper.GetResourceStream(this, "ComplexIf.xml")) { var doc = XDocument.Load(docStream); var documentRoot = doc.Root.Element(WordMl.WordMlNamespace + "body"); var parser = new IfParser(); var startElement = TraverseUtils.TagElement(documentRoot, "If"); var endElement = TraverseUtils.TagElement(documentRoot, "EndIf"); var parentProcessor = new RootProcessor(); parser.Parse(parentProcessor, startElement); var ifProcessor = (IfProcessor) parentProcessor.Processors.First(); var ifTag = ifProcessor.Tag; const string IfCondition = "//test/condition"; Assert.IsNotNull(ifProcessor); Assert.AreEqual(IfCondition, ifTag.Conidition); Assert.AreEqual(startElement, ifTag.StartIf); Assert.AreEqual(endElement, ifTag.EndIf); var elements = ifTag.IfContent.ToList(); Assert.AreEqual(17, elements.Count()); Assert.IsTrue(elements.Take(6).All(e => e.Name.Equals(WordMl.TextRunName))); Assert.IsTrue(elements.Skip(6).Take(1).All(e => e.Name.Equals(WordMl.ParagraphName))); Assert.IsTrue(elements.Skip(7).Take(1).All(e => e.Name.Equals(WordMl.ParagraphPropertiesName))); Assert.IsTrue(elements.Skip(8).Take(1).All(e => e.Name.Equals(WordMl.BookmarkStartName))); Assert.IsTrue(elements.Skip(9).Take(4).All(e => e.Name.Equals(WordMl.TextRunName))); Assert.IsTrue(elements.Skip(13).Take(1).All(e => e.Name.Equals(WordMl.ProofingErrorAnchorName))); Assert.IsTrue(elements.Skip(14).Take(1).All(e => e.Name.Equals(WordMl.TextRunName))); Assert.IsTrue(elements.Skip(15).Take(1).All(e => e.Name.Equals(WordMl.ProofingErrorAnchorName))); Assert.IsTrue(elements.Skip(16).Take(1).All(e => e.Name.Equals(WordMl.TextRunName))); Assert.AreEqual(startElement, ifTag.StartIf); Assert.AreEqual(endElement, ifTag.EndIf); } }
public void TestParseNested() { var parser = new RepeaterParser(); var rootProcessor = new RootProcessor(); parser.Parse(rootProcessor, this.nestedDocumentRoot.Descendants(WordMl.SdtName).First()); var repeaterProcessor = rootProcessor.Processors.First(); var result = ((RepeaterProcessor)repeaterProcessor).RepeaterTag; var repeaterElements = TraverseUtils.ElementsBetween(result.StartRepeater, result.EndRepeater) .Select(result.MakeElementCallback).ToList(); Assert.AreEqual(2, repeaterElements.Count); var textTag = repeaterElements.First(); Assert.IsTrue(textTag.XElement.IsSdt()); Assert.IsTrue(textTag.XElement.IsTag("Text")); var repeaterContent = repeaterElements[1].Elements.ToList(); Assert.AreEqual(10, repeaterContent.Count); var textSdt = repeaterContent[3]; Assert.IsNull(textSdt.Expression); Assert.IsTrue(textSdt.XElement.IsSdt()); Assert.IsTrue(textSdt.XElement.IsTag("Text")); Assert.AreEqual("./Subject", repeaterContent[4].Expression); Assert.AreEqual(true, repeaterContent[6].IsIndex); Assert.AreEqual("./ExpireDate", repeaterContent[8].Expression); Assert.AreEqual("//test/certificates", result.Source); Assert.IsTrue(repeaterProcessor.Processors.All(p => p is TextProcessor)); Assert.AreEqual(2, repeaterProcessor.Processors.Count); }