private void RunAssertion(EPServiceProvider epService,
                                  string typename,
                                  FunctionSendEvent send,
                                  object underlying)
        {
            RunAssertionTypeValidProp(epService, typename, underlying);
            RunAssertionTypeInvalidProp(epService, typename);

            string stmtText = "select * from " + typename;

            EPStatement stmt     = epService.EPAdministrator.CreateEPL(stmtText);
            var         listener = new SupportUpdateListener();

            stmt.Events += listener.Update;

            send.Invoke(epService, underlying);
            EventBean @event = listener.AssertOneGetNewAndReset();

            EventPropertyGetterMapped mappedGetter = @event.EventType.GetGetterMapped("mapped");

            Assert.AreEqual("v1", mappedGetter.Get(@event, "k1"));

            EventPropertyGetterIndexed indexedGetter = @event.EventType.GetGetterIndexed("indexed");

            Assert.AreEqual("v2", indexedGetter.Get(@event, 1));

            RunAssertionEventInvalidProp(@event);
            SupportEventTypeAssertionUtil.AssertConsistency(@event);

            stmt.Dispose();
        }
Example #2
0
        public object Evaluate(EvaluateParams evaluateParams)
        {
            var key             = _paramEval.Evaluate(evaluateParams).AsInt();
            var eventInQuestion = evaluateParams.EventsPerStream[_streamId];

            if (eventInQuestion == null)
            {
                return(null);
            }
            return(_indexedGetter.Get(eventInQuestion, key));
        }
Example #3
0
        public override object Evaluate(EvaluateParams evaluateParams)
        {
            var eventInQuestion = evaluateParams.EventsPerStream[base.StreamNum];

            if (eventInQuestion == null)
            {
                return(null);
            }
            var index = base.ExprEvaluator.Evaluate(evaluateParams);

            if (index == null || !index.IsInt())
            {
                Log.Warn(base.GetWarningText("integer", index));
                return(null);
            }
            return(_indexedGetter.Get(eventInQuestion, index.AsInt()));
        }
Example #4
0
        public EventPropertyGetterIndexed GetGetterIndexed(String indexedProperty)
        {
            EventPropertyGetterIndexed undIndexed = _underlyingEventType.GetGetterIndexed(indexedProperty);

            if (undIndexed != null)
            {
                return(new ProxyEventPropertyGetterIndexed
                {
                    ProcGet = (theEvent, index) =>
                    {
                        if (!(theEvent is DecoratingEventBean))
                        {
                            throw new PropertyAccessException("Mismatched property getter to EventBean type");
                        }
                        var wrapperEvent = (DecoratingEventBean)theEvent;
                        var wrappedEvent = wrapperEvent.UnderlyingEvent;
                        return wrappedEvent == null ? null : undIndexed.Get(wrappedEvent, index);
                    }
                });
            }
            EventPropertyGetterIndexed decoIndexed = _underlyingMapType.GetGetterIndexed(indexedProperty);

            if (decoIndexed != null)
            {
                return(new ProxyEventPropertyGetterIndexed
                {
                    ProcGet = (theEvent, index) =>
                    {
                        if (!(theEvent is DecoratingEventBean))
                        {
                            throw new PropertyAccessException("Mismatched property getter to EventBean type");
                        }
                        var wrapperEvent = (DecoratingEventBean)theEvent;
                        var map = wrapperEvent.DecoratingProperties;
                        return decoIndexed.Get(_eventAdapterService.AdapterForTypedMap(map, _underlyingMapType), index);
                    }
                });
            }
            return(null);
        }