public abstract class DynamicPropertyGetterBase extends Object implements BeanEventPropertyGetter
Modifier and Type | Field and Description |
---|---|
protected BeanEventTypeFactory |
beanEventTypeFactory |
protected CopyOnWriteArrayList<DynamicPropertyDescriptor> |
cache |
protected EventBeanTypedEventFactory |
eventBeanTypedEventFactory |
protected CodegenFieldSharable |
sharableCode |
Constructor and Description |
---|
DynamicPropertyGetterBase(EventBeanTypedEventFactory eventBeanTypedEventFactory,
BeanEventTypeFactory beanEventTypeFactory) |
Modifier and Type | Method and Description |
---|---|
static Object |
cacheAndCall(CopyOnWriteArrayList<DynamicPropertyDescriptor> cache,
DynamicPropertyGetterBase getter,
Object object,
EventBeanTypedEventFactory eventBeanTypedEventFactory,
BeanEventTypeFactory beanEventTypeFactory)
NOTE: Code-generation-invoked method, method name and parameter order matters
|
static boolean |
cacheAndExists(CopyOnWriteArrayList<DynamicPropertyDescriptor> cache,
DynamicPropertyGetterBase getter,
Object object,
EventBeanTypedEventFactory eventBeanTypedEventFactory)
NOTE: Code-generation-invoked method, method name and parameter order matters
|
protected CodegenExpression |
cacheAndExistsCodegen(CodegenExpression underlyingExpression,
CodegenMethodScope parent,
CodegenClassScope codegenClassScope) |
protected abstract Object |
call(DynamicPropertyDescriptor descriptor,
Object underlying)
Call the getter to obtains the return result object, or null if no such method exists.
|
protected abstract CodegenExpression |
callCodegen(CodegenExpressionRef desc,
CodegenExpressionRef object,
CodegenMethodScope parent,
CodegenClassScope codegenClassScope) |
protected abstract Method |
determineMethod(Class clazz)
To be implemented to return the method required, or null to indicate an appropriate method could not be found.
|
protected abstract CodegenExpression |
determineMethodCodegen(CodegenExpressionRef clazz,
CodegenMethodScope parent,
CodegenClassScope codegenClassScope) |
static DynamicPropertyDescriptor |
dynamicPropertyCacheAdd(Class clazz,
Method method,
CopyOnWriteArrayList<DynamicPropertyDescriptor> cache)
NOTE: Code-generation-invoked method, method name and parameter order matters
|
static DynamicPropertyDescriptor |
dynamicPropertyCacheCheck(CopyOnWriteArrayList<DynamicPropertyDescriptor> cache,
Object obj)
NOTE: Code-generation-invoked method, method name and parameter order matters
|
CodegenExpression |
eventBeanExistsCodegen(CodegenExpression beanExpression,
CodegenMethodScope codegenMethodScope,
CodegenClassScope codegenClassScope) |
CodegenExpression |
eventBeanFragmentCodegen(CodegenExpression beanExpression,
CodegenMethodScope codegenMethodScope,
CodegenClassScope codegenClassScope) |
CodegenExpression |
eventBeanGetCodegen(CodegenExpression beanExpression,
CodegenMethodScope codegenMethodScope,
CodegenClassScope codegenClassScope) |
Object |
get(EventBean event)
Return the value for the property in the event object specified when the instance was obtained.
|
Object |
getBeanProp(Object object)
Returns the property as an object.
|
Class |
getBeanPropType() |
Object |
getFragment(EventBean eventBean)
|
protected static DynamicPropertyDescriptor |
getPopulateCache(CopyOnWriteArrayList<DynamicPropertyDescriptor> cache,
DynamicPropertyGetterBase dynamicPropertyGetterBase,
Object obj,
EventBeanTypedEventFactory eventBeanTypedEventFactory) |
protected CodegenExpression |
getPopulateCacheCodegen(CodegenExpression memberCache,
CodegenExpressionRef object,
CodegenMethodScope parent,
CodegenClassScope codegenClassScope) |
Class |
getTargetType() |
static PropertyAccessException |
handleException(DynamicPropertyDescriptor descriptor,
Object underlying,
Throwable t)
NOTE: Code-generation-invoked method, method name and parameter order matters
|
boolean |
isBeanExistsProperty(Object object)
Returns true if the dynamic property exists.
|
CodegenExpression |
underlyingFragmentCodegen(CodegenExpression underlyingExpression,
CodegenMethodScope codegenMethodScope,
CodegenClassScope codegenClassScope) |
CodegenExpression |
underlyingGetCodegen(CodegenExpression underlyingExpression,
CodegenMethodScope codegenMethodScope,
CodegenClassScope codegenClassScope) |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
underlyingExistsCodegen
isExistsProperty
protected final EventBeanTypedEventFactory eventBeanTypedEventFactory
protected final BeanEventTypeFactory beanEventTypeFactory
protected final CopyOnWriteArrayList<DynamicPropertyDescriptor> cache
protected final CodegenFieldSharable sharableCode
public DynamicPropertyGetterBase(EventBeanTypedEventFactory eventBeanTypedEventFactory, BeanEventTypeFactory beanEventTypeFactory)
protected abstract Method determineMethod(Class clazz)
clazz
- to search for a matching methodprotected abstract CodegenExpression determineMethodCodegen(CodegenExpressionRef clazz, CodegenMethodScope parent, CodegenClassScope codegenClassScope)
protected abstract Object call(DynamicPropertyDescriptor descriptor, Object underlying)
descriptor
- provides method information for the classunderlying
- is the underlying object to ask for the property valueprotected abstract CodegenExpression callCodegen(CodegenExpressionRef desc, CodegenExpressionRef object, CodegenMethodScope parent, CodegenClassScope codegenClassScope)
public static Object cacheAndCall(CopyOnWriteArrayList<DynamicPropertyDescriptor> cache, DynamicPropertyGetterBase getter, Object object, EventBeanTypedEventFactory eventBeanTypedEventFactory, BeanEventTypeFactory beanEventTypeFactory)
cache
- cachegetter
- getterobject
- objecteventBeanTypedEventFactory
- event serverbeanEventTypeFactory
- bean factorypublic static boolean cacheAndExists(CopyOnWriteArrayList<DynamicPropertyDescriptor> cache, DynamicPropertyGetterBase getter, Object object, EventBeanTypedEventFactory eventBeanTypedEventFactory)
cache
- cachegetter
- getterobject
- objecteventBeanTypedEventFactory
- event serverprotected CodegenExpression cacheAndExistsCodegen(CodegenExpression underlyingExpression, CodegenMethodScope parent, CodegenClassScope codegenClassScope)
public Object getBeanProp(Object object) throws PropertyAccessException
BeanEventPropertyGetter
getBeanProp
in interface BeanEventPropertyGetter
object
- to evaluatePropertyAccessException
- if access failedpublic Class getTargetType()
getTargetType
in interface BeanEventPropertyGetter
public boolean isBeanExistsProperty(Object object)
BeanEventPropertyGetter
isBeanExistsProperty
in interface BeanEventPropertyGetter
object
- to evaluatepublic final Object get(EventBean event) throws PropertyAccessException
EventPropertyValueGetter
get
in interface EventPropertyValueGetter
event
- is the event to get the value of a property fromPropertyAccessException
- to indicate that property access failedpublic Class getBeanPropType()
getBeanPropType
in interface BeanEventPropertyGetter
public CodegenExpression eventBeanGetCodegen(CodegenExpression beanExpression, CodegenMethodScope codegenMethodScope, CodegenClassScope codegenClassScope)
eventBeanGetCodegen
in interface EventPropertyValueGetterForge
public CodegenExpression eventBeanExistsCodegen(CodegenExpression beanExpression, CodegenMethodScope codegenMethodScope, CodegenClassScope codegenClassScope)
eventBeanExistsCodegen
in interface EventPropertyGetterSPI
public CodegenExpression eventBeanFragmentCodegen(CodegenExpression beanExpression, CodegenMethodScope codegenMethodScope, CodegenClassScope codegenClassScope)
eventBeanFragmentCodegen
in interface EventPropertyGetterSPI
public CodegenExpression underlyingGetCodegen(CodegenExpression underlyingExpression, CodegenMethodScope codegenMethodScope, CodegenClassScope codegenClassScope)
underlyingGetCodegen
in interface EventPropertyGetterSPI
public CodegenExpression underlyingFragmentCodegen(CodegenExpression underlyingExpression, CodegenMethodScope codegenMethodScope, CodegenClassScope codegenClassScope)
underlyingFragmentCodegen
in interface EventPropertyGetterSPI
public Object getFragment(EventBean eventBean)
EventPropertyGetter
EventBean
or array of EventBean
for a property name or property expression.
For use with properties whose value is itself an event or whose value can be represented as an event by the underlying event representation.
The EventType
of the EventBean
instance(s) returned by this method can be determined by
EventType.getFragmentType(String)
. Use EventPropertyDescriptor
to
obtain a list of properties that return fragments from an event type.
Returns null if the property value is null or the property value cannot be represented as a fragment by the underlying representation.
getFragment
in interface EventPropertyGetter
eventBean
- is the event to get the fragment value of a propertyprotected static DynamicPropertyDescriptor getPopulateCache(CopyOnWriteArrayList<DynamicPropertyDescriptor> cache, DynamicPropertyGetterBase dynamicPropertyGetterBase, Object obj, EventBeanTypedEventFactory eventBeanTypedEventFactory)
protected CodegenExpression getPopulateCacheCodegen(CodegenExpression memberCache, CodegenExpressionRef object, CodegenMethodScope parent, CodegenClassScope codegenClassScope)
public static DynamicPropertyDescriptor dynamicPropertyCacheCheck(CopyOnWriteArrayList<DynamicPropertyDescriptor> cache, Object obj)
obj
- targetcache
- cachepublic static DynamicPropertyDescriptor dynamicPropertyCacheAdd(Class clazz, Method method, CopyOnWriteArrayList<DynamicPropertyDescriptor> cache)
clazz
- classmethod
- methodcache
- cachepublic static PropertyAccessException handleException(DynamicPropertyDescriptor descriptor, Object underlying, Throwable t)
descriptor
- descriptorunderlying
- underlyingt
- throwableCopyright © 2005–2019. All rights reserved.