Class Handler.DelegatingHandler<M>

java.lang.Object
io.fluxzero.common.handling.Handler.DelegatingHandler<M>
Type Parameters:
M - the message type
All Implemented Interfaces:
Handler<M>
Enclosing interface:
Handler<M>

public abstract static class Handler.DelegatingHandler<M> extends Object implements Handler<M>
Abstract base class for Handler implementations that delegate to another handler.

This is useful for decorating or extending handler behavior while preserving its target class and delegation logic.

  • Field Details

    • delegate

      protected final Handler<M> delegate
  • Constructor Details

    • DelegatingHandler

      public DelegatingHandler()
  • Method Details

    • getTargetClass

      public Class<?> getTargetClass()
      Description copied from interface: Handler
      Returns the class of the handler's target object. This may be used for reflective operations, logging, or framework-level behavior.
      Specified by:
      getTargetClass in interface Handler<M>
      Returns:
      the class of the handler's target
    • getHandlerMethodOrNull

      public HandlerMethod<M> getHandlerMethodOrNull(M message)
      Description copied from interface: Handler
      Returns a reusable HandlerMethod capable of processing the given message, or null when 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 null and rely on Handler.getInvokerOrNull(Object).

      Specified by:
      getHandlerMethodOrNull in interface Handler<M>
      Parameters:
      message - the message to be handled
      Returns:
      a handler method if this handler can handle the message through a reusable method; null otherwise
    • getHandlerMethodPlanOrNull

      public HandlerMethodPlan<M> getHandlerMethodPlanOrNull(M message)
      Description copied from interface: Handler
      Returns a reusable plan for the handler method selected for this message.

      The default asks Handler.getHandlerMethodPlanner() to prepare the plan. A null result means that this handler cannot safely prepare the invocation, so the caller should use Handler.getInvokerOrNull(Object) or Handler.getHandlerMethodOrNull(Object) instead.

      Specified by:
      getHandlerMethodPlanOrNull in interface Handler<M>
      Parameters:
      message - the message to match
      Returns:
      the prepared invocation plan, or null when preparation is unsupported or no method matches
    • getHandlerMethodPlanner

      public HandlerMethodPlanner<M> getHandlerMethodPlanner()
      Description copied from interface: Handler
      Returns 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:
      getHandlerMethodPlanner in interface Handler<M>
      Returns:
      a thread-safe handler method planner, or null when this handler does not support preparation
    • toString

      public String toString()
      Overrides:
      toString in class Object