Class MessageCodec

java.lang.Object
dev.ua.theroer.magicutils.messaging.MessageCodec

public final class MessageCodec extends Object
Serializes MessageEnvelope instances and user payloads to/from bytes.

The envelope header is encoded as compact JSON; the user payload is encoded separately by encodePayload(Object) and carried as opaque bytes inside the envelope. This keeps the transport free of any knowledge of user types and lets a single codec instance be shared across transports.

  • Constructor Details

    • MessageCodec

      public MessageCodec()
      Creates a codec with a default ObjectMapper.
    • MessageCodec

      public MessageCodec(com.fasterxml.jackson.databind.ObjectMapper mapper)
      Creates a codec backed by the given mapper.
      Parameters:
      mapper - Jackson mapper used for both envelope and payloads
  • Method Details

    • mapper

      public com.fasterxml.jackson.databind.ObjectMapper mapper()
      Returns the underlying mapper (for advanced payload handling).
      Returns:
      object mapper
    • encodePayload

      public byte[] encodePayload(Object payload)
      Serializes a user payload object to bytes.
      Parameters:
      payload - payload object (may be null → empty bytes)
      Returns:
      serialized payload bytes
    • decodePayload

      public <T> T decodePayload(byte[] payload, Class<T> type)
      Deserializes payload bytes into the requested type.
      Type Parameters:
      T - payload type
      Parameters:
      payload - serialized payload bytes
      type - target type
      Returns:
      deserialized payload, or null when the bytes are empty
    • encode

      public byte[] encode(MessageEnvelope envelope)
      Serializes a full envelope (header + embedded payload) to bytes.
      Parameters:
      envelope - envelope to encode
      Returns:
      serialized envelope bytes
    • decode

      public MessageEnvelope decode(byte[] bytes)
      Deserializes envelope bytes back into an MessageEnvelope.
      Parameters:
      bytes - serialized envelope bytes
      Returns:
      decoded envelope