/// <summary>
 ///     Ctor.
 /// </summary>
 /// <param name="objectArrayEventType">map event type</param>
 /// <param name="eventAdapterService">for copying events</param>
 public ObjectArrayEventBeanCopyMethod(
     ObjectArrayEventType objectArrayEventType,
     EventBeanTypedEventFactory eventAdapterService)
 {
     this.objectArrayEventType = objectArrayEventType;
     this.eventAdapterService = eventAdapterService;
 }
Exemplo n.º 2
0
 public ExprDotStaticMethodWrapIterableEvents(
     EventBeanTypedEventFactory eventBeanTypedEventFactory,
     BeanEventType type)
 {
     this.eventBeanTypedEventFactory = eventBeanTypedEventFactory;
     this.type = type;
 }
Exemplo n.º 3
0
 protected abstract AvroSchemaEventType MakeType(
     EventTypeMetadata metadata,
     EventBeanTypedEventFactory eventAdapterService,
     Schema schema,
     ConfigurationCommonEventTypeAvro optionalConfig,
     EventType[] supertypes,
     ISet<EventType> deepSupertypes);
Exemplo n.º 4
0
        /// <summary>
        ///     NOTE: Code-generation-invoked method, method name and parameter order matters
        /// </summary>
        /// <param name="value">value</param>
        /// <param name="eventAdapterService">svc</param>
        /// <param name="fragmentType">type</param>
        /// <returns>fragment</returns>
        public static object GetFragmentAvro(
            object value,
            EventBeanTypedEventFactory eventAdapterService,
            EventType fragmentType)
        {
            if (fragmentType == null) {
                return null;
            }

            if (value is GenericRecord) {
                return eventAdapterService.AdapterForTypedAvro(value, fragmentType);
            }

            if (value is ICollection<object> valueAsCollection) {
                var events = new EventBean[valueAsCollection.Count];
                var index = 0;
                foreach (var item in valueAsCollection) {
                    events[index++] = eventAdapterService.AdapterForTypedAvro(item, fragmentType);
                }

                return events;
            }

            return null;
        }
Exemplo n.º 5
0
        public static object HandleJsonProvidedCreateFragmentArray(
            object value,
            EventType fragmentType,
            EventBeanTypedEventFactory factory)
        {
            if (value == null) {
                return null;
            }

            var array = value as Array;
            var len = array.Length;
            var events = new EventBean[len];
            if (fragmentType is JsonEventType) {
                for (var i = 0; i < len; i++) {
                    object item = array.GetValue(i);
                    events[i] = factory.AdapterForTypedJson(item, fragmentType);
                }
            }
            else {
                for (var i = 0; i < len; i++) {
                    object item = array.GetValue(i);
                    events[i] = factory.AdapterForTypedObject(item, fragmentType);
                }
            }

            return events;
        }
Exemplo n.º 6
0
 public override MapEventPropertyGetter GetGetterMap(
     IDictionary<string, object> optionalMapPropTypes,
     EventBeanTypedEventFactory eventBeanTypedEventFactory,
     BeanEventTypeFactory beanEventTypeFactory)
 {
     return new MapIndexedPropertyGetter(PropertyNameAtomic, Index);
 }
Exemplo n.º 7
0
 /// <summary>
 ///     Make a wrapper type.
 ///     A wrapper event type may indeed wrap another wrapper event type. This is so that a wrapper event bean can wrap
 ///     another wrapper event bean.
 ///     If there were unwrapped the nesting information such as what is the nested wrapper type and how they are nested
 ///     would be lost.
 /// </summary>
 /// <param name="metadata">metadata</param>
 /// <param name="underlyingEventType">underlying event type</param>
 /// <param name="propertyTypesMayPrimitive">property types</param>
 /// <param name="eventBeanTypedEventFactory">factory for instances</param>
 /// <param name="beanEventTypeFactory">bean event type factory</param>
 /// <param name="eventTypeNameResolver">type name resolver</param>
 /// <returns>wrapper type</returns>
 public static WrapperEventType MakeWrapper(
     EventTypeMetadata metadata,
     EventType underlyingEventType,
     IDictionary<string, object> propertyTypesMayPrimitive,
     EventBeanTypedEventFactory eventBeanTypedEventFactory,
     BeanEventTypeFactory beanEventTypeFactory,
     EventTypeNameResolver eventTypeNameResolver)
 {
     // If we are wrapping an underlying type that is itself a wrapper, then this is a special case
     if (underlyingEventType is WrapperEventType underlyingWrapperType) {
         // the underlying type becomes the type already wrapped
         // properties are a superset of the wrapped properties and the additional properties
         underlyingEventType = underlyingWrapperType.UnderlyingEventType;
         var propertiesSuperset = new Dictionary<string, object>();
         propertiesSuperset.PutAll(underlyingWrapperType.UnderlyingMapType.Types);
         propertiesSuperset.PutAll(propertyTypesMayPrimitive);
         propertyTypesMayPrimitive = propertiesSuperset;
     }
     
     IDictionary<string, object> verified = BaseNestableEventUtil.ResolvePropertyTypes(
         propertyTypesMayPrimitive,
         eventTypeNameResolver);
     return new WrapperEventType(
         metadata,
         underlyingEventType,
         verified,
         eventBeanTypedEventFactory,
         beanEventTypeFactory);
 }
 public EventPropertyGetterSPI GetGetterRootedDynamicNested(
     Property prop,
     EventBeanTypedEventFactory eventBeanTypedEventFactory,
     BeanEventTypeFactory beanEventTypeFactory)
 {
     throw new IllegalStateException("This getter is not available for object-array events");
 }
Exemplo n.º 9
0
        public override EventPropertyGetterSPI GetGetterDOM(
            SchemaElementComplex complexProperty,
            EventBeanTypedEventFactory eventBeanTypedEventFactory,
            BaseXMLEventType xmlEventType,
            string propertyExpression)
        {
            foreach (var attribute in complexProperty.Attributes) {
                if (attribute.Name.Equals(PropertyNameAtomic)) {
                    return new DOMSimpleAttributeGetter(PropertyNameAtomic);
                }
            }

            foreach (var simple in complexProperty.SimpleElements) {
                if (simple.Name.Equals(PropertyNameAtomic)) {
                    return new DOMComplexElementGetter(PropertyNameAtomic, null, simple.IsArray);
                }
            }

            foreach (SchemaElementComplex complex in complexProperty.ComplexElements) {
                var complexFragmentFactory = new FragmentFactoryDOMGetter(
                    eventBeanTypedEventFactory,
                    xmlEventType,
                    propertyExpression);
                if (complex.Name.Equals(PropertyNameAtomic)) {
                    return new DOMComplexElementGetter(PropertyNameAtomic, complexFragmentFactory, complex.IsArray);
                }
            }

            return null;
        }
Exemplo n.º 10
0
        private EventPropertyGetterSPI GetGetterFromDictionary(
            EventBeanTypedEventFactory eventBeanTypedEventFactory,
            BeanEventTypeFactory beanEventTypeFactory,
            PropertyStem propertyDesc)
        {
            if (propertyDesc.AccessorProp != null) {
                return new KeyedMapPropertyPropertyGetter(
                    propertyDesc.AccessorProp,
                    Key,
                    eventBeanTypedEventFactory,
                    beanEventTypeFactory);
            }

            if (propertyDesc.IsSimpleReadMethod) {
                return new KeyedMapMethodPropertyGetter(
                    propertyDesc.ReadMethod,
                    Key,
                    eventBeanTypedEventFactory,
                    beanEventTypeFactory);
            }


            if (propertyDesc.AccessorField != null) {
                var field = propertyDesc.AccessorField;
                return new KeyedMapFieldPropertyGetter(
                    field,
                    Key,
                    eventBeanTypedEventFactory,
                    beanEventTypeFactory);
            }

            throw new IllegalStateException($"unable to determine property getter for requested member");
        }
Exemplo n.º 11
0
        // EventPropertyGetterAndMapped
        public override EventPropertyGetterSPI GetGetter(
            BeanEventType eventType,
            EventBeanTypedEventFactory eventBeanTypedEventFactory,
            BeanEventTypeFactory beanEventTypeFactory)
        {
            var propertyDesc = eventType.GetMappedProperty(PropertyNameAtomic);
            if (propertyDesc == null) {
                return null;
            }

            if (propertyDesc.IsMappedReadMethod) {
                return new KeyedMethodPropertyGetter(
                    propertyDesc.ReadMethod,
                    Key,
                    eventBeanTypedEventFactory,
                    beanEventTypeFactory);
            }

            // Try the as a simple property
            if (!propertyDesc.PropertyType.IsSimple()) {
                return null;
            }

            var returnType = propertyDesc.ReturnType;
            if (returnType.IsGenericStringDictionary()) {
                return GetGetterFromDictionary(
                    eventBeanTypedEventFactory,
                    beanEventTypeFactory,
                    propertyDesc);
            }

            return null;
        }
Exemplo n.º 12
0
        public override EventPropertyGetterSPI GetGetterDOM(
            SchemaElementComplex complexProperty,
            EventBeanTypedEventFactory eventBeanTypedEventFactory,
            BaseXMLEventType eventType,
            string propertyExpression)
        {
            foreach (var simple in complexProperty.SimpleElements) {
                if (!simple.IsArray) {
                    continue;
                }

                if (!simple.Name.Equals(PropertyNameAtomic)) {
                    continue;
                }

                return new DOMIndexedGetter(PropertyNameAtomic, Index, null);
            }

            foreach (var complex in complexProperty.ComplexElements) {
                if (!complex.IsArray) {
                    continue;
                }

                if (!complex.Name.Equals(PropertyNameAtomic)) {
                    continue;
                }

                return new DOMIndexedGetter(
                    PropertyNameAtomic,
                    Index,
                    new FragmentFactoryDOMGetter(eventBeanTypedEventFactory, eventType, propertyExpression));
            }

            return null;
        }
Exemplo n.º 13
0
        private EventPropertyGetterSPI GetGetterFromArray(
            EventBeanTypedEventFactory eventBeanTypedEventFactory,
            BeanEventTypeFactory beanEventTypeFactory,
            PropertyStem propertyDesc)
        {
            var prop = propertyDesc.AccessorProp;
            if (prop != null) {
                return new ArrayPropertyPropertyGetter(prop, Index, eventBeanTypedEventFactory, beanEventTypeFactory);
            }

            if (propertyDesc.IsSimpleReadMethod) {
                var method = propertyDesc.ReadMethod;
                return new ArrayMethodPropertyGetter(
                    method,
                    Index,
                    eventBeanTypedEventFactory,
                    beanEventTypeFactory);
            }

            var field = propertyDesc.AccessorField;
            if (field != null) {
                return new ArrayFieldPropertyGetter(field, Index, eventBeanTypedEventFactory, beanEventTypeFactory);
            }

            throw new EPRuntimeException("unable to determine property array accessor");
        }
Exemplo n.º 14
0
        private EventPropertyGetterSPI GetGetterFromEnumerable(
            EventBeanTypedEventFactory eventBeanTypedEventFactory,
            BeanEventTypeFactory beanEventTypeFactory,
            PropertyStem propertyDesc)
        {
            if (propertyDesc.AccessorProp != null) {
                return new IterablePropertyPropertyGetter(
                    propertyDesc.AccessorProp,
                    Index,
                    eventBeanTypedEventFactory,
                    beanEventTypeFactory);
            }

            if (propertyDesc.IsSimpleReadMethod) {
                return new IterableMethodPropertyGetter(
                    propertyDesc.ReadMethod,
                    Index,
                    eventBeanTypedEventFactory,
                    beanEventTypeFactory);
            }

            if (propertyDesc.AccessorField != null) {
                return new IterableFieldPropertyGetter(
                    propertyDesc.AccessorField,
                    Index,
                    eventBeanTypedEventFactory,
                    beanEventTypeFactory);
            }

            throw new EPRuntimeException("unable to determine property enumerator accessor");
        }
Exemplo n.º 15
0
 public AvroEventBeanCopyMethod(
     AvroEventType avroEventType,
     EventBeanTypedEventFactory eventAdapterService)
 {
     _avroEventType = avroEventType;
     _eventAdapterService = eventAdapterService;
 }
Exemplo n.º 16
0
 public JsonGetterSimpleSchemaWFragmentArray(
     JsonUnderlyingField field,
     string underlyingClassName,
     EventType fragmentType,
     EventBeanTypedEventFactory eventBeanTypedEventFactory) : base(field, underlyingClassName, fragmentType, eventBeanTypedEventFactory)
 {
 }
Exemplo n.º 17
0
 public EventBeanFactoryAvro(
     EventType type,
     EventBeanTypedEventFactory eventAdapterService)
 {
     _type = type;
     _eventAdapterService = eventAdapterService;
 }
Exemplo n.º 18
0
 /// <summary>
 ///     Return getter for the given property.
 /// </summary>
 /// <param name="property">property to resolve</param>
 /// <param name="eventBeanTypedEventFactory">factory for event beans and event types</param>
 /// <param name="beanEventTypeFactory">bean factory</param>
 public static EventPropertyGetterSPI GetGetter(
     PropertyInfo property,
     EventBeanTypedEventFactory eventBeanTypedEventFactory,
     BeanEventTypeFactory beanEventTypeFactory)
 {
     return new ReflectionPropMethodGetter(property, eventBeanTypedEventFactory, beanEventTypeFactory);
 }
Exemplo n.º 19
0
 public JsonEventBeanCopyMethod(
     JsonEventType eventType,
     EventBeanTypedEventFactory eventBeanTypedEventFactory)
 {
     _eventType = eventType;
     _eventBeanTypedEventFactory = eventBeanTypedEventFactory;
 }
Exemplo n.º 20
0
 public EventBeanFactoryObjectArray(
     EventType type,
     EventBeanTypedEventFactory eventBeanTypedEventFactory)
 {
     this.type = type;
     this.eventBeanTypedEventFactory = eventBeanTypedEventFactory;
 }
Exemplo n.º 21
0
 public EventBeanCopyMethod GetCopyMethod(EventBeanTypedEventFactory eventBeanTypedEventFactory)
 {
     return new WrapperEventBeanUndCopyMethod(
         wrapperEventType,
         eventBeanTypedEventFactory,
         underlyingCopyMethod.GetCopyMethod(eventBeanTypedEventFactory));
 }
        public EventBeanManufacturer GetManufacturer(EventBeanTypedEventFactory eventBeanTypedEventFactory)
        {
            var nativeKeys = _writables.Select(_ => _.PropertyName).ToArray();

            //var nativeKeys = EventBeanManufacturerJson.FindPropertyIndexes(_jsonEventType, _writables);
            return(new EventBeanManufacturerJson(_jsonEventType, eventBeanTypedEventFactory, nativeKeys));
        }
Exemplo n.º 23
0
        public AvroEventType(
            EventTypeMetadata metadata,
            Schema avroSchema,
            string startTimestampPropertyName,
            string endTimestampPropertyName,
            EventType[] optionalSuperTypes,
            ISet<EventType> deepSupertypes,
            EventBeanTypedEventFactory eventBeanTypedEventFactory,
            EventTypeAvroHandler eventTypeAvroHandler)
        {
            Metadata = metadata;
            _avroSchema = avroSchema;
            _optionalSuperTypes = optionalSuperTypes;
            _deepSupertypes = deepSupertypes ?? new EmptySet<EventType>();
            _propertyItems = new LinkedHashMap<string, PropertySetDescriptorItem>();
            _eventBeanTypedEventFactory = eventBeanTypedEventFactory;
            _eventTypeAvroHandler = eventTypeAvroHandler;

            Init();

            var desc = EventTypeUtility.ValidatedDetermineTimestampProps(
                this,
                startTimestampPropertyName,
                endTimestampPropertyName,
                optionalSuperTypes);
            StartTimestampPropertyName = desc.Start;
            EndTimestampPropertyName = desc.End;
        }
Exemplo n.º 24
0
 /// <summary>
 ///     Ctor.
 /// </summary>
 /// <param name="objectArrayEventType">map event type</param>
 /// <param name="eventBeanTypedEventFactory">for copying events</param>
 public ObjectArrayEventBeanCopyMethodForge(
     ObjectArrayEventType objectArrayEventType,
     EventBeanTypedEventFactory eventBeanTypedEventFactory)
 {
     this.objectArrayEventType = objectArrayEventType;
     this.eventBeanTypedEventFactory = eventBeanTypedEventFactory;
 }
Exemplo n.º 25
0
 public GetterNestedFactoryRootedSimple(
     EventBeanTypedEventFactory eventAdapterService,
     Field posTop)
 {
     _eventAdapterService = eventAdapterService;
     _posTop = posTop;
 }
Exemplo n.º 26
0
        public override EventPropertyGetterSPI GetGetter(
            BeanEventType eventType,
            EventBeanTypedEventFactory eventBeanTypedEventFactory,
            BeanEventTypeFactory beanEventTypeFactory)
        {
            if (!eventType.Stem.IsPublicFields) {
                // Determine if there is an "indexed" method matching the form GetXXX(int index)
                var underlyingType = eventType.UnderlyingType;
                
                
                
                var propertyInfo = eventType.UnderlyingType.GetProperty(PropertyNameAtomic);
                if (propertyInfo != null && propertyInfo.CanRead) {
                }

                return new DynamicMappedPropertyGetterByMethodOrProperty(
                    PropertyNameAtomic,
                    Key,
                    eventBeanTypedEventFactory,
                    beanEventTypeFactory);
            }

            return new DynamicMappedPropertyGetterByField(
                PropertyNameAtomic,
                Key,
                eventBeanTypedEventFactory,
                beanEventTypeFactory);
        }