Interface MessageHeaders

All Superinterfaces:
Iterable<MessageHeader>

public sealed interface MessageHeaders extends Iterable<MessageHeader>
Immutable ordered messaging headers.

entries() is the authoritative representation and preserves global insertion order, exact names, and duplicate names. Lookup methods are explicitly first- or last-valued because transports assign different meanings to duplicate entries. valuesByName() is a derived grouped view and cannot represent cross-name ordering. Name lookups share an immutable index built lazily on first use. Iterating entries does not build that index. Connectors preserve every supported property and reject unsupported outbound values unless an explicit translation is configured; they must not silently stringify, reorder, or drop entries.

This interface is sealed because its single abstract accessor would otherwise make it a lambda target. Lambdas cannot implement the value-based Object.equals(Object) and Object.hashCode() required by this type. Keeping implementations under Helidon control also guarantees that every instance exposes a stable, immutable, non-null entry list containing no null entries.

  • Method Details

    • empty

      static MessageHeaders empty()
      Empty headers.
      Returns:
      empty headers
    • create

      static MessageHeaders create(List<? extends MessageHeader> entries)
      Create an immutable ordered snapshot.
      Parameters:
      entries - ordered entries
      Returns:
      headers
    • create

      static MessageHeaders create(MessageHeader... entries)
      Create immutable ordered headers.
      Parameters:
      entries - ordered entries
      Returns:
      headers
    • builder

      static MessageHeaders.Builder builder()
      Create a mutable builder which produces immutable snapshots.
      Returns:
      builder
    • builder

      static MessageHeaders.Builder builder(MessageHeaders headers)
      Create a mutable builder from existing headers.
      Parameters:
      headers - existing headers
      Returns:
      builder
      Throws:
      NullPointerException - if headers is null
    • entries

      List<MessageHeader> entries()
      Authoritative ordered immutable entries.
      Returns:
      stable, immutable, non-null entries
    • size

      default int size()
      Number of entries, including duplicate names.
      Returns:
      entry count
    • isEmpty

      default boolean isEmpty()
      Whether there are no entries.
      Returns:
      whether empty
    • contains

      default boolean contains(String name)
      Whether an exact header name is present.
      Parameters:
      name - exact header name
      Returns:
      whether present
    • first

      default Optional<MessageHeaderValue> first(String name)
      First value with an exact header name.
      Parameters:
      name - exact header name
      Returns:
      first value
    • last

      default Optional<MessageHeaderValue> last(String name)
      Last value with an exact header name.
      Parameters:
      name - exact header name
      Returns:
      last value
    • all

      default List<MessageHeaderValue> all(String name)
      All values with an exact header name in entry order.
      Parameters:
      name - exact header name
      Returns:
      immutable values
    • valuesByName

      default Map<String, List<MessageHeaderValue>> valuesByName()
      Immutable grouped values in first-name-occurrence order.

      Values for each name retain their relative order. This derived view does not retain interleaving between different names; use entries() when global order matters.

      Returns:
      immutable grouped values
    • iterator

      default Iterator<MessageHeader> iterator()
      Specified by:
      iterator in interface Iterable<MessageHeader>