Class DynamicIndexedPropertyGetterByMethod
java.lang.Object
com.espertech.esper.common.internal.event.bean.getter.DynamicPropertyGetterByMethodBase
com.espertech.esper.common.internal.event.bean.getter.DynamicIndexedPropertyGetterByMethod
- All Implemented Interfaces:
EventPropertyGetter
,EventPropertyValueGetter
,BeanEventPropertyGetter
,EventPropertyGetterSPI
,EventPropertyValueGetterForge
Getter for a dynamic indexed property (syntax field.indexed[0]?), using vanilla reflection.
-
Field Summary
Fields inherited from class com.espertech.esper.common.internal.event.bean.getter.DynamicPropertyGetterByMethodBase
beanEventTypeFactory, cache, eventBeanTypedEventFactory, sharableCode
Fields inherited from interface com.espertech.esper.common.client.EventPropertyValueGetter
EPTYPE, EPTYPEARRAY
-
Constructor Summary
ConstructorDescriptionDynamicIndexedPropertyGetterByMethod
(String fieldName, int index, EventBeanTypedEventFactory eventBeanTypedEventFactory, BeanEventTypeFactory beanEventTypeFactory) -
Method Summary
Modifier and TypeMethodDescriptionprotected Object
call
(DynamicPropertyDescriptorByMethod descriptor, Object underlying) Call the getter to obtains the return result object, or null if no such method exists.protected CodegenExpression
callCodegen
(CodegenExpressionRef desc, CodegenExpressionRef object, CodegenMethodScope parent, CodegenClassScope codegenClassScope) protected Method
determineMethod
(Class clazz) To be implemented to return the method required, or null to indicate an appropriate method could not be found.protected CodegenExpression
determineMethodCodegen
(CodegenExpressionRef clazz, CodegenMethodScope parent, CodegenClassScope codegenClassScope) static boolean
dynamicIndexedPropertyExists
(DynamicPropertyDescriptorByMethod descriptor, Object underlying, int index) NOTE: Code-generation-invoked method, method name and parameter order mattersstatic Object
dynamicIndexedPropertyGet
(DynamicPropertyDescriptorByMethod descriptor, Object underlying, Object[] parameters, int index) NOTE: Code-generation-invoked method, method name and parameter order mattersstatic Method
dynamicIndexPropertyDetermineMethod
(Class clazz, String getterMethodName) NOTE: Code-generation-invoked method, method name and parameter order mattersboolean
isExistsProperty
(EventBean eventBean) Returns true if the property exists, or false if the type does not have such a property.underlyingExistsCodegen
(CodegenExpression underlyingExpression, CodegenMethodScope parent, CodegenClassScope codegenClassScope) Methods inherited from class com.espertech.esper.common.internal.event.bean.getter.DynamicPropertyGetterByMethodBase
cacheAndCall, cacheAndExists, cacheAndExistsCodegen, dynamicPropertyCacheAdd, dynamicPropertyCacheCheck, eventBeanExistsCodegen, eventBeanFragmentCodegen, eventBeanGetCodegen, get, getBeanProp, getBeanPropType, getFragment, getPopulateCache, getPopulateCacheCodegen, getTargetType, handleException, isBeanExistsProperty, underlyingFragmentCodegen, underlyingGetCodegen
-
Constructor Details
-
DynamicIndexedPropertyGetterByMethod
public DynamicIndexedPropertyGetterByMethod(String fieldName, int index, EventBeanTypedEventFactory eventBeanTypedEventFactory, BeanEventTypeFactory beanEventTypeFactory)
-
-
Method Details
-
determineMethod
Description copied from class:DynamicPropertyGetterByMethodBase
To be implemented to return the method required, or null to indicate an appropriate method could not be found.- Specified by:
determineMethod
in classDynamicPropertyGetterByMethodBase
- Parameters:
clazz
- to search for a matching method- Returns:
- method if found, or null if no matching method exists
-
determineMethodCodegen
protected CodegenExpression determineMethodCodegen(CodegenExpressionRef clazz, CodegenMethodScope parent, CodegenClassScope codegenClassScope) - Specified by:
determineMethodCodegen
in classDynamicPropertyGetterByMethodBase
-
call
Description copied from class:DynamicPropertyGetterByMethodBase
Call the getter to obtains the return result object, or null if no such method exists.- Specified by:
call
in classDynamicPropertyGetterByMethodBase
- Parameters:
descriptor
- provides method information for the classunderlying
- is the underlying object to ask for the property value- Returns:
- underlying
-
callCodegen
protected CodegenExpression callCodegen(CodegenExpressionRef desc, CodegenExpressionRef object, CodegenMethodScope parent, CodegenClassScope codegenClassScope) - Specified by:
callCodegen
in classDynamicPropertyGetterByMethodBase
-
isExistsProperty
Description copied from interface:EventPropertyGetter
Returns true if the property exists, or false if the type does not have such a property.Useful for dynamic properties of the syntax "property?" and the dynamic nested/indexed/mapped versions. Dynamic nested properties follow the syntax "property?.nested" which is equivalent to "property?.nested?". If any of the properties in the path of a dynamic nested property return null, the dynamic nested property does not exists and the method returns false.
For non-dynamic properties, this method always returns true since a getter would not be available unless
- Parameters:
eventBean
- is the event to check if the dynamic property exists- Returns:
- indictor whether the property exists, always true for non-dynamic (default) properties
-
underlyingExistsCodegen
public CodegenExpression underlyingExistsCodegen(CodegenExpression underlyingExpression, CodegenMethodScope parent, CodegenClassScope codegenClassScope) -
dynamicIndexPropertyDetermineMethod
NOTE: Code-generation-invoked method, method name and parameter order matters- Parameters:
clazz
- classgetterMethodName
- method- Returns:
- null or method
-
dynamicIndexedPropertyGet
public static Object dynamicIndexedPropertyGet(DynamicPropertyDescriptorByMethod descriptor, Object underlying, Object[] parameters, int index) NOTE: Code-generation-invoked method, method name and parameter order matters- Parameters:
descriptor
- descriptorunderlying
- targetparameters
- paramsindex
- idx- Returns:
- null or method
-
dynamicIndexedPropertyExists
public static boolean dynamicIndexedPropertyExists(DynamicPropertyDescriptorByMethod descriptor, Object underlying, int index) NOTE: Code-generation-invoked method, method name and parameter order matters- Parameters:
descriptor
- descriptorunderlying
- targetindex
- idx- Returns:
- null or method
-