Class DynamicSimplePropertyGetterByMethod
java.lang.Object
com.espertech.esper.common.internal.event.bean.getter.DynamicPropertyGetterByMethodBase
com.espertech.esper.common.internal.event.bean.getter.DynamicSimplePropertyGetterByMethod
- All Implemented Interfaces:
EventPropertyGetter
,EventPropertyValueGetter
,BeanEventPropertyGetter
,EventPropertyGetterSPI
,EventPropertyValueGetterForge
Getter for a dynamic property (syntax field.inner?), 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
ConstructorDescriptionDynamicSimplePropertyGetterByMethod
(String fieldName, 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 Object
dynamicSimplePropertyCall
(DynamicPropertyDescriptorByMethod descriptor, Object underlying) NOTE: Code-generation-invoked method, method name and parameter order mattersstatic Method
dynamicSimplePropertyDetermineMethod
(String getterMethodName, String isMethodName, Class clazz) 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 codegenMethodScope, 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
-
DynamicSimplePropertyGetterByMethod
public DynamicSimplePropertyGetterByMethod(String fieldName, EventBeanTypedEventFactory eventBeanTypedEventFactory, BeanEventTypeFactory beanEventTypeFactory)
-
-
Method Details
-
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
-
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
-
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 codegenMethodScope, CodegenClassScope codegenClassScope) -
dynamicSimplePropertyCall
public static Object dynamicSimplePropertyCall(DynamicPropertyDescriptorByMethod descriptor, Object underlying) NOTE: Code-generation-invoked method, method name and parameter order matters- Parameters:
descriptor
- descunderlying
- underlying- Returns:
- value
-
dynamicSimplePropertyDetermineMethod
public static Method dynamicSimplePropertyDetermineMethod(String getterMethodName, String isMethodName, Class clazz) NOTE: Code-generation-invoked method, method name and parameter order matters- Parameters:
getterMethodName
- getterisMethodName
- is-methodclazz
- class- Returns:
- method or null
-