/** * A variation of {@link #getAccessor(org.springframework.messaging.Message, Class)} with a {@code * MessageHeaders} instance instead of a {@code Message}. * * <p>This is for cases when a full message may not have been created yet. * * @return an accessor instance of the specified type, or {@code null} if none * @since 4.1 */ @SuppressWarnings("unchecked") public static <T extends MessageHeaderAccessor> T getAccessor( MessageHeaders messageHeaders, Class<T> requiredType) { if (messageHeaders instanceof MutableMessageHeaders) { MutableMessageHeaders mutableHeaders = (MutableMessageHeaders) messageHeaders; MessageHeaderAccessor headerAccessor = mutableHeaders.getMessageHeaderAccessor(); if (requiredType.isAssignableFrom(headerAccessor.getClass())) { return (T) headerAccessor; } } return null; }