/// <summary> /// Quick-access method to render a given event in the JSON format. /// <para/> /// Use the #getJSONRenderer 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="title">the JSON root title</param> /// <param name="theEvent">the event to render</param> /// <param name="options">are JSON rendering options</param> /// <returns> /// JSON formatted text /// </returns> public String RenderJSON(String title, EventBean theEvent, JSONRenderingOptions options) { if (theEvent == null) { return(null); } return(GetJSONRenderer(theEvent.EventType, options).Render(title, theEvent)); }
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> /// Returns a render for the JSON 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>JSON format renderer</returns> public JSONEventRenderer GetJSONRenderer( EventType eventType, JSONRenderingOptions options) { if (eventType is JsonEventType) { return JSONEventRendererJsonEventType.INSTANCE; } if (options == null) { options = new JSONRenderingOptions(); } return new JSONRendererImpl(eventType, options); }
/// <summary>Ctor. </summary> /// <param name="eventType">type of Event(s)</param> /// <param name="options">rendering options</param> public JSONRendererImpl(EventType eventType, JSONRenderingOptions options) { EventPropertyRenderer propertyRenderer = null; EventPropertyRendererContext propertyRendererContext = null; if (options.Renderer != null) { propertyRenderer = options.Renderer; propertyRendererContext = new EventPropertyRendererContext(eventType, true); } _rendererOptions = new RendererMetaOptions(options.PreventLooping, false, propertyRenderer, propertyRendererContext); _meta = new RendererMeta(eventType, new Stack<EventTypePropertyPair>(), _rendererOptions); }
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> /// Returns a render for the JSON 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> /// JSON format renderer /// </returns> public JSONEventRenderer GetJSONRenderer(EventType eventType, JSONRenderingOptions options) { return(new JSONRendererImpl(eventType, options)); }
public static void SetJsonOptions(JSONRenderingOptions jsonOptions) { RenderingOptions.JsonOptions = jsonOptions; }