Class AuthenticatingInterceptor
- All Implemented Interfaces:
DispatchInterceptor, HandlerDecorator, HandlerInterceptor
-
Nested Class Summary
Nested classes/interfaces inherited from interface HandlerDecorator
HandlerDecorator.MergedDecoratorNested classes/interfaces inherited from interface HandlerInterceptor
HandlerInterceptor.InterceptedHandler, HandlerInterceptor.PreparedHandlerFunction, HandlerInterceptor.PreparedHandlerInputFunction, HandlerInterceptor.PreparedHandlerInputInterceptor, HandlerInterceptor.PreparedHandlerInterceptor, HandlerInterceptor.PreparedInterceptedHandler -
Field Summary
Fields inherited from interface DispatchInterceptor
defaultInterceptors, noOpFields inherited from interface HandlerDecorator
noOpFields inherited from interface HandlerInterceptor
defaultInterceptors -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected Userprotected Userprotected UsergetDispatchUser(Message m, MessageType messageType) interceptDispatch(Message m, MessageType messageType, String topic) Intercepts the dispatch of a message before it is serialized and published or locally handled.interceptHandling(Function<DeserializingMessage, Object> function, HandlerInvoker invoker) Intercepts the message handling logic.protected booleanisEstablishedWebsocketFrame(Message m, MessageType messageType) prepare(HandlerDescriptor handler) Prepares this interceptor for a specific handler method.prepareInput(HandlerDescriptor handler) Prepares this interceptor to run without first creating a complete message.prepareInput(HandlerDescriptor handler, HandlerInput<DeserializingMessage> preparedInput) Prepares this interceptor using both the selected handler method and a representative input.prepareLocalDispatch(LocalDispatchDescriptor descriptor) Prepares this interceptor for repeated local dispatches with the same static message characteristics.protected UserrefreshUser(RefreshableUser refreshableUser, DeserializingMessage m) booleanIndicates whether this interceptor opts into the prepared, mergeable handler wrapper.wrap(Handler<DeserializingMessage> handler) Wraps aHandlerwith this interceptor, producing an intercepted handler.Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface DispatchInterceptor
andThen, interceptDispatch, modifySerializedMessage, monitorDispatch, withNamespaceMethods inherited from interface HandlerDecorator
andThen
-
Constructor Details
-
AuthenticatingInterceptor
public AuthenticatingInterceptor()
-
-
Method Details
-
interceptDispatch
Description copied from interface:DispatchInterceptorIntercepts the dispatch of a message before it is serialized and published or locally handled.You may modify the message or return
nullto block dispatching. Throwing an exception also prevents dispatching.- Specified by:
interceptDispatchin interfaceDispatchInterceptor- Parameters:
m- the message to be dispatchedmessageType- the type of the message (e.g., COMMAND, EVENT, etc.)topic- the target topic or null if not applicable- Returns:
- the modified message, the same message, or
nullto prevent dispatch
-
prepareLocalDispatch
Description copied from interface:DispatchInterceptorPrepares this interceptor for repeated local dispatches with the same static message characteristics.This optional method lets local handling apply an interceptor without creating a complete
Messagefirst. Implementations must preserve the observable behavior ofDispatchInterceptor.interceptDispatch(Message, MessageType, String). Returnnullwhen that is not possible; Fluxzero will then use the regular dispatch path for this payload type.The returned policy may be cached and used concurrently. State belonging to a single dispatch must be stored in the supplied
LocalExecution, not in the policy itself.- Specified by:
prepareLocalDispatchin interfaceDispatchInterceptor- Parameters:
descriptor- payload class, message type, and topic shared by the local dispatches- Returns:
- a thread-safe prepared policy, or
nullto use regular message-based dispatch
-
interceptHandling
public Function<DeserializingMessage, Object> interceptHandling(Function<DeserializingMessage, Object> function, HandlerInvoker invoker) Description copied from interface:HandlerInterceptorIntercepts the message handling logic.The
functionparameter represents the next step in the handling chain— typically the actual message handler. Theinvokerprovides metadata and invocation logic for the underlying handler method.Within this method, an interceptor may:
- Modify the
DeserializingMessagebefore passing it to the handler - Bypass the handler entirely and return a value directly
- Wrap the result after the handler is invoked
Note: Interceptors may return a different
DeserializingMessage, but it must be compatible with a handler method in the same target class. If no suitable handler is found, an exception will be thrown.- Specified by:
interceptHandlingin interfaceHandlerInterceptor- Parameters:
function- the next step in the handler chain (typically the handler itself)invoker- the metadata and execution strategy for the actual handler method- Returns:
- a decorated function that wraps handling behavior
- Modify the
-
prepare
Description copied from interface:HandlerInterceptorPrepares this interceptor for a specific handler method.The returned interceptor is cached and reused concurrently for invocations with the same stable handler metadata. Implementations may use this hook to resolve annotation- or signature-based policy once while keeping message-dependent decisions inside
HandlerInterceptor.PreparedHandlerInterceptor.interceptHandling(DeserializingMessage, HandlerDescriptor, BiFunction, HandlerInterceptor.PreparedHandlerFunction).The default adapter preserves the existing
HandlerInterceptor.interceptHandling(Function, HandlerInvoker)contract and deliberately disables the reusableHandlerMethodpath. Custom interceptors therefore retain their current behavior unless they explicitly opt into preparation.- Specified by:
preparein interfaceHandlerInterceptor- Parameters:
handler- stable metadata for the handler method- Returns:
- a thread-safe prepared interceptor
-
prepareInput
Description copied from interface:HandlerInterceptorPrepares this interceptor to run without first creating a complete message.Return
nullwhen the interceptor requires the regular message-based handling path. The default only supports an interceptor whose prepared behavior is the shared no-op policy, so existing interceptors retain their exact behavior unless they opt in explicitly.The returned policy may be cached and invoked concurrently.
- Specified by:
prepareInputin interfaceHandlerInterceptor- Parameters:
handler- stable information about the selected handler method- Returns:
- a thread-safe payload-first policy, or
nullto use regular message-based handling
-
prepareInput
public HandlerInterceptor.PreparedHandlerInputInterceptor prepareInput(HandlerDescriptor handler, HandlerInput<DeserializingMessage> preparedInput) Description copied from interface:HandlerInterceptorPrepares this interceptor using both the selected handler method and a representative input.Override this overload when the interceptor's ability to use payload-first handling depends on input characteristics. The default delegates to
HandlerInterceptor.prepareInput(HandlerDescriptor).- Specified by:
prepareInputin interfaceHandlerInterceptor- Parameters:
handler- stable information about the selected handler methodpreparedInput- a representative input for the prepared handler plan- Returns:
- a thread-safe payload-first policy, or
nullto use regular message-based handling
-
supportsPreparation
public boolean supportsPreparation()Description copied from interface:HandlerInterceptorIndicates whether this interceptor opts into the prepared, mergeable handler wrapper.The default is
false, preserving the exact wrapper behavior of existing custom interceptors. An interceptor should returntrueonly whenHandlerInterceptor.prepare(HandlerDescriptor)returns a thread-safe plan that fully represents its handling behavior. If a subclass overrides only the legacyHandlerInterceptor.interceptHandling(Function, HandlerInvoker)method, the legacy wrapper is retained automatically.- Specified by:
supportsPreparationin interfaceHandlerInterceptor- Returns:
truewhen this interceptor may be merged into a prepared wrapper
-
getCurrentUser
-
getDispatchUser
-
isEstablishedWebsocketFrame
-
getAuthorizingUser
-
refreshUser
-
wrap
Description copied from interface:HandlerInterceptorWraps aHandlerwith this interceptor, producing an intercepted handler.- Specified by:
wrapin interfaceHandlerDecorator- Specified by:
wrapin interfaceHandlerInterceptor- Parameters:
handler- the original handler to wrap- Returns:
- an intercepted handler that applies this interceptor to all handled messages
-