List of usage examples for org.springframework.messaging.support NativeMessageHeaderAccessor NATIVE_HEADERS
String NATIVE_HEADERS
To view the source code for org.springframework.messaging.support NativeMessageHeaderAccessor NATIVE_HEADERS.
Click Source Link
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); } }