Esempio n. 1
0
        private static void RunTest(PropTestDesc test, BeanEventType eventType, EventBean eventBean)
        {
            String propertyName = test.PropertyName;

            Assert.AreEqual(test.IsProperty, eventType.IsProperty(propertyName), "isProperty mismatch on '" + propertyName + "',");
            Assert.AreEqual(test.Clazz, eventType.GetPropertyType(propertyName), "getPropertyType mismatch on '" + propertyName + "',");

            EventPropertyGetter getter = eventType.GetGetterSPI(propertyName);

            if (getter == null)
            {
                Assert.IsFalse(test.HasGetter, "getGetter null on '" + propertyName + "',");
            }
            else
            {
                Assert.IsTrue(test.HasGetter, "getGetter not null on '" + propertyName + "',");
#pragma warning disable CS0252 // Possible unintended reference comparison; left hand side needs cast
                if (test.GetterReturnValue == typeof(NullReferenceException))
                {
#pragma warning restore CS0252 // Possible unintended reference comparison; left hand side needs cast
                    try {
                        getter.Get(eventBean);
                        Assert.Fail("getGetter not throwing null pointer on '" + propertyName);
                    } catch (NullReferenceException) {
                        // expected
                    }
                }
                else
                {
                    var value = getter.Get(eventBean);
                    Assert.AreEqual(test.GetterReturnValue, value, "getter value mismatch on '" + propertyName + "',");
                }
            }
        }
 public WriteDesc(EventTypeSPI type, String variableName, EventPropertyWriter writer, EventPropertyGetter getter)
 {
     Type         = type;
     VariableName = variableName;
     Writer       = writer;
     Getter       = getter;
 }
Esempio n. 3
0
        public void TestSubscriberandListener()
        {
            _epService.EPAdministrator.Configuration.AddEventType(
                "SupportBean", typeof(SupportBean));
            _epService.EPAdministrator.CreateEPL(
                "insert into A1 select s.*, 1 as a from SupportBean as s");
            EPStatement stmt = _epService.EPAdministrator.CreateEPL(
                "select a1.* from A1 as a1");

            var listener   = new SupportUpdateListener();
            var subscriber = new MySubscriberRowByRowObjectArr();

            stmt.Events    += listener.Update;
            stmt.Subscriber = subscriber;
            _epService.EPRuntime.SendEvent(new SupportBean("E1", 1));

            EventBean theEvent = listener.AssertOneGetNewAndReset();

            Assert.AreEqual("E1", theEvent.Get("TheString"));
            Assert.AreEqual(1, theEvent.Get("IntPrimitive"));
            Assert.IsTrue(theEvent.Underlying is Pair <object, IDictionary <string, object> >);

            foreach (String property in stmt.EventType.PropertyNames)
            {
                EventPropertyGetter getter = stmt.EventType.GetGetter(property);

                getter.Get(theEvent);
            }
        }
Esempio n. 4
0
        public virtual EventPropertyGetter GetGetter(string propertyName)
        {
            if (!_eventAdapterService.EngineImportService.IsCodegenEventPropertyGetters)
            {
                return(GetGetterSPI(propertyName));
            }
            if (_propertyGetterCodegeneratedCache == null)
            {
                _propertyGetterCodegeneratedCache = new Dictionary <string, EventPropertyGetter>();
            }

            EventPropertyGetter getter = _propertyGetterCodegeneratedCache.Get(propertyName);

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

            EventPropertyGetterSPI getterSPI = GetGetterSPI(propertyName);

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

            EventPropertyGetter getterCode = _eventAdapterService.EngineImportService.CodegenGetter(getterSPI, propertyName);

            _propertyGetterCodegeneratedCache.Put(propertyName, getterCode);
            return(getterCode);
        }
 public ExprIdentNodeEvaluatorImpl(int streamNum, EventPropertyGetter propertyGetter, Type propertyType, ExprIdentNode identNode)
 {
     _streamNum      = streamNum;
     _propertyGetter = propertyGetter;
     _propertyType   = propertyType; // .GetBoxedType();
     _identNode      = identNode;
 }
Esempio n. 6
0
 internal DTLocalEvaluatorBeanReformat(
     EventPropertyGetter getter,
     DTLocalEvaluator inner)
 {
     _getter = getter;
     _inner  = inner;
 }
Esempio n. 7
0
 public DTLocalBeanIntervalNoEndTSEval(
     EventPropertyGetter getter,
     DTLocalEvaluator inner)
 {
     this.getter = getter;
     this.inner = inner;
 }
Esempio n. 8
0
        private void RunAssertionSubscriberAndListener(EPServiceProvider epService)
        {
            epService.EPAdministrator.Configuration.AddEventType <SupportBean>();
            epService.EPAdministrator.CreateEPL("insert into A1 select s.*, 1 as a from SupportBean as s");
            EPStatement stmt = epService.EPAdministrator.CreateEPL("select a1.* from A1 as a1");

            var listener   = new SupportUpdateListener();
            var subscriber = new SupportSubscriberRowByRowObjectArrayPlainNStmt();

            stmt.Events    += listener.Update;
            stmt.Subscriber = subscriber;
            epService.EPRuntime.SendEvent(new SupportBean("E1", 1));

            EventBean theEvent = listener.AssertOneGetNewAndReset();

            Assert.AreEqual("E1", theEvent.Get("TheString"));
            Assert.AreEqual(1, theEvent.Get("IntPrimitive"));
            Assert.That(theEvent.Underlying, Is.InstanceOf <Pair <object, Map> >());

            foreach (string property in stmt.EventType.PropertyNames)
            {
                EventPropertyGetter getter = stmt.EventType.GetGetter(property);
                getter.Get(theEvent);
            }
        }
 public SubordIndexedTableLookupStrategySinglePropUnique(int keyStreamNum, EventPropertyGetter propertyGetter, PropertyIndexedEventTableSingleUnique index, LookupStrategyDesc strategyDesc)
 {
     _keyStreamNum   = keyStreamNum;
     _propertyGetter = propertyGetter;
     _index          = index;
     _strategyDesc   = strategyDesc;
 }
 private Object HandleGetterTrailingChain(Object result)
 {
     for (int i = 1; i < _getterChain.Length; i++)
     {
         if (result == null)
         {
             return(null);
         }
         EventPropertyGetter getter = _getterChain[i];
         if (result is EventBean)
         {
             result = getter.Get((EventBean)result);
         }
         else if (getter is BeanEventPropertyGetter)
         {
             result = ((BeanEventPropertyGetter)getter).GetBeanProp(result);
         }
         else if (result is Map && getter is MapEventPropertyGetter)
         {
             result = ((MapEventPropertyGetter)getter).GetMap((Map)result);
         }
         else
         {
             return(null);
         }
     }
     return(result);
 }
        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;
        }
Esempio n. 12
0
 /// <summary>Ctor. </summary>
 /// <param name="descriptor">property descriptor</param>
 /// <param name="getter">getter for values</param>
 /// <param name="fragmentArray">true if array fragment</param>
 /// <param name="optionalFragmentTypeName">null if not a fragment, else fragment type name</param>
 public ExplicitPropertyDescriptor(EventPropertyDescriptor descriptor, EventPropertyGetter getter, bool fragmentArray, String optionalFragmentTypeName)
 {
     Descriptor               = descriptor;
     Getter                   = getter;
     IsFragmentArray          = fragmentArray;
     OptionalFragmentTypeName = optionalFragmentTypeName;
 }
Esempio n. 13
0
 /// <summary>Ctor. </summary>
 public PropertySortedEventTable(EventPropertyGetter propertyGetter, EventTableOrganization organization)
 {
     _organization   = organization;
     PropertyGetter  = propertyGetter;
     PropertyIndex   = new OrderedDictionary <Object, ISet <EventBean> >();
     NullKeyedValues = new LinkedHashSet <EventBean>();
 }
Esempio n. 14
0
        private static void RunTest(PropTestDesc test, BeanEventType eventType, EventBean eventBean)
        {
            String propertyName = test.PropertyName;

            Assert.AreEqual(test.IsProperty, eventType.IsProperty(propertyName), "isProperty mismatch on '" + propertyName + "',");
            Assert.AreEqual(test.Clazz, eventType.GetPropertyType(propertyName), "getPropertyType mismatch on '" + propertyName + "',");

            EventPropertyGetter getter = eventType.GetGetter(propertyName);

            if (getter == null)
            {
                Assert.IsFalse(test.HasGetter, "getGetter null on '" + propertyName + "',");
            }
            else
            {
                Assert.IsTrue(test.HasGetter, "getGetter not null on '" + propertyName + "',");
                if (test.GetterReturnValue == typeof(NullReferenceException))
                {
                    try {
                        getter.Get(eventBean);
                        Assert.Fail("getGetter not throwing null pointer on '" + propertyName);
                    } catch (NullReferenceException) {
                        // expected
                    }
                }
                else
                {
                    var value = getter.Get(eventBean);
                    Assert.AreEqual(test.GetterReturnValue, value, "getter value mismatch on '" + propertyName + "',");
                }
            }
        }
Esempio n. 15
0
 internal DTLocalEvaluatorBeanCalOps(
     EventPropertyGetter getter,
     DTLocalEvaluator inner)
 {
     _getter = getter;
     _inner  = inner;
 }
 public EventPropertyGetter GetGetterIndexedEntryEventBeanArrayElement(
     String propertyNameAtomic,
     int index,
     EventPropertyGetter nestedGetter)
 {
     return(new MapEventBeanArrayIndexedElementPropertyGetter(propertyNameAtomic, index, nestedGetter));
 }
Esempio n. 17
0
 internal DTLocalEvaluatorBeanIntervalNoEndTS(
     EventPropertyGetter getter,
     DTLocalEvaluator inner)
 {
     _getter = getter;
     _inner  = inner;
 }
Esempio n. 18
0
 public FilterSpecLookupable(String expression, EventPropertyGetter getter, Type returnType, bool isNonPropertyGetter)
 {
     Expression          = expression;
     Getter              = getter;
     ReturnType          = returnType;
     IsNonPropertyGetter = isNonPropertyGetter;
 }
Esempio n. 19
0
        public override ExprNode Validate(ExprValidationContext validationContext)
        {
            if (validationContext.ContextDescriptor == null)
            {
                throw new ExprValidationException(
                          "Context property '" + _propertyName + "' cannot be used in the expression as provided");
            }
            EventType eventType = validationContext.ContextDescriptor.ContextPropertyRegistry.ContextEventType;

            if (eventType == null)
            {
                throw new ExprValidationException(
                          "Context property '" + _propertyName + "' cannot be used in the expression as provided");
            }
            _getter = eventType.GetGetter(_propertyName);
            if (_getter == null)
            {
                throw new ExprValidationException(
                          "Context property '" + _propertyName + "' is not a known property, known properties are " +
                          eventType.PropertyNames.Render());
            }
            _returnType = eventType.GetPropertyType(_propertyName);

            return(null);
        }
Esempio n. 20
0
 public DTLocalBeanReformatEval(
     EventPropertyGetter getter,
     DTLocalEvaluator inner)
 {
     this.getter = getter;
     this.inner = inner;
 }
Esempio n. 21
0
 public InSetOfValuesContextProp(String propertyName, EventPropertyGetter getter, Coercer coercer, Type returnType)
 {
     _propertyName = propertyName;
     _getter = getter;
     _numberCoercer = coercer;
     _returnType = returnType;
 }
 public SubordIndexedTableLookupStrategySingleProp(int keyStreamNum, EventPropertyGetter propertyGetter, PropertyIndexedEventTableSingle index, LookupStrategyDesc strategyDesc)
 {
     this._keyStreamNum   = keyStreamNum;
     this._propertyGetter = propertyGetter;
     this._index          = index;
     this._strategyDesc   = strategyDesc;
 }
Esempio n. 23
0
 /// <summary>Ctor. </summary>
 /// <param name="propertyName">the property this gets</param>
 /// <param name="propertyNumber">the property number</param>
 /// <param name="fullGetter">the getter of the base event to use, if any</param>
 /// <param name="authoritySets">is the group numbers that the getter may access to obtain a property value</param>
 public RevisionGetterParameters(String propertyName, int propertyNumber, EventPropertyGetter fullGetter, int[] authoritySets)
 {
     this.propertyName   = propertyName;
     this.propertyNumber = propertyNumber;
     this.baseGetter     = fullGetter;
     this.propertyGroups = authoritySets;
 }
 public FilterSpecParamContextProp(FilterSpecLookupable lookupable, FilterOperator filterOperator, String contextPropertyName, EventPropertyGetter getter, Coercer numberCoercer)
     : base(lookupable, filterOperator)
 {
     _contextPropertyName = contextPropertyName;
     _getter        = getter;
     _numberCoercer = numberCoercer;
 }
 public PropertyExprEvaluatorScalarCollection(string propertyName, int streamId, EventPropertyGetter getter, Type componentType)
 {
     _propertyName  = propertyName;
     _streamId      = streamId;
     _getter        = getter;
     _componentType = componentType;
 }
Esempio n. 26
0
        /// <summary>Fast lookup of a getter for a property and type. </summary>
        /// <param name="assignedPropertyNumber">number of property to use as index</param>
        /// <param name="eventType">type of underlying event</param>
        /// <returns>getter</returns>
        public EventPropertyGetter GetGetter(int assignedPropertyNumber, EventType eventType)
        {
            VariantPropertyGetterRow lastGetters = _lastUsedGetters;

            if ((lastGetters != null) && (lastGetters.EventType == eventType))
            {
                return(lastGetters.GetterPerProp[assignedPropertyNumber]);
            }

            VariantPropertyGetterRow row = _allGetters.Get(eventType);

            // newly seen type (Using ANY type variance or as a subtype of an existing variance type)
            // synchronized add, if added twice then that is ok too
            if (row == null)
            {
                lock (this)
                {
                    row = _allGetters.Get(eventType);
                    if (row == null)
                    {
                        row = AddType(eventType);
                    }
                }
            }

            EventPropertyGetter getter = row.GetterPerProp[assignedPropertyNumber];

            _lastUsedGetters = row;
            return(getter);
        }
Esempio n. 27
0
 public ExprIdentNodeEvaluatorLogging(int streamNum, EventPropertyGetter propertyGetter, Type propertyType, ExprIdentNode identNode, String propertyName, String statementName, String engineURI)
     : base(streamNum, propertyGetter, propertyType, identNode)
 {
     _propertyName  = propertyName;
     _statementName = statementName;
     _engineURI     = engineURI;
 }
Esempio n. 28
0
        private VariantPropertyGetterRow AddType(EventType eventType)
        {
            var newKnownTypes = (EventType[])ResizeArray(_knownTypes, _knownTypes.Length + 1);

            newKnownTypes[newKnownTypes.Length - 1] = eventType;

            // create getters
            var getters = new EventPropertyGetter[_properties.Count];

            for (int i = 0; i < _properties.Count; i++)
            {
                getters[i] = eventType.GetGetter(_properties[i]);
            }

            var row = new VariantPropertyGetterRow(eventType, getters);

            var newAllGetters = new Dictionary <EventType, VariantPropertyGetterRow>();

            newAllGetters.PutAll(_allGetters);
            newAllGetters.Put(eventType, row);

            // overlay volatiles
            _knownTypes = newKnownTypes;
            _allGetters = newAllGetters;

            return(row);
        }
Esempio n. 29
0
        public EventPropertyGetter GetGetter(String propertyName)
        {
            EventPropertyGetter cachedGetter = _propertyGetterCache.Get(propertyName);

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

            SimplePropertyInfo simpleProp = GetSimplePropertyInfo(propertyName);

            if ((simpleProp != null) && (simpleProp.Getter != null))
            {
                EventPropertyGetter propertyGetter = simpleProp.Getter;
                _propertyGetterCache.Put(propertyName, propertyGetter);
                return(propertyGetter);
            }

            Property prop = PropertyParser.ParseAndWalk(propertyName, false);

            if (prop is SimpleProperty)
            {
                // there is no such property since it wasn't in simplePropertyGetters
                return(null);
            }

            EventPropertyGetter getter = prop.GetGetter(this, _eventAdapterService);

            _propertyGetterCache.Put(propertyName, getter);
            return(getter);
        }
Esempio n. 30
0
 /// <summary>
 /// Ctor.
 /// </summary>
 /// <param name="getter">for retrieving the value</param>
 /// <param name="name">property name</param>
 /// <param name="metadata">the nested properties metadata</param>
 /// <param name="isArray">indicates whether this is an indexed property</param>
 public NestedGetterPair(EventPropertyGetter getter, String name, RendererMeta metadata, bool isArray)
 {
     this.getter   = getter;
     this.name     = name;
     this.metadata = metadata;
     this.isArray  = isArray;
 }