Ejemplo n.º 1
0
        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));
        }
Ejemplo n.º 2
0
            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();
            }
Ejemplo n.º 3
0
        static RenderingOptions()
        {
            XmlOptions = new XMLRenderingOptions();
            XmlOptions.PreventLooping = true;
            XmlOptions.Renderer = ConsoleOpEventPropertyRenderer.INSTANCE;

            JsonOptions = new JSONRenderingOptions();
            JsonOptions.PreventLooping = true;
            JsonOptions.Renderer = ConsoleOpEventPropertyRenderer.INSTANCE;
        }
Ejemplo n.º 4
0
        /// <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);
        }
Ejemplo n.º 5
0
        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();
        }
Ejemplo n.º 6
0
            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();
            }
Ejemplo n.º 7
0
        /// <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;
        }
Ejemplo n.º 8
0
        /// <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));
        }
Ejemplo n.º 9
0
        /// <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);
        }
Ejemplo n.º 10
0
        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));
        }
Ejemplo n.º 11
0
        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();
        }
Ejemplo n.º 12
0
 /// <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);
 }
Ejemplo n.º 13
0
 /// <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));
 }
Ejemplo n.º 14
0
 public static void SetXmlOptions(XMLRenderingOptions xmlOptions)
 {
     RenderingOptions.XmlOptions = xmlOptions;
 }