private bool HandleIsExistsTrailingChain(object result)
        {
            for (var i = 1; i < _getterChain.Length; i++)
            {
                if (result == null) return false;

                EventPropertyGetter getter = _getterChain[i];

                if (i == _getterChain.Length - 1)
                    if (getter is BeanEventPropertyGetter)
                        return ((BeanEventPropertyGetter) getter).IsBeanExistsProperty(result);
                    else if (result is Map && getter is MapEventPropertyGetter)
                        return ((MapEventPropertyGetter) getter).IsMapExistsProperty((Map) result);
                    else if (result is EventBean)
                        return getter.IsExistsProperty((EventBean) result);
                    else
                        return false;

                if (getter is BeanEventPropertyGetter)
                    result = ((BeanEventPropertyGetter) getter).GetBeanProp(result);
                else if (result is Map && getter is MapEventPropertyGetter)
                    result = ((MapEventPropertyGetter) getter).GetMap((Map) result);
                else if (result is EventBean)
                    result = getter.Get((EventBean) result);
                else
                    return false;
            }

            return false;
        }
 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);
 }
 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));
 }
        /// <summary>Returns true if the property exists, or false if not. </summary>
        /// <param name="eventsPerStream">each stream's events</param>
        /// <param name="isNewData">if the stream represents insert or remove stream</param>
        /// <returns>true if the property exists, false if not</returns>
        public bool EvaluatePropertyExists(EventBean[] eventsPerStream, bool isNewData)
        {
            EventBean theEvent = eventsPerStream[_streamNum];

            if (theEvent == null)
            {
                return(false);
            }
            return(_propertyGetter.IsExistsProperty(theEvent));
        }
        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 bool HandleIsExistsTrailingChain(Object result)
        {
            for (int i = 1; i < _getterChain.Length; i++)
            {
                if (result == null)
                {
                    return(false);
                }

                EventPropertyGetter getter = _getterChain[i];

                if (i == _getterChain.Length - 1)
                {
                    if (getter is BeanEventPropertyGetter)
                    {
                        return(((BeanEventPropertyGetter)getter).IsBeanExistsProperty(result));
                    }
                    else if (result is Map && getter is MapEventPropertyGetter)
                    {
                        return(((MapEventPropertyGetter)getter).IsMapExistsProperty((Map)result));
                    }
                    else if (result is EventBean)
                    {
                        return(getter.IsExistsProperty((EventBean)result));
                    }
                    else
                    {
                        return(false);
                    }
                }

                if (getter is BeanEventPropertyGetter)
                {
                    result = ((BeanEventPropertyGetter)getter).GetBeanProp(result);
                }
                else if (result is Map && getter is MapEventPropertyGetter)
                {
                    result = ((MapEventPropertyGetter)getter).GetMap((Map)result);
                }
                else if (result is EventBean)
                {
                    result = getter.Get((EventBean)result);
                }
                else
                {
                    return(false);
                }
            }
            return(false);
        }
        private bool HandleIsExistsTrailingChain(object result)
        {
            for (var i = 1; i < getterChain.Length; i++) {
                if (result == null) {
                    return false;
                }

                EventPropertyGetter getter = getterChain[i];

                if (i == getterChain.Length - 1) {
                    if (getter is BeanEventPropertyGetter) {
                        return ((BeanEventPropertyGetter) getter).IsBeanExistsProperty(result);
                    }

                    if (result is IDictionary<string, object> && getter is MapEventPropertyGetter) {
                        return ((MapEventPropertyGetter) getter).IsMapExistsProperty(
                            (IDictionary<string, object>) result);
                    }

                    if (result is EventBean) {
                        return getter.IsExistsProperty((EventBean) result);
                    }

                    return false;
                }

                if (getter is BeanEventPropertyGetter) {
                    result = ((BeanEventPropertyGetter) getter).GetBeanProp(result);
                }
                else if (result is IDictionary<string, object> && getter is MapEventPropertyGetter) {
                    result = ((MapEventPropertyGetter) getter).GetMap((IDictionary<string, object>) result);
                }
                else if (result is EventBean) {
                    result = getter.Get((EventBean) result);
                }
                else {
                    return false;
                }
            }

            return false;
        }
 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));
 }