Class PojoMessageHandlerWholeBase<T>

java.lang.Object
org.apache.tomcat.websocket.pojo.PojoMessageHandlerBase<T>
org.apache.tomcat.websocket.pojo.PojoMessageHandlerWholeBase<T>
Type Parameters:
T - The type of message to handle
All Implemented Interfaces:
MessageHandler, MessageHandler.Whole<T>, WrappedMessageHandler
Direct Known Subclasses:
PojoMessageHandlerWholeBinary, PojoMessageHandlerWholePong, PojoMessageHandlerWholeText

public abstract class PojoMessageHandlerWholeBase<T> extends PojoMessageHandlerBase<T> implements MessageHandler.Whole<T>
Common implementation code for the POJO whole message handlers. All the real work is done in this class and in the superclass.
  • Field Details

    • decoders

      protected final List<Decoder> decoders
      The list of decoders for this message handler.
  • Constructor Details

    • PojoMessageHandlerWholeBase

      public PojoMessageHandlerWholeBase(Object pojo, Method method, Session session, Object[] params, int indexPayload, boolean convert, int indexSession, long maxMessageSize)
      Create a whole message handler.
      Parameters:
      pojo - POJO instance
      method - Method to invoke
      session - WebSocket session
      params - Pre-populated parameter array
      indexPayload - Index of the payload parameter
      convert - Convert the message before passing to the method
      indexSession - Index of the session parameter
      maxMessageSize - Maximum message size
  • Method Details

    • createDecoderInstance

      protected Decoder createDecoderInstance(Class<? extends Decoder> clazz) throws ReflectiveOperationException, NamingException
      Create an instance of the given decoder class.
      Parameters:
      clazz - Decoder class
      Returns:
      New decoder instance
      Throws:
      ReflectiveOperationException - If the decoder cannot be instantiated
      NamingException - If the instance manager fails to create the decoder
    • onMessage

      public final void onMessage(T message)
      Description copied from interface: jakarta.websocket.MessageHandler.Whole
      Called when a whole message is available to be processed.
      Specified by:
      onMessage in interface MessageHandler.Whole<T>
      Parameters:
      message - The message
    • onClose

      protected void onClose()
      Called when the WebSocket session is closed. Destroys all decoders.
    • convert

      protected Object convert(T message)
      Convert the message to the type expected by the target method.
      Parameters:
      message - Message to convert
      Returns:
      Converted message
    • decode

      protected abstract Object decode(T message) throws DecodeException
      Decode the message using the registered decoders.
      Parameters:
      message - Message to decode
      Returns:
      Decoded message or null if no decoder could decode it
      Throws:
      DecodeException - If the message cannot be decoded