Class DefaultHandler<M>
- All Implemented Interfaces:
Handler<M>
-
Nested Class Summary
Nested classes/interfaces inherited from interface Handler
Handler.DelegatingHandler<M> -
Constructor Summary
ConstructorsConstructorDescriptionDefaultHandler(Class<?> targetClass, Function<M, ?> targetSupplier, HandlerMatcher<Object, M> handlerMatcher) -
Method Summary
Modifier and TypeMethodDescriptionstatic <M> DefaultHandler<M> forPayloadTarget(Class<?> targetClass, Function<M, ?> fallbackTargetSupplier, HandlerMatcher<Object, M> handlerMatcher) Creates a handler for methods declared on the message payload itself.static <M> DefaultHandler<M> forTarget(Class<?> targetClass, Object target, HandlerMatcher<Object, M> handlerMatcher) getHandlerMethodOrNull(M message) Returns a reusableHandlerMethodcapable of processing the given message, ornullwhen unavailable.Returns the planner used to select and prepare this handler's methods.getHandlerMethodPlanOrNull(M message) Returns a reusable plan for the handler method selected for this message.getInvoker(M message) Returns aHandlerInvokercapable of processing the given message, if available.getInvokerOrNull(M message) Returns aHandlerInvokercapable of processing the given message, ornullwhen unavailable.Class<?> Returns the class of the handler's target object.toString()
-
Constructor Details
-
DefaultHandler
-
-
Method Details
-
forTarget
public static <M> DefaultHandler<M> forTarget(Class<?> targetClass, Object target, HandlerMatcher<Object, M> handlerMatcher) -
forPayloadTarget
public static <M> DefaultHandler<M> forPayloadTarget(Class<?> targetClass, Function<M, ?> fallbackTargetSupplier, HandlerMatcher<Object, M> handlerMatcher) Creates a handler for methods declared on the message payload itself.Prepared invocations obtain their target from
HandlerInput.getPayload()each time, so a cached plan never retains an earlier payload instance. If an invocation cannot use the prepared path, the supplied fallback resolves the target from the complete message.- Type Parameters:
M- the message type used by the handling pipeline- Parameters:
targetClass- the payload type that declares the handler methodsfallbackTargetSupplier- function that obtains the handler target from a complete messagehandlerMatcher- the matcher used to select a handler method- Returns:
- a handler for methods whose invocation target is the current payload
-
getTargetClass
Description copied from interface:HandlerReturns the class of the handler's target object. This may be used for reflective operations, logging, or framework-level behavior.- Specified by:
getTargetClassin interfaceHandler<M>- Returns:
- the class of the handler's target
-
getInvoker
Description copied from interface:HandlerReturns aHandlerInvokercapable of processing the given message, if available.- Specified by:
getInvokerin interfaceHandler<M>- Parameters:
message- the message to be handled- Returns:
- an optional
HandlerInvokerif this handler can handle the message; otherwiseOptional.empty()
-
getInvokerOrNull
Description copied from interface:HandlerReturns aHandlerInvokercapable of processing the given message, ornullwhen unavailable.This is a lower-allocation counterpart to
Handler.getInvoker(Object)for internal hot paths. Implementations that can resolve an invoker without creating anOptionalshould override this method.- Specified by:
getInvokerOrNullin interfaceHandler<M>- Parameters:
message- the message to be handled- Returns:
- an invoker if this handler can handle the message;
nullotherwise
-
getHandlerMethodOrNull
Description copied from interface:HandlerReturns a reusableHandlerMethodcapable of processing the given message, ornullwhen unavailable.This is an optional lower-allocation path for handlers whose target and method plan can be reused across messages. Implementations that cannot expose a stable method should return
nulland rely onHandler.getInvokerOrNull(Object).- Specified by:
getHandlerMethodOrNullin interfaceHandler<M>- Parameters:
message- the message to be handled- Returns:
- a handler method if this handler can handle the message through a reusable method;
nullotherwise
-
getHandlerMethodPlanOrNull
Description copied from interface:HandlerReturns a reusable plan for the handler method selected for this message.The default asks
Handler.getHandlerMethodPlanner()to prepare the plan. Anullresult means that this handler cannot safely prepare the invocation, so the caller should useHandler.getInvokerOrNull(Object)orHandler.getHandlerMethodOrNull(Object)instead.- Specified by:
getHandlerMethodPlanOrNullin interfaceHandler<M>- Parameters:
message- the message to match- Returns:
- the prepared invocation plan, or
nullwhen preparation is unsupported or no method matches
-
getHandlerMethodPlanner
Description copied from interface:HandlerReturns the planner used to select and prepare this handler's methods.The returned planner may be cached and invoked concurrently. The default returns
null, which keeps implementations that only support regular per-message matching fully compatible.- Specified by:
getHandlerMethodPlannerin interfaceHandler<M>- Returns:
- a thread-safe handler method planner, or
nullwhen this handler does not support preparation
-
toString
-