@Test public void testIdProvidedNullValue() { Map<String, Object> input = Collections.<String, Object>singletonMap(MessageHeaders.ID, new UUID(0L, 25L)); MessageHeaders headers = new MessageHeaders(input, null, null); assertNotNull(headers.getId()); }
@Test public void testIdProvided() { UUID id = new UUID(0L, 25L); MessageHeaders headers = new MessageHeaders(null, id, null); assertEquals(id, headers.getId()); }
@Test public void subclassWithCustomIdAndNoTimestamp() { final AtomicLong id = new AtomicLong(); @SuppressWarnings("serial") class MyMH extends MessageHeaders { public MyMH() { super(null, new UUID(0, id.incrementAndGet()), -1L); } } MessageHeaders headers = new MyMH(); assertEquals("00000000-0000-0000-0000-000000000001", headers.getId().toString()); assertEquals(1, headers.size()); }
@Test public void testIdNone() { MessageHeaders headers = new MessageHeaders(null, MessageHeaders.ID_VALUE_NONE, null); assertNull(headers.getId()); }
@Test public void testId() { MessageHeaders headers = new MessageHeaders(null); assertNotNull(headers.getId()); }
@Test public void createIdRegenerated() { Message<String> message1 = MessageBuilder.withPayload("test") .setHeader("foo", "bar").build(); Message<String> message2 = MessageBuilder.fromMessage(message1).setHeader("another", 1).build(); assertEquals("bar", message2.getHeaders().get("foo")); assertNotSame(message1.getHeaders().getId(), message2.getHeaders().getId()); }
@Test public void toMessageWithHeaders() { Map<String, Object> map = new HashMap<>(); map.put("foo", "bar"); MessageHeaders headers = new MessageHeaders(map); Message<?> message = this.converter.toMessage("ABC", headers); assertNotNull(message.getHeaders().getId()); assertNotNull(message.getHeaders().getTimestamp()); assertEquals(MimeTypeUtils.TEXT_PLAIN, message.getHeaders().get(MessageHeaders.CONTENT_TYPE)); assertEquals("bar", message.getHeaders().get("foo")); }
@Test public void idGeneratorCustom() { final UUID id = new UUID(0L, 23L); MessageHeaderAccessor accessor = new MessageHeaderAccessor(); accessor.setIdGenerator(() -> id); assertSame(id, accessor.getMessageHeaders().getId()); }
@Test public void idGeneratorDefaultBehavior() { MessageHeaderAccessor accessor = new MessageHeaderAccessor(); assertNotNull(accessor.getMessageHeaders().getId()); }
@Test public void existingHeadersModification() throws InterruptedException { Map<String, Object> map = new HashMap<>(); map.put("foo", "bar"); map.put("bar", "baz"); GenericMessage<String> message = new GenericMessage<>("payload", map); Thread.sleep(50); MessageHeaderAccessor accessor = new MessageHeaderAccessor(message); accessor.setHeader("foo", "BAR"); MessageHeaders actual = accessor.getMessageHeaders(); assertEquals(3, actual.size()); assertNotEquals(message.getHeaders().getId(), actual.getId()); assertEquals("BAR", actual.get("foo")); assertEquals("baz", actual.get("bar")); }
@Test public void testBuildMessageWithoutIdAndTimestamp() { MessageHeaderAccessor headerAccessor = new MessageHeaderAccessor(); headerAccessor.setIdGenerator(new IdGenerator() { @Override public UUID generateId() { return MessageHeaders.ID_VALUE_NONE; } }); Message<?> message = MessageBuilder.createMessage("foo", headerAccessor.getMessageHeaders()); assertNull(message.getHeaders().getId()); assertNull(message.getHeaders().getTimestamp()); }
@Test public void toMessageWithMutableMessageHeaders() { SimpMessageHeaderAccessor accessor = SimpMessageHeaderAccessor.create(SimpMessageType.MESSAGE); accessor.setHeader("foo", "bar"); accessor.setNativeHeader("fooNative", "barNative"); accessor.setLeaveMutable(true); MessageHeaders headers = accessor.getMessageHeaders(); Message<?> message = this.converter.toMessage("ABC", headers); assertSame(headers, message.getHeaders()); assertNull(message.getHeaders().getId()); assertNull(message.getHeaders().getTimestamp()); assertEquals(MimeTypeUtils.TEXT_PLAIN, message.getHeaders().get(MessageHeaders.CONTENT_TYPE)); }
@Test public void messageIdAndTimestampDefaultBehavior() { StompHeaderAccessor headerAccessor = StompHeaderAccessor.create(StompCommand.SEND); MessageHeaders headers = headerAccessor.getMessageHeaders(); assertNull(headers.getId()); assertNull(headers.getTimestamp()); }
@Test public void idTimestampWithMutableHeaders() { MessageHeaderAccessor accessor = new MessageHeaderAccessor(); accessor.setIdGenerator(() -> MessageHeaders.ID_VALUE_NONE); accessor.setEnableTimestamp(false); accessor.setLeaveMutable(true); MessageHeaders headers = accessor.getMessageHeaders(); assertNull(headers.getId()); assertNull(headers.getTimestamp()); final UUID id = new UUID(0L, 23L); accessor.setIdGenerator(() -> id); accessor.setEnableTimestamp(true); accessor.setImmutable(); assertSame(id, accessor.getMessageHeaders().getId()); assertNotNull(headers.getTimestamp()); }
@Test public void messageIdAndTimestampEnabled() { IdTimestampMessageHeaderInitializer headerInitializer = new IdTimestampMessageHeaderInitializer(); headerInitializer.setIdGenerator(new AlternativeJdkIdGenerator()); headerInitializer.setEnableTimestamp(true); StompHeaderAccessor headerAccessor = StompHeaderAccessor.create(StompCommand.SEND); headerInitializer.initHeaders(headerAccessor); assertNotNull(headerAccessor.getMessageHeaders().getId()); assertNotNull(headerAccessor.getMessageHeaders().getTimestamp()); }
@Override public String generateFileName(Message<?> message) { Object filename = this.evaluateExpression(this.expression, message); if (filename instanceof String && StringUtils.hasText((String) filename)) { return (String) filename; } if (message.getPayload() instanceof File) { return ((File) message.getPayload()).getName(); } return message.getHeaders().getId() + ".msg"; }
@Test public void filterAcceptsMessage() { MessageFilter filter = new MessageFilter(message -> true); Message<?> message = new GenericMessage<String>("test"); QueueChannel output = new QueueChannel(); filter.setOutputChannel(output); filter.handleMessage(message); Message<?> received = output.receive(0); assertEquals(message.getPayload(), received.getPayload()); assertEquals(message.getHeaders().getId(), received.getHeaders().getId()); }
@Test public void testFromMessageWithHeadersAndBeanPayload() throws Exception { TestBean payload = new TestBean(); Message<TestBean> testMessage = MessageBuilder.withPayload(payload).build(); JsonOutboundMessageMapper mapper = new JsonOutboundMessageMapper(); String result = mapper.fromMessage(testMessage); assertTrue(result.contains("\"headers\":{")); assertTrue(result.contains("\"timestamp\":" + testMessage.getHeaders().getTimestamp())); assertTrue(result.contains("\"id\":\"" + testMessage.getHeaders().getId() + "\"")); TestBean parsedPayload = extractJsonPayloadToTestBean(result); assertEquals(payload, parsedPayload); }
@Test public void testAddAndRemoveMessageGroup() throws Exception { Message<String> message = MessageBuilder.withPayload("foo").build(); message = messageStore.addMessage(message); assertNotNull(messageStore.removeMessage(message.getHeaders().getId())); }