Example usage for org.springframework.messaging.support NativeMessageHeaderAccessor NATIVE_HEADERS

List of usage examples for org.springframework.messaging.support NativeMessageHeaderAccessor NATIVE_HEADERS

Introduction

In this page you can find the example usage for org.springframework.messaging.support NativeMessageHeaderAccessor NATIVE_HEADERS.

Prototype

String NATIVE_HEADERS

To view the source code for org.springframework.messaging.support NativeMessageHeaderAccessor NATIVE_HEADERS.

Click Source Link

Document

The header name used to store native headers.

Usage

From source file:org.springframework.cloud.sleuth.instrument.messaging.MessageHeaderPropagation.java

static void removeAnyTraceHeaders(MessageHeaderAccessor accessor, List<String> keysToRemove) {
    for (String keyToRemove : keysToRemove) {
        accessor.removeHeader(keyToRemove);
        if (accessor instanceof NativeMessageHeaderAccessor) {
            NativeMessageHeaderAccessor nativeAccessor = (NativeMessageHeaderAccessor) accessor;
            nativeAccessor.removeNativeHeader(keyToRemove);
        } else {/*from   www  .j a  v a 2s  .  c  om*/
            Object nativeHeaders = accessor.getHeader(NativeMessageHeaderAccessor.NATIVE_HEADERS);
            if (nativeHeaders instanceof Map) {
                ((Map) nativeHeaders).remove(keyToRemove);
            }
        }
    }
}

From source file:org.springframework.cloud.sleuth.instrument.messaging.MessageHeaderPropagation.java

private void doPut(MessageHeaderAccessor accessor, String key, String value) {
    accessor.setHeader(key, value);/*from   w  ww.j  a va  2  s  .  com*/
    if (accessor instanceof NativeMessageHeaderAccessor) {
        NativeMessageHeaderAccessor nativeAccessor = (NativeMessageHeaderAccessor) accessor;
        nativeAccessor.setNativeHeader(key, value);
    } else {
        Object nativeHeaders = accessor.getHeader(NativeMessageHeaderAccessor.NATIVE_HEADERS);
        if (nativeHeaders == null) {
            accessor.setHeader(NativeMessageHeaderAccessor.NATIVE_HEADERS,
                    nativeHeaders = new LinkedMultiValueMap<>());
        }
        if (nativeHeaders instanceof Map<?, ?>) {
            ((Map) nativeHeaders).put(key, Collections.singletonList(value));
        }
    }
}

From source file:org.springframework.cloud.sleuth.instrument.messaging.MessageHeaderPropagation.java

private String doGet(MessageHeaderAccessor accessor, String key) {
    if (accessor instanceof NativeMessageHeaderAccessor) {
        NativeMessageHeaderAccessor nativeAccessor = (NativeMessageHeaderAccessor) accessor;
        String result = nativeAccessor.getFirstNativeHeader(key);
        if (result != null) {
            return result;
        }//from   w w  w.j  ava 2 s  .  c om
    } else {
        Object nativeHeaders = accessor.getHeader(NativeMessageHeaderAccessor.NATIVE_HEADERS);
        if (nativeHeaders instanceof Map) {
            Object result = ((Map) nativeHeaders).get(key);
            if (result instanceof List && !((List) result).isEmpty()) {
                return String.valueOf(((List) result).get(0));
            }
        }
    }
    Object result = accessor.getHeader(key);
    if (result != null) {
        if (result instanceof byte[]) {
            return new String((byte[]) result, StandardCharsets.UTF_8);
        }
        return result.toString();
    }
    return null;
}

From source file:org.springframework.messaging.handler.annotation.reactive.HeaderMethodArgumentResolver.java

@SuppressWarnings("unchecked")
@Nullable/*from   w w w . j  a  va 2  s  . c o  m*/
private Map<String, List<String>> getNativeHeaders(Message<?> message) {
    return (Map<String, List<String>>) message.getHeaders().get(NativeMessageHeaderAccessor.NATIVE_HEADERS);
}

From source file:org.springframework.messaging.handler.annotation.support.HeaderMethodArgumentResolver.java

@SuppressWarnings("unchecked")
private Map<String, List<String>> getNativeHeaders(Message<?> message) {
    return (Map<String, List<String>>) message.getHeaders().get(NativeMessageHeaderAccessor.NATIVE_HEADERS);
}

From source file:org.springframework.messaging.simp.stomp.StompDecoder.java

/**
 * Decode a single STOMP frame from the given {@code buffer} into a {@link Message}.
 *///from   ww w  . ja va 2s . c om
@Nullable
private Message<byte[]> decodeMessage(ByteBuffer byteBuffer, @Nullable MultiValueMap<String, String> headers) {
    Message<byte[]> decodedMessage = null;
    skipLeadingEol(byteBuffer);

    // Explicit mark/reset access via Buffer base type for compatibility
    // with covariant return type on JDK 9's ByteBuffer...
    Buffer buffer = byteBuffer;
    buffer.mark();

    String command = readCommand(byteBuffer);
    if (command.length() > 0) {
        StompHeaderAccessor headerAccessor = null;
        byte[] payload = null;
        if (byteBuffer.remaining() > 0) {
            StompCommand stompCommand = StompCommand.valueOf(command);
            headerAccessor = StompHeaderAccessor.create(stompCommand);
            initHeaders(headerAccessor);
            readHeaders(byteBuffer, headerAccessor);
            payload = readPayload(byteBuffer, headerAccessor);
        }
        if (payload != null) {
            if (payload.length > 0) {
                StompCommand stompCommand = headerAccessor.getCommand();
                if (stompCommand != null && !stompCommand.isBodyAllowed()) {
                    throw new StompConversionException(stompCommand + " shouldn't have a payload: length="
                            + payload.length + ", headers=" + headers);
                }
            }
            headerAccessor.updateSimpMessageHeadersFromStompHeaders();
            headerAccessor.setLeaveMutable(true);
            decodedMessage = MessageBuilder.createMessage(payload, headerAccessor.getMessageHeaders());
            if (logger.isTraceEnabled()) {
                logger.trace("Decoded " + headerAccessor.getDetailedLogMessage(payload));
            }
        } else {
            logger.trace("Incomplete frame, resetting input buffer...");
            if (headers != null && headerAccessor != null) {
                String name = NativeMessageHeaderAccessor.NATIVE_HEADERS;
                @SuppressWarnings("unchecked")
                MultiValueMap<String, String> map = (MultiValueMap<String, String>) headerAccessor
                        .getHeader(name);
                if (map != null) {
                    headers.putAll(map);
                }
            }
            buffer.reset();
        }
    } else {
        StompHeaderAccessor headerAccessor = StompHeaderAccessor.createForHeartbeat();
        initHeaders(headerAccessor);
        headerAccessor.setLeaveMutable(true);
        decodedMessage = MessageBuilder.createMessage(HEARTBEAT_PAYLOAD, headerAccessor.getMessageHeaders());
        if (logger.isTraceEnabled()) {
            logger.trace("Decoded " + headerAccessor.getDetailedLogMessage(null));
        }
    }

    return decodedMessage;
}

From source file:org.springframework.messaging.simp.stomp.StompEncoder.java

private void writeHeaders(StompCommand command, Map<String, Object> headers, byte[] payload,
        DataOutputStream output) throws IOException {

    @SuppressWarnings("unchecked")
    Map<String, List<String>> nativeHeaders = (Map<String, List<String>>) headers
            .get(NativeMessageHeaderAccessor.NATIVE_HEADERS);

    if (logger.isTraceEnabled()) {
        logger.trace("Encoding STOMP " + command + ", headers=" + nativeHeaders);
    }//from w  w  w  .j  a v  a  2 s.  c om

    if (nativeHeaders == null) {
        return;
    }

    boolean shouldEscape = (command != StompCommand.CONNECT && command != StompCommand.CONNECTED);

    for (Entry<String, List<String>> entry : nativeHeaders.entrySet()) {
        if (command.requiresContentLength() && "content-length".equals(entry.getKey())) {
            continue;
        }

        List<String> values = entry.getValue();
        if (StompCommand.CONNECT.equals(command)
                && StompHeaderAccessor.STOMP_PASSCODE_HEADER.equals(entry.getKey())) {
            values = Collections.singletonList(StompHeaderAccessor.getPasscode(headers));
        }

        byte[] encodedKey = encodeHeaderKey(entry.getKey(), shouldEscape);
        for (String value : values) {
            output.write(encodedKey);
            output.write(COLON);
            output.write(encodeHeaderValue(value, shouldEscape));
            output.write(LF);
        }
    }

    if (command.requiresContentLength()) {
        int contentLength = payload.length;
        output.write("content-length:".getBytes(StandardCharsets.UTF_8));
        output.write(Integer.toString(contentLength).getBytes(StandardCharsets.UTF_8));
        output.write(LF);
    }
}