Esempio n. 1
0
        public EventBean EvaluateGetEventBean(EventBean[] eventsPerStream, bool isNewData, ExprEvaluatorContext context)
        {
            EventBean eventInQuestion = eventsPerStream[_streamId];

            if (eventInQuestion == null)
            {
                return(null);
            }
            return((EventBean)_getter.GetFragment(eventInQuestion));
        }
        public EventBean EvaluateGetEventBean(EvaluateParams evaluateParams)
        {
            EventBean eventInQuestion = evaluateParams.EventsPerStream[_streamId];

            if (eventInQuestion == null)
            {
                return(null);
            }
            return((EventBean)_getter.GetFragment(eventInQuestion));
        }
Esempio n. 3
0
        private ICollection <EventBean> EvaluateInternal(EventBean eventInQuestion, ExprEvaluatorContext context)
        {
            if (!_disablePropertyExpressionEventCollCache)
            {
                var cacheEntry = context.ExpressionResultCacheService.GetPropertyColl(
                    _propertyNameCache, eventInQuestion);
                if (cacheEntry != null)
                {
                    return(cacheEntry.Result);
                }
            }

            var events = (EventBean[])_getter.GetFragment(eventInQuestion);
            ICollection <EventBean> coll = events ?? null;

            if (!_disablePropertyExpressionEventCollCache)
            {
                context.ExpressionResultCacheService.SavePropertyColl(_propertyNameCache, eventInQuestion, coll);
            }
            if (coll == null)
            {
                return(null);
            }

            return(coll);
        }
 private void AssertGetter(
     EventBean @event,
     EventPropertyGetter getter,
     string value)
 {
     Assert.IsTrue(getter.IsExistsProperty(@event));
     Assert.AreEqual(value, getter.Get(@event));
     Assert.IsNull(getter.GetFragment(@event));
 }
Esempio n. 5
0
 public Object Evaluate(EvaluateParams evaluateParams)
 {
     EventBean streamEvent = evaluateParams.EventsPerStream[_streamNum];
     if (streamEvent == null)
     {
         return null;
     }
     return _getter.GetFragment(streamEvent);
 }
 private void AssertGetter(
     EventBean @event,
     EventPropertyGetter getter,
     bool hasValue)
 {
     Assert.IsTrue(getter.IsExistsProperty(@event));
     Assert.AreEqual(hasValue, getter.Get(@event) != null);
     Assert.AreEqual(hasValue, getter.GetFragment(@event) != null);
 }
Esempio n. 7
0
 public Object GetFragment(string propertyExpression)
 {
     EventPropertyGetter getter = _eventType.GetGetter(propertyExpression);
     if (getter == null)
     {
         throw PropertyAccessException.NotAValidProperty(propertyExpression);
     }
     return getter.GetFragment(this);
 }
Esempio n. 8
0
        public Object GetFragment(String propertyExpression)
        {
            EventPropertyGetter getter = EventType.GetGetter(propertyExpression);

            if (getter == null)
            {
                throw new PropertyAccessException("Property named '" + propertyExpression + "' is not a valid property name for this type");
            }
            return(getter.GetFragment(this));
        }
        public object Evaluate(EvaluateParams evaluateParams)
        {
            var eventInQuestion = evaluateParams.EventsPerStream[_streamId];

            if (eventInQuestion == null)
            {
                return(null);
            }
            return(_getter.GetFragment(eventInQuestion));
        }
 private void AssertGetter(
     EventBean @event,
     EventPropertyGetter getter,
     bool exists,
     string value)
 {
     Assert.AreEqual(SupportJsonEventTypeUtil.IsBeanBackedJson(@event.EventType) || exists, getter.IsExistsProperty(@event));
     Assert.AreEqual(value, getter.Get(@event));
     Assert.IsNull(getter.GetFragment(@event));
 }
Esempio n. 11
0
        public Object GetFragment(String property)
        {
            EventPropertyGetter getter = eventType.GetGetter(property);

            if (getter != null)
            {
                return(getter.GetFragment(this));
            }
            return(null);
        }
        private void AssertGetter(
            EventBean @event,
            EventPropertyGetter getter,
            bool exists)
        {
            Assert.AreEqual(exists, getter.IsExistsProperty(@event));
            Assert.AreEqual(exists, getter.Get(@event) != null);
            var beanBacked = @event.EventType is BeanEventType || SupportJsonEventTypeUtil.IsBeanBackedJson(@event.EventType);

            Assert.AreEqual(beanBacked && exists, getter.GetFragment(@event) != null);
        }
        private ICollection <EventBean> EvaluateInternal(EventBean eventInQuestion, ExprEvaluatorContext context)
        {
            if (_disablePropertyExpressionEventCollCache)
            {
                var eventsX = (EventBean[])_getter.GetFragment(eventInQuestion);
                return((ICollection <EventBean>)eventsX);
            }

            var cache      = context.ExpressionResultCacheService.AllocateUnwrapProp;
            var cacheEntry = cache.GetPropertyColl(_propertyNameCache, eventInQuestion);

            if (cacheEntry != null)
            {
                return(cacheEntry.Result);
            }

            var events = (EventBean[])_getter.GetFragment(eventInQuestion);
            var coll   = (ICollection <EventBean>)events;

            cache.SavePropertyColl(_propertyNameCache, eventInQuestion, coll);
            return(coll);
        }
Esempio n. 14
0
            public object Evaluate(EvaluateParams evaluateParams)
            {
                if (InstrumentationHelper.ENABLED)
                {
                    InstrumentationHelper.Get().QExprTypeof();
                }
                var theEvent = evaluateParams.EventsPerStream[_streamId];

                if (theEvent == null)
                {
                    if (InstrumentationHelper.ENABLED)
                    {
                        InstrumentationHelper.Get().AExprTypeof(null);
                    }
                    return(null);
                }
                var fragment = _getter.GetFragment(theEvent);

                if (fragment == null)
                {
                    if (InstrumentationHelper.ENABLED)
                    {
                        InstrumentationHelper.Get().AExprTypeof(null);
                    }
                    return(null);
                }
                if (fragment is EventBean)
                {
                    var bean = ((EventBean)fragment);
                    if (InstrumentationHelper.ENABLED)
                    {
                        InstrumentationHelper.Get().AExprTypeof(bean.EventType.Name);
                    }
                    return(bean.EventType.Name);
                }
                if (fragment.GetType().IsArray)
                {
                    var type = _fragmentType + "[]";
                    if (InstrumentationHelper.ENABLED)
                    {
                        InstrumentationHelper.Get().AExprTypeof(type);
                    }
                    return(type);
                }
                if (InstrumentationHelper.ENABLED)
                {
                    InstrumentationHelper.Get().AExprTypeof(null);
                }
                return(null);
            }
Esempio n. 15
0
        public static Object GetArrayPropertyFragment(EventBean[] wrapper, int index, EventPropertyGetter nestedGetter)
        {
            if (wrapper == null)
            {
                return(null);
            }
            if (wrapper.Length <= index)
            {
                return(null);
            }
            var innerArrayEvent = wrapper[index];

            return(nestedGetter.GetFragment(innerArrayEvent));
        }
        public Object GetFragment(EventBean obj)
        {
            var asMap = BaseNestableEventUtil.CheckedCastUnderlyingMap(obj);

            // If the map does not contain the key, this is allowed and represented as null
            var eventBean = asMap.Get(_propertyMap) as EventBean;

            if (eventBean == null)
            {
                return(null);
            }

            // Object within the map
            return(_eventBeanEntryGetter.GetFragment(eventBean));
        }
Esempio n. 17
0
        public Object GetFragment(EventBean obj)
        {
            // If the map does not contain the key, this is allowed and represented as null
            Object value = BaseNestableEventUtil.CheckedCastUnderlyingObjectArray(obj)[_propertyIndex];

            if (value == null)
            {
                return(null);
            }

            // Object within the map
            var theEvent = (EventBean)value;

            return(_eventBeanEntryGetter.GetFragment(theEvent));
        }
        public object Evaluate(EvaluateParams evaluateParams)
        {
            var theEvent = evaluateParams.EventsPerStream[_streamId];

            if (theEvent == null)
            {
                return(null);
            }

            var @event = _getterFragment.GetFragment(theEvent);

            if (!(@event is EventBean))
            {
                return(null);
            }
            return(_getterTimestamp.Get((EventBean)@event));
        }
Esempio n. 19
0
        // No filter and with select clause
        public virtual ICollection <EventBean> EvaluateGetCollEvents(
            EventBean[] eventsPerStream,
            bool newData,
            ICollection <EventBean> matchingEvents,
            ExprEvaluatorContext context,
            ExprSubselectRowNode parent)
        {
            if (matchingEvents.Count == 0)
            {
                return(Collections.GetEmptyList <EventBean>());
            }

            // when selecting a single property in the select clause that provides a fragment
            if (parent.subselectMultirowType == null)
            {
                ICollection <EventBean> eventsX = new ArrayDeque <EventBean>(matchingEvents.Count);
                var eval = (ExprIdentNodeEvaluator)parent.SelectClauseEvaluator[0];
                EventPropertyGetter getter = eval.Getter;
                foreach (EventBean subselectEvent in matchingEvents)
                {
                    object fragment = getter.GetFragment(subselectEvent);
                    if (fragment == null)
                    {
                        continue;
                    }
                    eventsX.Add((EventBean)fragment);
                }
                return(eventsX);
            }

            // when selecting a combined output row that contains multiple fields
            ICollection <EventBean> events = new ArrayDeque <EventBean>(matchingEvents.Count);

            EventBean[] eventsPerStreamEval = EventBeanUtility.AllocatePerStreamShift(eventsPerStream);
            foreach (EventBean subselectEvent in matchingEvents)
            {
                eventsPerStreamEval[0] = subselectEvent;
                var       row    = parent.EvaluateRow(eventsPerStreamEval, true, context);
                EventBean @event = parent.subselectMultirowType.EventAdapterService.AdapterForTypedMap(
                    row, parent.subselectMultirowType.EventType);
                events.Add(@event);
            }
            return(events);
        }
Esempio n. 20
0
        public EventPropertyGetter GetGetter(String property)
        {
            EventPropertyGetter cachedGetter = _propertyGetterCache.Get(property);

            if (cachedGetter != null)
            {
                return(cachedGetter);
            }

            if (_underlyingMapType.IsProperty(property) && (property.IndexOf('?') == -1))
            {
                EventPropertyGetter mapGetter = _underlyingMapType.GetGetter(property);
                EventPropertyGetter getter    = new ProxyEventPropertyGetter
                {
                    ProcGet = theEvent =>
                    {
                        if (!(theEvent is DecoratingEventBean))
                        {
                            throw new PropertyAccessException("Mismatched property getter to EventBean type");
                        }
                        var wrapperEvent = (DecoratingEventBean)theEvent;
                        var map          = wrapperEvent.DecoratingProperties;
                        return(mapGetter.Get(_eventAdapterService.AdapterForTypedMap(map, _underlyingMapType)));
                    },
                    ProcIsExistsProperty = eventBean => true,
                    ProcGetFragment      = theEvent =>
                    {
                        if (!(theEvent is DecoratingEventBean))
                        {
                            throw new PropertyAccessException("Mismatched property getter to EventBean type");
                        }
                        var wrapperEvent = (DecoratingEventBean)theEvent;
                        var map          = wrapperEvent.DecoratingProperties;
                        return(mapGetter.GetFragment(_eventAdapterService.AdapterForTypedMap(map, _underlyingMapType)));
                    }
                };
                _propertyGetterCache.Put(property, getter);
                return(getter);
            }
            else if (_underlyingEventType.IsProperty(property))
            {
                EventPropertyGetter getter = new ProxyEventPropertyGetter()
                {
                    ProcGet = theEvent =>
                    {
                        if (!(theEvent is DecoratingEventBean))
                        {
                            throw new PropertyAccessException("Mismatched property getter to EventBean type");
                        }
                        var wrapperEvent = (DecoratingEventBean)theEvent;
                        var wrappedEvent = wrapperEvent.UnderlyingEvent;
                        if (wrappedEvent == null)
                        {
                            return(null);
                        }

                        var underlyingGetter = _underlyingEventType.GetGetter(property);
                        return(underlyingGetter.Get(wrappedEvent));
                    },
                    ProcIsExistsProperty = eventBean => true,
                    ProcGetFragment      = theEvent =>
                    {
                        if (!(theEvent is DecoratingEventBean))
                        {
                            throw new PropertyAccessException("Mismatched property getter to EventBean type");
                        }
                        var wrapperEvent = (DecoratingEventBean)theEvent;
                        var wrappedEvent = wrapperEvent.UnderlyingEvent;
                        if (wrappedEvent == null)
                        {
                            return(null);
                        }

                        var underlyingGetter = _underlyingEventType.GetGetter(property);
                        return(underlyingGetter.GetFragment(wrappedEvent));
                    }
                };
                _propertyGetterCache.Put(property, getter);
                return(getter);
            }
            else
            {
                return(null);
            }
        }
Esempio n. 21
0
 public Object GetFragment(EventBean eventBean, EventBean[] eventsPerStream, ExprEvaluatorContext exprEvaluatorContext)
 {
     return(_getter.GetFragment(eventBean));
 }