Ejemplo n.º 1
0
        public static CodegenMethod GetBeanArrayValueCodegen(
            CodegenMethodScope codegenMethodScope,
            CodegenClassScope codegenClassScope,
            BeanEventPropertyGetter nestedGetter,
            int index)
        {
            return codegenMethodScope.MakeChild(typeof(object), typeof(BaseNestableEventUtil), codegenClassScope)
                .AddParam(typeof(object), "value")
                .Block
                .IfRefNullReturnNull("value")

                .IfNotInstanceOf("value", typeof(Array))
                .BlockReturn(ConstantNull())

                .DeclareVar<Array>("array", Cast<Array>(Ref("value")))
                .IfConditionReturnConst(
                    Relational(ExprDotName(Ref("array"), "Length"), LE, Constant(index)),
                    null)

                .DeclareVar<object>(
                    "arrayItem",
                    ExprDotMethod(Ref("array"), "GetValue", Constant(index)))

                .IfRefNullReturnNull("arrayItem")
                .MethodReturn(
                    nestedGetter.UnderlyingGetCodegen(
                        Cast(nestedGetter.TargetType, Ref("arrayItem")),
                        codegenMethodScope,
                        codegenClassScope));
        }
Ejemplo n.º 2
0
 /// <summary>
 ///     Ctor.
 /// </summary>
 /// <param name="entryGetter">the getter for the map entry</param>
 /// <param name="eventAdapterService">for producing wrappers to objects</param>
 /// <param name="returnType">type of the entry returned</param>
 /// <param name="propertyIndex">index</param>
 /// <param name="nestedComponentType">nested component type</param>
 public ObjectArrayPonoEntryPropertyGetter(int propertyIndex, BeanEventPropertyGetter entryGetter,
     EventAdapterService eventAdapterService, Type returnType, Type nestedComponentType)
     : base(eventAdapterService, returnType, nestedComponentType)
 {
     _propertyIndex = propertyIndex;
     _entryGetter = entryGetter;
 }
 /// <summary>
 ///     Ctor.
 /// </summary>
 /// <param name="propertyMap">the property to look at</param>
 /// <param name="mapEntryGetter">the getter for the map entry</param>
 /// <param name="eventAdapterService">for producing wrappers to objects</param>
 /// <param name="returnType">type of the entry returned</param>
 /// <param name="nestedComponentType">nested type</param>
 public MapPonoEntryPropertyGetter(string propertyMap, BeanEventPropertyGetter mapEntryGetter,
     EventAdapterService eventAdapterService, Type returnType, Type nestedComponentType)
     : base(eventAdapterService, returnType, nestedComponentType)
 {
     _propertyMap = propertyMap;
     _mapEntryGetter = mapEntryGetter;
 }
 /// <summary>
 ///     Ctor.
 /// </summary>
 /// <param name="propertyMap">the property to look at</param>
 /// <param name="nestedGetter">the getter for the map entry</param>
 /// <param name="eventAdapterService">for producing wrappers to objects</param>
 /// <param name="index">the index to fetch the array element for</param>
 /// <param name="returnType">type of the entry returned</param>
 public MapArrayPonoBeanEntryIndexedPropertyGetter(string propertyMap, int index,
     BeanEventPropertyGetter nestedGetter, EventAdapterService eventAdapterService, Type returnType)
     : base(eventAdapterService, returnType, null)
 {
     _propertyMap = propertyMap;
     _index = index;
     _nestedGetter = nestedGetter;
 }
Ejemplo n.º 5
0
 public EventPropertyGetterSPI GetGetterIndexedEntryPono(
     string propertyNameAtomic, int index,
     BeanEventPropertyGetter nestedGetter,
     EventAdapterService eventAdapterService, 
     Type propertyTypeGetter)
 {
     return new MapArrayPonoBeanEntryIndexedPropertyGetter(propertyNameAtomic, index, nestedGetter,
         eventAdapterService, propertyTypeGetter);
 }
Ejemplo n.º 6
0
 public EventPropertyGetterSPI GetGetterNestedPonoProp(
     string propertyName,
     BeanEventPropertyGetter nestedGetter,
     EventAdapterService eventAdapterService,
     Type nestedReturnType,
     Type nestedComponentType)
 {
     return new MapPonoEntryPropertyGetter(propertyName, nestedGetter, eventAdapterService, nestedReturnType,
         nestedComponentType);
 }
 public EventPropertyGetter GetGetterNestedPONOProp(
     String propertyName,
     BeanEventPropertyGetter nestedGetter,
     EventAdapterService eventAdapterService,
     Type nestedReturnType,
     Type nestedComponentType)
 {
     return(new MapObjectEntryPropertyGetter(
                propertyName, nestedGetter, eventAdapterService, nestedReturnType, nestedComponentType));
 }
 public JsonGetterNestedPONOPropProvided(
     EventBeanTypedEventFactory eventBeanTypedEventFactory,
     BeanEventTypeFactory beanEventTypeFactory,
     Type returnType,
     Type genericType,
     FieldInfo field,
     BeanEventPropertyGetter nestedGetter) : base(eventBeanTypedEventFactory, beanEventTypeFactory, returnType, genericType)
 {
     this.field = field;
     this.nestedGetter = nestedGetter;
 }
Ejemplo n.º 9
0
 /// <summary>Ctor. </summary>
 /// <param name="propertyIndex">the property to look at</param>
 /// <param name="nestedGetter">the getter for the map entry</param>
 /// <param name="eventAdapterService">for producing wrappers to objects</param>
 /// <param name="index">the index to fetch the array element for</param>
 /// <param name="returnType">type of the entry returned</param>
 public ObjectArrayArrayPONOBeanEntryIndexedPropertyGetter(int propertyIndex,
                                                           int index,
                                                           BeanEventPropertyGetter nestedGetter,
                                                           EventAdapterService eventAdapterService,
                                                           Type returnType)
     : base(eventAdapterService, returnType, null)
 {
     _propertyIndex = propertyIndex;
     _index         = index;
     _nestedGetter  = nestedGetter;
 }
Ejemplo n.º 10
0
 public ObjectArrayArrayPONOBeanEntryIndexedPropertyGetter(
     int propertyIndex,
     int index,
     BeanEventPropertyGetter nestedGetter,
     EventBeanTypedEventFactory eventBeanTypedEventFactory,
     BeanEventTypeFactory beanEventTypeFactory,
     Type returnType)
     : base(eventBeanTypedEventFactory, beanEventTypeFactory, returnType, null)
 {
     this.propertyIndex = propertyIndex;
     this.index = index;
     this.nestedGetter = nestedGetter;
 }
 public JsonGetterIndexedEntryPONOProvided(
     FieldInfo field,
     int index,
     BeanEventPropertyGetter nestedGetter,
     EventBeanTypedEventFactory eventBeanTypedEventFactory,
     BeanEventTypeFactory beanEventTypeFactory,
     Type returnType)
     : base(eventBeanTypedEventFactory, beanEventTypeFactory, returnType, null)
 {
     this.field = field;
     this.index = index;
     this.nestedGetter = nestedGetter;
 }
 public MapArrayPONOBeanEntryIndexedPropertyGetter(
     string propertyMap,
     int index,
     BeanEventPropertyGetter nestedGetter,
     EventBeanTypedEventFactory eventBeanTypedEventFactory,
     BeanEventTypeFactory beanEventTypeFactory,
     Type returnType)
     : base(eventBeanTypedEventFactory, beanEventTypeFactory, returnType, null)
 {
     this.propertyMap = propertyMap;
     this.index = index;
     this.nestedGetter = nestedGetter;
 }
Ejemplo n.º 13
0
 public EventPropertyGetterSPI GetGetterIndexedEntryPONO(
     string propertyNameAtomic,
     int index,
     BeanEventPropertyGetter nestedGetter,
     EventBeanTypedEventFactory eventBeanTypedEventFactory,
     BeanEventTypeFactory beanEventTypeFactory,
     Type propertyTypeGetter)
 {
     return new MapArrayPONOBeanEntryIndexedPropertyGetter(
         propertyNameAtomic,
         index,
         nestedGetter,
         eventBeanTypedEventFactory,
         beanEventTypeFactory,
         propertyTypeGetter);
 }
Ejemplo n.º 14
0
 public EventPropertyGetterSPI GetGetterNestedPONOProp(
     string propertyName,
     BeanEventPropertyGetter nestedGetter,
     EventBeanTypedEventFactory eventBeanTypedEventFactory,
     BeanEventTypeFactory beanEventTypeFactory,
     Type nestedReturnType,
     Type nestedComponentType)
 {
     return new MapPONOEntryPropertyGetter(
         propertyName,
         nestedGetter,
         eventBeanTypedEventFactory,
         nestedReturnType,
         nestedComponentType,
         beanEventTypeFactory);
 }
Ejemplo n.º 15
0
 public MapPONOEntryPropertyGetter(
     string propertyMap,
     BeanEventPropertyGetter mapEntryGetter,
     EventBeanTypedEventFactory eventBeanTypedEventFactory,
     Type returnType,
     Type nestedComponentType,
     BeanEventTypeFactory beanEventTypeFactory)
     : base(
         eventBeanTypedEventFactory,
         beanEventTypeFactory,
         returnType,
         nestedComponentType)
 {
     this.propertyMap = propertyMap;
     this.mapEntryGetter = mapEntryGetter;
 }
Ejemplo n.º 16
0
 public ObjectArrayPONOEntryPropertyGetter(
     int propertyIndex,
     BeanEventPropertyGetter entryGetter,
     EventBeanTypedEventFactory eventBeanTypedEventFactory,
     BeanEventTypeFactory beanEventTypeFactory,
     Type returnType,
     Type nestedComponentType)
     : base(
         eventBeanTypedEventFactory,
         beanEventTypeFactory,
         returnType,
         nestedComponentType)
 {
     this.propertyIndex = propertyIndex;
     this.entryGetter = entryGetter;
 }
 public EventPropertyGetterSPI GetGetterNestedPONOProp(
     string propertyName,
     BeanEventPropertyGetter nestedGetter,
     EventBeanTypedEventFactory eventBeanTypedEventFactory,
     BeanEventTypeFactory beanEventTypeFactory,
     Type nestedReturnType,
     Type nestedComponentType)
 {
     var index = GetAssertIndex(propertyName);
     return new ObjectArrayPONOEntryPropertyGetter(
         index,
         nestedGetter,
         eventBeanTypedEventFactory,
         beanEventTypeFactory,
         nestedReturnType,
         nestedComponentType);
 }
 public EventPropertyGetterSPI GetGetterIndexedEntryPONO(
     string propertyNameAtomic,
     int index,
     BeanEventPropertyGetter nestedGetter,
     EventBeanTypedEventFactory eventBeanTypedEventFactory,
     BeanEventTypeFactory beanEventTypeFactory,
     Type propertyTypeGetter)
 {
     var propertyIndex = GetAssertIndex(propertyNameAtomic);
     return new ObjectArrayArrayPONOBeanEntryIndexedPropertyGetter(
         propertyIndex,
         index,
         nestedGetter,
         eventBeanTypedEventFactory,
         beanEventTypeFactory,
         propertyTypeGetter);
 }
Ejemplo n.º 19
0
 public static string GetBeanArrayValueCodegen(
     ICodegenContext context,
     BeanEventPropertyGetter nestedGetter,
     int index)
 {
     return(context.AddMethod(typeof(object), typeof(object), "value", typeof(BaseNestableEventUtil))
            .IfRefNullReturnNull("value")
            .IfConditionReturnConst(
                Not(ExprDotMethodChain(Ref("value")).AddNoParam("getClass")
                    .AddNoParam("isArray")), null)
            .IfConditionReturnConst(
                Relational(StaticMethod(typeof(Array), "getLength", Ref("value")),
                           CodegenRelational.LE, Constant(index)), null)
            .DeclareVar(typeof(object), "arrayItem",
                        StaticMethod(typeof(Array), "get", Ref("value"), Constant(index)))
            .IfRefNullReturnNull("arrayItem")
            .MethodReturn(
                nestedGetter.CodegenUnderlyingGet(Cast(nestedGetter.TargetType, Ref("arrayItem")),
                                                  context)));
 }
Ejemplo n.º 20
0
        public static object GetBeanArrayValue(BeanEventPropertyGetter nestedGetter, object value, int index)
        {
            if (value is Array valueAsArray)
            {
                if (valueAsArray.Length <= index)
                {
                    return(null);
                }

                var arrayItem = valueAsArray.GetValue(index);
                if (arrayItem == null)
                {
                    return(null);
                }

                return(nestedGetter.GetBeanProp(arrayItem));
            }

            return(null);
        }
Ejemplo n.º 21
0
        public static Object GetBeanArrayValue(BeanEventPropertyGetter nestedGetter, Object value, int index)
        {
            var asArray = value as Array;

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

            if (asArray.Length <= index)
            {
                return(null);
            }

            var arrayItem = asArray.GetValue(index);

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

            return(nestedGetter.GetBeanProp(arrayItem));
        }
        public EventPropertyGetterSPI GetGetterIndexedEntryPONO(
            string propertyNameAtomic,
            int index,
            BeanEventPropertyGetter nestedGetter,
            EventBeanTypedEventFactory eventBeanTypedEventFactory,
            BeanEventTypeFactory beanEventTypeFactory,
            Type propertyTypeGetter)
        {
            var field = FindField(propertyNameAtomic);

            if (field.OptionalField == null)
            {
                throw MakeIllegalState();
            }

            return(new JsonGetterIndexedEntryPONOProvided(
                       field.OptionalField,
                       index,
                       nestedGetter,
                       eventBeanTypedEventFactory,
                       beanEventTypeFactory,
                       propertyTypeGetter));
        }
        public EventPropertyGetterSPI GetGetterNestedPONOProp(
            string propertyName,
            BeanEventPropertyGetter nestedGetter,
            EventBeanTypedEventFactory eventBeanTypedEventFactory,
            BeanEventTypeFactory beanEventTypeFactory,
            Type nestedReturnType,
            Type nestedComponentType)
        {
            var field = FindField(propertyName);

            if (field == null || field.OptionalField == null)
            {
                return(null);
            }

            return(new JsonGetterNestedPONOPropProvided(
                       eventBeanTypedEventFactory,
                       beanEventTypeFactory,
                       nestedReturnType,
                       nestedComponentType,
                       field.OptionalField,
                       nestedGetter));
        }
Ejemplo n.º 24
0
 public static CodegenMethod GetBeanArrayValueExistsCodegen(
     CodegenMethodScope codegenMethodScope,
     CodegenClassScope codegenClassScope,
     BeanEventPropertyGetter nestedGetter,
     int index)
 {
     // TBD - array comparisons that need to be fixed
     
     return codegenMethodScope
         .MakeChild(typeof(bool), typeof(BaseNestableEventUtil), codegenClassScope)
         .AddParam(typeof(object), "value")
         .Block
         .IfRefNullReturnFalse("value")
         .IfConditionReturnConst(
             Not(ExprDotMethodChain(Ref("value")).Add("GetType").Get("IsArray")),
             false)
         .DeclareVar<Array>("asArray", Cast(typeof(Array), Ref("value")))
         .IfConditionReturnConst(
             Relational(
                 ExprDotName(Ref("asArray"), "Length"),
                 LE,
                 Constant(index)),
             false)
         .DeclareVar<object>(
             "arrayItem",
             ExprDotMethod(
                 Ref("asArray"),
                 "GetValue",
                 Constant(index)))
         .IfRefNullReturnFalse("arrayItem")
         .MethodReturn(
             nestedGetter.UnderlyingExistsCodegen(
                 Cast(nestedGetter.TargetType, Ref("arrayItem")),
                 codegenMethodScope,
                 codegenClassScope));
 }
Ejemplo n.º 25
0
        public EventPropertyGetter GetGetterNestedPONOProp(String propertyName, BeanEventPropertyGetter nestedGetter, EventAdapterService eventAdapterService, Type nestedReturnType, Type nestedComponentType)
        {
            int index = GetAssertIndex(propertyName);

            return(new ObjectArrayPONOEntryPropertyGetter(index, nestedGetter, eventAdapterService, nestedReturnType, nestedComponentType));
        }
Ejemplo n.º 26
0
        public EventPropertyGetter GetGetterIndexedEntryPONO(String propertyNameAtomic, int index, BeanEventPropertyGetter nestedGetter, EventAdapterService eventAdapterService, Type propertyTypeGetter)
        {
            int propertyIndex = GetAssertIndex(propertyNameAtomic);

            return(new ObjectArrayArrayPONOBeanEntryIndexedPropertyGetter(propertyIndex, index, nestedGetter, eventAdapterService, propertyTypeGetter));
        }