public class NamedEventInterceptorBuilder extends Object implements ParameterizedBuilder<com.tangosol.net.events.internal.NamedEventInterceptor>, BuilderCustomization<EventInterceptor>
NamedEventInterceptor
, which wraps an EventInterceptor
. The
wrapped EventInterceptor will be constructed based on its instance /
class-scheme XML declaration, honoring any init-params
defined.
The construction of a NamedEventInterceptor allows metadata associated
with the EventInterceptor to be held. This metadata is used to determine
eligibility against EventDispatcher
s and
for registration purposes.
In addition to XML being used as input in defining an EventInterceptor and
its metadata the presence of an annotation (Interceptor
) can also
contribute. This annotation can define the identifier for this interceptor,
the event types to subscribe to and whether to be placed first in the chain
of EventInterceptors (Interceptor.Order.HIGH
.
NamedEventInterceptor objects also use class level generic type definitions as input for configuration. The generic type definition allows EventInterceptor implementations to restrict on event types by narrowing the type definition within the reference to the EventInterceptor interface. For example, the following interceptor restricts to only accept transfer events:
class MyInterceptor
implements EventInterceptor<TransferEvent>
{
public void onEvent(TransferEvent event);
}
The precedence, in highest order first reading left to right, for
configuration is as follows:
XML -> Annotation -> Generic Type Bounds
ParameterizedBuilder.ReflectionSupport
Constructor and Description |
---|
NamedEventInterceptorBuilder() |
Modifier and Type | Method and Description |
---|---|
ParameterizedBuilder<EventInterceptor> |
getCustomBuilder()
Obtains the custom
ParameterizedBuilder . |
String |
getName()
Get the logical name / identifier for this
EventInterceptor . |
Interceptor.Order |
getOrder()
Return the
Interceptor.Order of this interceptor. |
RegistrationBehavior |
getRegistrationBehavior()
Returns the behavior upon duplicate registration.
|
boolean |
isFirst()
Whether this
EventInterceptor should be head of the stack. |
com.tangosol.net.events.internal.NamedEventInterceptor |
realize(com.tangosol.config.expression.ParameterResolver resolver,
ClassLoader loader,
ParameterList listParameters)
Realizes (creates if necessary) an instance of a object of type T, using the provided
ParameterResolver
to resolve values any referenced Parameter s. |
void |
setCustomBuilder(ParameterizedBuilder<EventInterceptor> bldr)
Sets the
ParameterizedBuilder to be used as the alternate builder. |
NamedEventInterceptorBuilder |
setName(String sName)
Set the logical name / identifier for this
EventInterceptor . |
NamedEventInterceptorBuilder |
setOrder(Interceptor.Order order)
Set the
EventInterceptor 's order (HIGH || LOW), hence
whether it should be at the start of the chain of interceptors. |
NamedEventInterceptorBuilder |
setRegistrationBehavior(RegistrationBehavior behavior)
Specifies the behavior upon duplicate registration.
|
String |
toString() |
public com.tangosol.net.events.internal.NamedEventInterceptor realize(com.tangosol.config.expression.ParameterResolver resolver, ClassLoader loader, ParameterList listParameters)
ParameterResolver
to resolve values any referenced Parameter
s.realize
in interface ParameterizedBuilder<com.tangosol.net.events.internal.NamedEventInterceptor>
resolver
- the ParameterResolver
for resolving named Parameter
sloader
- the ClassLoader
for loading any necessary classes and if null
the
ClassLoader
used to load the builder will be used insteadlistParameters
- an optional ParameterList
(may be null
) to be used for realizing the
instance, eg: used as constructor parameterspublic ParameterizedBuilder<EventInterceptor> getCustomBuilder()
ParameterizedBuilder
.getCustomBuilder
in interface BuilderCustomization<EventInterceptor>
ParameterizedBuilder
public void setCustomBuilder(ParameterizedBuilder<EventInterceptor> bldr)
ParameterizedBuilder
to be used as the alternate builder.setCustomBuilder
in interface BuilderCustomization<EventInterceptor>
bldr
- the ParameterizedBuilderpublic String getName()
EventInterceptor
.EventInterceptor
@Injectable public NamedEventInterceptorBuilder setName(String sName)
EventInterceptor
.sName
- logical name / identifier for this EventInterceptor
.this
builderpublic boolean isFirst()
EventInterceptor
should be head of the stack.EventInterceptor
should be head of the stackpublic Interceptor.Order getOrder()
Interceptor.Order
of this interceptor.Interceptor.Order
of this interceptor@Injectable public NamedEventInterceptorBuilder setOrder(Interceptor.Order order)
EventInterceptor
's order (HIGH || LOW), hence
whether it should be at the start of the chain of interceptors.order
- whether this EventInterceptor
should be
head of the stack based on the values Interceptor.Order.HIGH
or Interceptor.Order.LOW
this
builderpublic RegistrationBehavior getRegistrationBehavior()
@Injectable public NamedEventInterceptorBuilder setRegistrationBehavior(RegistrationBehavior behavior)
behavior
- the behavior upon duplicate registrationthis
builder