private boolean isWebSockets(MessageHeaderAccessor headerAccessor) { return headerAccessor.getMessageHeaders().containsKey("stompCommand") || headerAccessor.getMessageHeaders().containsKey("simpMessageType"); }
@Override public void handleMessage(Message<?> message) throws MessagingException { String executionId = message.getHeaders().containsKey("executionId") ? (String) message.getHeaders().get("executionId") : (String) null; if (null != executionId) processEngine.getRuntimeService().trigger(executionId); } };
protected final void doSend(MessageChannel channel, Message<?> message, long timeout) { Assert.notNull(channel, "MessageChannel is required"); Message<?> messageToSend = message; MessageHeaderAccessor accessor = MessageHeaderAccessor.getAccessor(message, MessageHeaderAccessor.class); if (accessor != null && accessor.isMutable()) { accessor.removeHeader(this.sendTimeoutHeader); accessor.removeHeader(this.receiveTimeoutHeader); accessor.setImmutable(); } else if (message.getHeaders().containsKey(this.sendTimeoutHeader) || message.getHeaders().containsKey(this.receiveTimeoutHeader)) { messageToSend = MessageBuilder.fromMessage(message) .setHeader(this.sendTimeoutHeader, null) .setHeader(this.receiveTimeoutHeader, null) .build(); } boolean sent = (timeout >= 0 ? channel.send(messageToSend, timeout) : channel.send(messageToSend)); if (!sent) { throw new MessageDeliveryException(message, "Failed to send message to channel '" + channel + "' within timeout: " + timeout); } }
@Override public <T> EventMessage<T> convertFromInboundMessage(Message<T> message) { MessageHeaders headers = message.getHeaders(); Map<String, ?> metaData = headers.entrySet() .stream() .filter(entry -> !entry.getKey().startsWith(AXON_MESSAGE_PREFIX)) .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); String messageId = Objects.toString(headers.get(MESSAGE_ID)); Long timestamp = headers.getTimestamp(); org.axonframework.messaging.GenericMessage<T> genericMessage = new org.axonframework.messaging.GenericMessage<>(messageId, message.getPayload(), metaData); if (headers.containsKey(AGGREGATE_ID)) { return new GenericDomainEventMessage<>(Objects.toString(headers.get(AGGREGATE_TYPE)), Objects.toString(headers.get(AGGREGATE_ID)), NumberUtils.convertNumberToTargetClass(headers.get(AGGREGATE_SEQ, Number.class), Long.class), genericMessage, () -> Instant.ofEpochMilli(timestamp)); } else { return new GenericEventMessage<>(genericMessage, () -> Instant.ofEpochMilli(timestamp)); } }
@Test public void testRemove() { Message<Integer> message1 = MessageBuilder.withPayload(1) .setHeader("foo", "bar").build(); Message<Integer> message2 = MessageBuilder.fromMessage(message1) .removeHeader("foo") .build(); assertFalse(message2.getHeaders().containsKey("foo")); }
@Test public void testSettingToNullRemoves() { Message<Integer> message1 = MessageBuilder.withPayload(1) .setHeader("foo", "bar").build(); Message<Integer> message2 = MessageBuilder.fromMessage(message1) .setHeader("foo", null) .build(); assertFalse(message2.getHeaders().containsKey("foo")); }
private boolean containsReadOnly(MessageHeaders headers) { if (!ObjectUtils.isEmpty(this.readOnlyHeaders)) { for (String readOnly : this.readOnlyHeaders) { if (headers.containsKey(readOnly)) { return true; } } } return false; }
@Transformer(inputChannel = "gatewayChannel") public String transform(Message<String> message) { assertTrue(message.getHeaders().containsKey("foo")); assertEquals("FOO", message.getHeaders().get("foo")); assertTrue(message.getHeaders().containsKey("calledMethod")); assertEquals("echo", message.getHeaders().get("calledMethod")); return this.handle(message.getPayload()) + Arrays.asList(new Throwable().getStackTrace()).toString(); }
@Bean @ServiceActivator(inputChannel = "annotatedBeanMessageHandlerChannel2") @IdempotentReceiver("idempotentReceiverInterceptor") public MessageHandler messageHandler2() { return message -> { if (message.getHeaders().containsKey(IntegrationMessageHeaderAccessor.DUPLICATE_MESSAGE)) { throw new MessageHandlingException(message, "duplicate message has been received"); } }; }
@Transformer(inputChannel = "gatewayChannel2") @UseSpelInvoker(compilerMode = "${xxxxxxxx:IMMEDIATE}") public String transform2(Message<String> message) { assertTrue(message.getHeaders().containsKey("foo")); assertEquals("FOO", message.getHeaders().get("foo")); assertTrue(message.getHeaders().containsKey("calledMethod")); assertEquals("echo2", message.getHeaders().get("calledMethod")); return this.handle(message.getPayload()) + "2" + Arrays.asList(new Throwable().getStackTrace()).toString(); }
@Test @SuppressWarnings("unchecked") public void testIgnoredHeader() { MessageHandler messageHandler = mock(MessageHandler.class); ((SubscribableChannel) this.errorChannel).subscribe(messageHandler); this.ignoredHeaderGateway.service("foo", "theHeaderValue"); ArgumentCaptor<Message<?>> messageArgumentCaptor = ArgumentCaptor.forClass(Message.class); verify(messageHandler).handleMessage(messageArgumentCaptor.capture()); Message<?> message = messageArgumentCaptor.getValue(); assertFalse(message.getHeaders().containsKey(IGNORE_HEADER)); ((SubscribableChannel) this.errorChannel).unsubscribe(messageHandler); }
@Test public void testPushAndPopSequenceDetailsWhenNoCorrelationIdMutable() throws Exception { Message<Integer> message1 = MutableMessageBuilder.withPayload(1).build(); assertFalse(message1.getHeaders().containsKey(IntegrationMessageHeaderAccessor.SEQUENCE_DETAILS)); Message<Integer> message2 = MutableMessageBuilder.fromMessage(message1).pushSequenceDetails("bar", 1, 1).build(); assertFalse(message2.getHeaders().containsKey(IntegrationMessageHeaderAccessor.SEQUENCE_DETAILS)); Message<Integer> message3 = MutableMessageBuilder.fromMessage(message2).popSequenceDetails().build(); assertFalse(message3.getHeaders().containsKey(IntegrationMessageHeaderAccessor.SEQUENCE_DETAILS)); }
@Test public void testPushAndPopSequenceDetailsWhenNoCorrelationId() throws Exception { Message<Integer> message1 = MessageBuilder.withPayload(1).build(); assertFalse(message1.getHeaders().containsKey(IntegrationMessageHeaderAccessor.SEQUENCE_DETAILS)); Message<Integer> message2 = MessageBuilder.fromMessage(message1).pushSequenceDetails("bar", 1, 1).build(); assertFalse(message2.getHeaders().containsKey(IntegrationMessageHeaderAccessor.SEQUENCE_DETAILS)); Message<Integer> message3 = MessageBuilder.fromMessage(message2).popSequenceDetails().build(); assertFalse(message3.getHeaders().containsKey(IntegrationMessageHeaderAccessor.SEQUENCE_DETAILS)); }
@Test public void testPopSequenceDetailsWhenNotPopped() throws Exception { Message<Integer> message1 = MessageBuilder.withPayload(1).build(); assertFalse(message1.getHeaders().containsKey(IntegrationMessageHeaderAccessor.SEQUENCE_DETAILS)); Message<Integer> message2 = MessageBuilder.fromMessage(message1).popSequenceDetails().build(); assertFalse(message2.getHeaders().containsKey(IntegrationMessageHeaderAccessor.SEQUENCE_DETAILS)); }
@Test public void testPopSequenceDetailsWhenNotPoppedMutable() throws Exception { Message<Integer> message1 = MutableMessageBuilder.withPayload(1).build(); assertFalse(message1.getHeaders().containsKey(IntegrationMessageHeaderAccessor.SEQUENCE_DETAILS)); Message<Integer> message2 = MutableMessageBuilder.fromMessage(message1).popSequenceDetails().build(); assertFalse(message2.getHeaders().containsKey(IntegrationMessageHeaderAccessor.SEQUENCE_DETAILS)); }
@Test public void testPushAndPopSequenceDetails() throws Exception { Message<Integer> message1 = MessageBuilder.withPayload(1).pushSequenceDetails("foo", 1, 2).build(); assertFalse(message1.getHeaders().containsKey(IntegrationMessageHeaderAccessor.SEQUENCE_DETAILS)); Message<Integer> message2 = MessageBuilder.fromMessage(message1).pushSequenceDetails("bar", 1, 1).build(); assertTrue(message2.getHeaders().containsKey(IntegrationMessageHeaderAccessor.SEQUENCE_DETAILS)); Message<Integer> message3 = MessageBuilder.fromMessage(message2).popSequenceDetails().build(); assertFalse(message3.getHeaders().containsKey(IntegrationMessageHeaderAccessor.SEQUENCE_DETAILS)); }
@Test public void testPushAndPopSequenceDetailsMutable() throws Exception { Message<Integer> message1 = MutableMessageBuilder.withPayload(1).pushSequenceDetails("foo", 1, 2).build(); assertFalse(message1.getHeaders().containsKey(IntegrationMessageHeaderAccessor.SEQUENCE_DETAILS)); Message<Integer> message2 = MutableMessageBuilder.fromMessage(message1).pushSequenceDetails("bar", 1, 1).build(); assertTrue(message2.getHeaders().containsKey(IntegrationMessageHeaderAccessor.SEQUENCE_DETAILS)); Message<Integer> message3 = MutableMessageBuilder.fromMessage(message2).popSequenceDetails().build(); assertFalse(message3.getHeaders().containsKey(IntegrationMessageHeaderAccessor.SEQUENCE_DETAILS)); }
@Test public void testPushAndPopSequenceDetailsWhenNoSequenceMutable() throws Exception { Message<Integer> message1 = MutableMessageBuilder.withPayload(1).setCorrelationId("foo").build(); assertFalse(message1.getHeaders().containsKey(IntegrationMessageHeaderAccessor.SEQUENCE_DETAILS)); Message<Integer> message2 = MutableMessageBuilder.fromMessage(message1).pushSequenceDetails("bar", 1, 1).build(); assertTrue(message2.getHeaders().containsKey(IntegrationMessageHeaderAccessor.SEQUENCE_DETAILS)); Message<Integer> message3 = MutableMessageBuilder.fromMessage(message2).popSequenceDetails().build(); assertFalse(message3.getHeaders().containsKey(IntegrationMessageHeaderAccessor.SEQUENCE_DETAILS)); }
@Test public void withProvidedContentTypeAsEmptyString() { ObjectToJsonTransformer transformer = new ObjectToJsonTransformer(); transformer.setContentType(""); Message<?> message = MessageBuilder.withPayload("foo").build(); Message<?> result = transformer.transform(message); assertFalse(result.getHeaders().containsKey(MessageHeaders.CONTENT_TYPE)); }
@Test public void testSettingToNullRemoves() { Message<Integer> message1 = MessageBuilder.withPayload(1) .setHeader("foo", "bar").build(); Message<Integer> message2 = MessageBuilder.fromMessage(message1) .setHeader("foo", null) .build(); assertFalse(message2.getHeaders().containsKey("foo")); }