public void TestObjectMap() { _epService.EPAdministrator.Configuration.AddEventType( "SupportBeanRendererOne", typeof(SupportBeanRendererOne)); _epService.EPAdministrator.Configuration.AddEventType( "SupportBeanRendererThree", typeof(SupportBeanRendererThree)); var beanOne = new SupportBeanRendererOne(); IDictionary <String, Object> otherMap = new LinkedHashMap <String, Object>(); otherMap["abc"] = "def"; otherMap["def"] = 123; otherMap["efg"] = null; otherMap.Put(null, 1234); beanOne.StringObjectMap = otherMap; EPStatement stmt = _epService.EPAdministrator.CreateEPL( "select * from SupportBeanRendererOne"); _epService.EPRuntime.SendEvent(beanOne); String json = _epService.EPRuntime.EventRenderer.RenderJSON( "MyEvent", stmt.First()); String expectedJson = "{ \"MyEvent\": { \"StringObjectMap\": { \"abc\": \"def\", \"def\": 123, \"efg\": null } } }"; Assert.AreEqual(RemoveNewline(expectedJson), RemoveNewline(json)); String xmlOne = _epService.EPRuntime.EventRenderer.RenderXML( "MyEvent", stmt.First()); String expected = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + "<MyEvent>\n" + " <StringObjectMap>\n" + " <abc>def<abc>\n" + " <def>123<def>\n" + " <efg><efg>\n" + " </StringObjectMap>\n" + "</MyEvent>"; Assert.AreEqual(RemoveNewline(expected), RemoveNewline(xmlOne)); var opt = new XMLRenderingOptions(); opt.IsDefaultAsAttribute = true; String xmlTwo = _epService.EPRuntime.EventRenderer.RenderXML( "MyEvent", stmt.First(), opt); String expectedTwo = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + "<MyEvent>\n" + " <StringObjectMap abc=\"def\" def=\"123\"/>\n" + "</MyEvent>"; Assert.AreEqual(RemoveNewline(expectedTwo), RemoveNewline(xmlTwo)); // try the same Map only undeclared var beanThree = new SupportBeanRendererThree(); beanThree.StringObjectMap = otherMap; stmt = _epService.EPAdministrator.CreateEPL( "select * from SupportBeanRendererThree"); _epService.EPRuntime.SendEvent(beanThree); json = _epService.EPRuntime.EventRenderer.RenderJSON("MyEvent", stmt.First()); Assert.AreEqual(RemoveNewline(expectedJson), RemoveNewline(json)); }
public void Run(RegressionEnvironment env) { env.CompileDeploy("@Name('s0') select * from MyRendererEvent"); env.SendEventBean( new MyRendererEvent( "id1", new[] {new object[] {1, "x"}, new object[] {2, "y"}})); MyRenderer.Contexts.Clear(); var myEventEnum = env.GetEnumerator("s0"); Assert.That(myEventEnum.MoveNext(), Is.True); var myEvent = myEventEnum.Current; Assert.That(myEvent, Is.Not.Null); var jsonOptions = new JSONRenderingOptions(); jsonOptions.Renderer = new MyRenderer(); var json = env.Runtime.RenderEventService.RenderJSON( "MyEvent", myEvent, jsonOptions); Assert.AreEqual(4, MyRenderer.Contexts.Count); var contexts = MyRenderer.Contexts; var context = contexts.FirstOrDefault(c => c.EventType.Name == typeof(MyRendererEvent).Name && c.IndexedPropertyIndex == 1); Assert.That(context, Is.Not.Null); Assert.That(context.DefaultRenderer, Is.Not.Null); Assert.That(context.PropertyName, Is.EqualTo("SomeProperties")); var expectedJson = "{ \"MyEvent\": { \"Id\": \"id1\", \"MappedProperty\": { \"key\": \"value\" }, \"SomeProperties\": [\"index#0=1;index#1=x\", \"index#0=2;index#1=y\"] } }"; Assert.AreEqual(RemoveNewline(expectedJson), RemoveNewline(json)); MyRenderer.Contexts.Clear(); var xmlOptions = new XMLRenderingOptions(); xmlOptions.Renderer = new MyRenderer(); var xmlOne = env.Runtime.RenderEventService.RenderXML( "MyEvent", env.GetEnumerator("s0").Advance(), xmlOptions); var expected = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + " <MyEvent>" + " <Id>id1</Id>" + " <SomeProperties>index#0=1;index#1=x</SomeProperties>" + " <SomeProperties>index#0=2;index#1=y</SomeProperties>" + " <MappedProperty> <key>value</key> </MappedProperty>" + " </MyEvent>"; Assert.AreEqual(4, MyRenderer.Contexts.Count); Assert.AreEqual(RemoveNewline(expected), RemoveNewline(xmlOne)); env.UndeployAll(); }
static RenderingOptions() { XmlOptions = new XMLRenderingOptions(); XmlOptions.PreventLooping = true; XmlOptions.Renderer = ConsoleOpEventPropertyRenderer.INSTANCE; JsonOptions = new JSONRenderingOptions(); JsonOptions.PreventLooping = true; JsonOptions.Renderer = ConsoleOpEventPropertyRenderer.INSTANCE; }
/// <summary> /// Quick-access method to render a given event in the XML format. /// <para /> /// Use the #getXMLRenderer to obtain a renderer instance that allows repeated rendering of the same type of event. /// For performance reasons obtaining a dedicated renderer instance is the preferred method compared to repeated /// rendering via this method. /// </summary> /// <param name="rootElementName">the root element name that may also include namespace information</param> /// <param name="theEvent">the event to render</param> /// <param name="options">are XML rendering options</param> /// <returns>XML formatted text</returns> public string RenderXML( string rootElementName, EventBean theEvent, XMLRenderingOptions options) { if (theEvent == null) { return null; } return GetXMLRenderer(theEvent.EventType, options).Render(rootElementName, theEvent); }
private void RunAssertionPOJOMap(EPServiceProvider epService) { epService.EPAdministrator.Configuration.AddEventType( "SupportBeanRendererOne", typeof(SupportBeanRendererOne)); epService.EPAdministrator.Configuration.AddEventType( "SupportBeanRendererThree", typeof(SupportBeanRendererThree)); var beanOne = new SupportBeanRendererOne(); var otherMap = new LinkedHashMap<string, object>(); otherMap.Put("abc", "def"); otherMap.Put("def", 123); otherMap.Put("efg", null); otherMap.Put(null, 1234); beanOne.StringObjectMap = otherMap; var stmt = epService.EPAdministrator.CreateEPL("select * from SupportBeanRendererOne"); epService.EPRuntime.SendEvent(beanOne); var json = epService.EPRuntime.EventRenderer.RenderJSON("MyEvent", stmt.First()); var expectedJson = "{ \"MyEvent\": { \"StringObjectMap\": { \"abc\": \"def\", \"def\": 123, \"efg\": null } } }"; Assert.AreEqual(RemoveNewline(expectedJson), RemoveNewline(json)); var xmlOne = epService.EPRuntime.EventRenderer.RenderXML("MyEvent", stmt.First()); var expected = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + "<MyEvent>\n" + " <StringObjectMap>\n" + " <abc>def</abc>\n" + " <def>123</def>\n" + " <efg></efg>\n" + " </StringObjectMap>\n" + "</MyEvent>"; Assert.AreEqual(RemoveNewline(expected), RemoveNewline(xmlOne)); var opt = new XMLRenderingOptions(); opt.IsDefaultAsAttribute = true; var xmlTwo = epService.EPRuntime.EventRenderer.RenderXML("MyEvent", stmt.First(), opt); var expectedTwo = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + "<MyEvent>\n" + " <StringObjectMap abc=\"def\" def=\"123\"/>\n" + "</MyEvent>"; Assert.AreEqual(RemoveNewline(expectedTwo), RemoveNewline(xmlTwo)); // try the same Map only undeclared var beanThree = new SupportBeanRendererThree(); beanThree.StringObjectMap = otherMap; stmt = epService.EPAdministrator.CreateEPL("select * from SupportBeanRendererThree"); epService.EPRuntime.SendEvent(beanThree); json = epService.EPRuntime.EventRenderer.RenderJSON("MyEvent", stmt.First()); Assert.AreEqual(RemoveNewline(expectedJson), RemoveNewline(json)); stmt.Dispose(); }
public void Run(RegressionEnvironment env) { var beanOne = new SupportBeanRendererOne(); IDictionary<string, object> otherMap = new LinkedHashMap<string, object>(); otherMap.Put("abc", "def"); otherMap.Put("def", 123); otherMap.Put("efg", null); otherMap.Put(null, 1234); beanOne.StringObjectMap = otherMap; env.CompileDeploy("@Name('s0') select * from SupportBeanRendererOne"); env.SendEventBean(beanOne); var json = env.Runtime.RenderEventService.RenderJSON("MyEvent", env.GetEnumerator("s0").Advance()); var expectedJson = "{ \"MyEvent\": { \"StringObjectMap\": { \"abc\": \"def\", \"def\": 123, \"efg\": null } } }"; Assert.AreEqual(RemoveNewline(expectedJson), RemoveNewline(json)); var xmlOne = env.Runtime.RenderEventService.RenderXML("MyEvent", env.GetEnumerator("s0").Advance()); var expected = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + "<MyEvent>\n" + " <StringObjectMap>\n" + " <abc>def</abc>\n" + " <def>123</def>\n" + " <efg></efg>\n" + " </StringObjectMap>\n" + "</MyEvent>"; Assert.AreEqual(RemoveNewline(expected), RemoveNewline(xmlOne)); var opt = new XMLRenderingOptions(); opt.IsDefaultAsAttribute = true; var xmlTwo = env.Runtime.RenderEventService.RenderXML( "MyEvent", env.GetEnumerator("s0").Advance(), opt); var expectedTwo = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + "<MyEvent>\n" + " <StringObjectMap abc=\"def\" def=\"123\"/>\n" + "</MyEvent>"; Assert.AreEqual(RemoveNewline(expectedTwo), RemoveNewline(xmlTwo)); env.UndeployModuleContaining("s0"); // try the same Map only undeclared var beanThree = new SupportBeanRendererThree(); beanThree.StringObjectMap = otherMap; env.CompileDeploy("@Name('s0') select * from SupportBeanRendererThree"); env.SendEventBean(beanThree); json = env.Runtime.RenderEventService.RenderJSON("MyEvent", env.GetEnumerator("s0").Advance()); Assert.AreEqual(RemoveNewline(expectedJson), RemoveNewline(json)); env.UndeployAll(); }
/// <summary> /// Ctor. /// </summary> /// <param name="eventType">type of event to render</param> /// <param name="options">rendering options</param> public XMLRendererImpl(EventType eventType, XMLRenderingOptions options) { EventPropertyRenderer propertyRenderer = null; EventPropertyRendererContext propertyRendererContext = null; if (options.Renderer != null) { propertyRenderer = options.Renderer; propertyRendererContext = new EventPropertyRendererContext(eventType, false); } _rendererMetaOptions = new RendererMetaOptions(options.PreventLooping, true, propertyRenderer, propertyRendererContext); _meta = new RendererMeta(eventType, new Stack <EventTypePropertyPair>(), _rendererMetaOptions); _options = options; }
/// <summary> /// Converts the event bean into a contract event. /// </summary> /// <param name="eventBean">The event bean.</param> /// <returns></returns> public static XElement ToXElement(this EventBean eventBean) { if (eventBean.Underlying is XElement) { return((XElement)eventBean.Underlying); } var renderingOptions = new XMLRenderingOptions { IsDefaultAsAttribute = false, PreventLooping = true }; var elementRendererImpl = new XElementRendererImpl(eventBean.EventType, renderingOptions); return(elementRendererImpl.Render( "eventBean", eventBean)); }
/// <summary> /// Converts the event bean into a contract event. /// </summary> /// <param name="eventBean">The event bean.</param> /// <returns></returns> public static XElement ToXElement(this EventBean eventBean) { if (eventBean.Underlying is XElement) { return (XElement) eventBean.Underlying; } var renderingOptions = new XMLRenderingOptions(); renderingOptions.IsDefaultAsAttribute = false; renderingOptions.PreventLooping = true; var elementRendererImpl = new XElementRendererImpl(eventBean.EventType, renderingOptions); return elementRendererImpl.Render( "eventBean", eventBean); }
public void TestPropertyCustomRenderer() { _epService.EPAdministrator.Configuration.AddEventType( typeof(MyRendererEvent)); EPStatement stmt = _epService.EPAdministrator.CreateEPL( "select * from MyRendererEvent"); _epService.EPRuntime.SendEvent( new MyRendererEvent("id1", new Object[][] { new Object[] { 1, "x" }, new Object[] { 2, "y" } })); MyRenderer.Contexts.Clear(); var jsonOptions = new JSONRenderingOptions(); jsonOptions.Renderer = new MyRenderer(); String json = _epService.EPRuntime.EventRenderer.RenderJSON( "MyEvent", stmt.First(), jsonOptions); Assert.AreEqual(4, MyRenderer.Contexts.Count); List <EventPropertyRendererContext> contexts = MyRenderer.Contexts; EventPropertyRendererContext context = contexts[2]; Assert.NotNull(context.DefaultRenderer); Assert.AreEqual(1, (int)context.IndexedPropertyIndex); Assert.AreEqual(typeof(MyRendererEvent).Name, context.EventType.Name); Assert.AreEqual("SomeProperties", context.PropertyName); String expectedJson = "{ \"MyEvent\": { \"Id\": \"id1\", \"SomeProperties\": [\"index#0=1;index#1=x\", \"index#0=2;index#1=y\"], \"MappedProperty\": { \"key\": \"value\" } } }"; Assert.AreEqual(RemoveNewline(expectedJson), RemoveNewline(json)); MyRenderer.Contexts.Clear(); var xmlOptions = new XMLRenderingOptions(); xmlOptions.Renderer = new MyRenderer(); String xmlOne = _epService.EPRuntime.EventRenderer.RenderXML( "MyEvent", stmt.First(), xmlOptions); String expected = "<?xml version=\"1.0\" encoding=\"UTF-8\"?> <MyEvent> <Id>id1</Id> <SomeProperties>index#0=1;index#1=x</SomeProperties> <SomeProperties>index#0=2;index#1=y</SomeProperties> <MappedProperty> <key>value<key> </MappedProperty> </MyEvent>"; Assert.AreEqual(4, MyRenderer.Contexts.Count); Assert.AreEqual(RemoveNewline(expected), RemoveNewline(xmlOne)); }
private void RunAssertionPropertyCustomRenderer(EPServiceProvider epService) { epService.EPAdministrator.Configuration.AddEventType(typeof(MyRendererEvent)); var stmt = epService.EPAdministrator.CreateEPL("select * from MyRendererEvent"); epService.EPRuntime.SendEvent( new MyRendererEvent("id1", new[] {new object[] {1, "x"}, new object[] {2, "y"}})); MyRenderer.Contexts.Clear(); var jsonOptions = new JSONRenderingOptions(); jsonOptions.Renderer = new MyRenderer(); var json = epService.EPRuntime.EventRenderer.RenderJSON("MyEvent", stmt.First(), jsonOptions); Assert.AreEqual(4, MyRenderer.Contexts.Count); var contexts = MyRenderer.Contexts; var contextsIndexed = contexts .Where(c => c.PropertyName == "SomeProperties") .ToList(); Assert.That(contextsIndexed.Count, Is.Not.Zero); Assert.That(contextsIndexed.Count(c => c.IndexedPropertyIndex == 0), Is.EqualTo(1)); Assert.That(contextsIndexed.Count(c => c.IndexedPropertyIndex == 1), Is.EqualTo(1)); foreach (var context in contextsIndexed) { Assert.AreEqual(typeof(MyRendererEvent).Name, context.EventType.Name); } var expectedJson = "{ \"MyEvent\": { \"Id\": \"id1\", \"MappedProperty\": { \"key\": \"value\" }, \"SomeProperties\": [\"index#0=1;index#1=x\", \"index#0=2;index#1=y\"] } }"; Assert.AreEqual(RemoveNewline(expectedJson), RemoveNewline(json)); MyRenderer.Contexts.Clear(); var xmlOptions = new XMLRenderingOptions(); xmlOptions.Renderer = new MyRenderer(); var xmlOne = epService.EPRuntime.EventRenderer.RenderXML("MyEvent", stmt.First(), xmlOptions); var expected = "<?xml version=\"1.0\" encoding=\"UTF-8\"?> <MyEvent> <Id>id1</Id> <SomeProperties>index#0=1;index#1=x</SomeProperties> <SomeProperties>index#0=2;index#1=y</SomeProperties> <MappedProperty> <key>value</key> </MappedProperty> </MyEvent>"; Assert.AreEqual(4, MyRenderer.Contexts.Count); Assert.AreEqual(RemoveNewline(expected), RemoveNewline(xmlOne)); stmt.Dispose(); }
/// <summary> /// Quick-access method to render a given event in the XML format. /// <para/> /// Use the #getXMLRenderer to obtain a renderer instance that allows repeated /// rendering of the same type of event. For performance reasons obtaining a dedicated /// renderer instance is the preferred method compared to repeated rendering via this /// method. /// </summary> /// <param name="rootElementName">the root element name that may also include namespace information</param> /// <param name="theEvent">the event to render</param> /// <param name="options">are XML rendering options</param> /// <returns> /// XML formatted text /// </returns> public String RenderXML(String rootElementName, EventBean theEvent, XMLRenderingOptions options) { return(theEvent != null?GetXMLRenderer(theEvent.EventType, options).Render(rootElementName, theEvent) : null); }
/// <summary> /// Returns a render for the XML format, valid only for the given event type and its /// subtypes. /// </summary> /// <param name="eventType">to return renderer for</param> /// <param name="options">rendering options</param> /// <returns> /// XML format renderer /// </returns> public XMLEventRenderer GetXMLRenderer(EventType eventType, XMLRenderingOptions options) { return(new XMLRendererImpl(eventType, options)); }
public static void SetXmlOptions(XMLRenderingOptions xmlOptions) { RenderingOptions.XmlOptions = xmlOptions; }