com.espertech.esper.event.bean
Class DynamicPropertyGetterBase

java.lang.Object
  extended by com.espertech.esper.event.bean.DynamicPropertyGetterBase
All Implemented Interfaces:
EventPropertyGetter, BeanEventPropertyGetter
Direct Known Subclasses:
DynamicIndexedPropertyGetter, DynamicMappedPropertyGetter, DynamicSimplePropertyGetter

public abstract class DynamicPropertyGetterBase
extends java.lang.Object
implements BeanEventPropertyGetter

Base class for getters for a dynamic property (syntax field.inner?), caches methods to use for classes.


Constructor Summary
DynamicPropertyGetterBase(EventAdapterService eventAdapterService)
          Ctor.
 
Method Summary
protected abstract  java.lang.Object call(DynamicPropertyDescriptor descriptor, java.lang.Object underlying)
          Call the getter to obtains the return result object, or null if no such method exists.
protected abstract  java.lang.reflect.Method determineMethod(java.lang.Class clazz)
          To be implemented to return the method required, or null to indicate an appropriate method could not be found.
 java.lang.Object get(EventBean obj)
          Return the value for the property in the event object specified when the instance was obtained.
 java.lang.Object getBeanProp(java.lang.Object object)
          Returns the property as an object.
 java.lang.Object getFragment(EventBean eventBean)
          Returns EventBean or array of EventBean for a property name or property expression.
 boolean isBeanExistsProperty(java.lang.Object object)
          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.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

DynamicPropertyGetterBase

public DynamicPropertyGetterBase(EventAdapterService eventAdapterService)
Ctor.

Parameters:
eventAdapterService - factory for event beans and event types
Method Detail

determineMethod

protected abstract java.lang.reflect.Method determineMethod(java.lang.Class clazz)
To be implemented to return the method required, or null to indicate an appropriate method could not be found.

Parameters:
clazz - to search for a matching method
Returns:
method if found, or null if no matching method exists

call

protected abstract java.lang.Object call(DynamicPropertyDescriptor descriptor,
                                         java.lang.Object underlying)
Call the getter to obtains the return result object, or null if no such method exists.

Parameters:
descriptor - provides method information for the class
underlying - is the underlying object to ask for the property value
Returns:
underlying

getBeanProp

public java.lang.Object getBeanProp(java.lang.Object object)
                             throws PropertyAccessException
Description copied from interface: BeanEventPropertyGetter
Returns the property as an object.

Specified by:
getBeanProp in interface BeanEventPropertyGetter
Parameters:
object - to evaluate
Returns:
property of object
Throws:
PropertyAccessException - if access failed

isBeanExistsProperty

public boolean isBeanExistsProperty(java.lang.Object object)
Description copied from interface: BeanEventPropertyGetter
Returns true if the dynamic property exists.

Specified by:
isBeanExistsProperty in interface BeanEventPropertyGetter
Parameters:
object - to evaluate
Returns:
indicator if property exists

get

public final java.lang.Object get(EventBean obj)
                           throws PropertyAccessException
Description copied from interface: EventPropertyGetter
Return the value for the property in the event object specified when the instance was obtained. Useful for fast access to event properties. Throws a PropertyAccessException if the getter instance doesn't match the EventType it was obtained from, and to indicate other property access problems.

Specified by:
get in interface EventPropertyGetter
Parameters:
obj - is the event to get the value of a property from
Returns:
value of property in event
Throws:
PropertyAccessException - to indicate that property access failed

isExistsProperty

public boolean isExistsProperty(EventBean eventBean)
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

Specified by:
isExistsProperty in interface EventPropertyGetter
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

getFragment

public java.lang.Object getFragment(EventBean eventBean)
Description copied from interface: EventPropertyGetter
Returns 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.

Specified by:
getFragment in interface EventPropertyGetter
Parameters:
eventBean - is the event to get the fragment value of a property
Returns:
the value of a property as an EventBean or array of EventBean

© 2006-2015 EsperTech Inc.
All rights reserved.
Visit us at espertech.com