public class NestedPropertyGetter extends BaseNativePropertyGetter implements BeanEventPropertyGetter
Constructor and Description |
---|
NestedPropertyGetter(List<EventPropertyGetter> getterChain,
EventAdapterService eventAdapterService,
Class finalPropertyType,
Class finalGenericType)
Ctor.
|
Modifier and Type | Method and Description |
---|---|
CodegenExpression |
codegenEventBeanExists(CodegenExpression beanExpression,
CodegenContext context) |
CodegenExpression |
codegenEventBeanGet(CodegenExpression beanExpression,
CodegenContext context) |
CodegenExpression |
codegenUnderlyingExists(CodegenExpression underlyingExpression,
CodegenContext context) |
CodegenExpression |
codegenUnderlyingGet(CodegenExpression underlyingExpression,
CodegenContext context) |
Object |
get(EventBean eventBean)
Return the value for the property in the event object specified when the instance was obtained.
|
Object |
getBeanProp(Object value)
Returns the property as an object.
|
Class |
getBeanPropType() |
Class |
getTargetType() |
boolean |
isBeanExistsProperty(Object value)
Returns true if the dynamic property exists.
|
boolean |
isExistsProperty(EventBean eventBean)
Returns true if the property exists, or false if the type does not have such a property.
|
codegenEventBeanFragment, codegenUnderlyingFragment, getFragment, getFragmentDynamic, toFragmentArray, toFragmentIterable
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
codegenEventBeanFragment, codegenUnderlyingFragment
getFragment
public NestedPropertyGetter(List<EventPropertyGetter> getterChain, EventAdapterService eventAdapterService, Class finalPropertyType, Class finalGenericType)
getterChain
- is the chain of getters to retrieve each nested propertyeventAdapterService
- is the cache and factory for event bean types and event wrappersfinalPropertyType
- type of the entry returnedfinalGenericType
- generic type parameter of the entry returned, if anypublic Object getBeanProp(Object value) throws PropertyAccessException
BeanEventPropertyGetter
getBeanProp
in interface BeanEventPropertyGetter
value
- to evaluatePropertyAccessException
- if access failedpublic boolean isBeanExistsProperty(Object value)
BeanEventPropertyGetter
isBeanExistsProperty
in interface BeanEventPropertyGetter
value
- to evaluatepublic Object get(EventBean eventBean) throws PropertyAccessException
EventPropertyGetter
get
in interface EventPropertyGetter
eventBean
- is the event to get the value of a property fromPropertyAccessException
- to indicate that property access failedpublic boolean isExistsProperty(EventBean eventBean)
EventPropertyGetter
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
isExistsProperty
in interface EventPropertyGetter
eventBean
- is the event to check if the dynamic property existspublic Class getBeanPropType()
getBeanPropType
in interface BeanEventPropertyGetter
getBeanPropType
in class BaseNativePropertyGetter
public Class getTargetType()
getTargetType
in interface BeanEventPropertyGetter
getTargetType
in class BaseNativePropertyGetter
public CodegenExpression codegenEventBeanGet(CodegenExpression beanExpression, CodegenContext context)
codegenEventBeanGet
in interface EventPropertyGetterSPI
public CodegenExpression codegenEventBeanExists(CodegenExpression beanExpression, CodegenContext context)
codegenEventBeanExists
in interface EventPropertyGetterSPI
public CodegenExpression codegenUnderlyingGet(CodegenExpression underlyingExpression, CodegenContext context)
codegenUnderlyingGet
in interface EventPropertyGetterSPI
public CodegenExpression codegenUnderlyingExists(CodegenExpression underlyingExpression, CodegenContext context)
codegenUnderlyingExists
in interface EventPropertyGetterSPI