public final List<Message<?>> purge() { List<Message<?>> purgedMessages = new ArrayList<Message<?>>(); for (QueueChannel channel : this.channels) { List<Message<?>> results = (this.selector == null) ? channel.clear() : channel.purge(this.selector); if (results != null) { purgedMessages.addAll(results); } } return purgedMessages; }
@Override public List<Message<?>> purge(MessageSelector selector) { if (selector == null) { return this.clear(); } List<Message<?>> purgedMessages = new ArrayList<>(); Object[] array = this.queue.toArray(); for (Object o : array) { Message<?> message = (Message<?>) o; if (!selector.accept(message) && this.queue.remove(message)) { purgedMessages.add(message); } } return purgedMessages; }
@Test public void move() throws Exception { moveInputChannel.send(message); List<Message<?>> result = outputChannel.clear(); assertThat(result.size(), is(1)); Message<?> resultMessage = result.get(0); File payloadFile = (File) resultMessage.getPayload(); assertThat(payloadFile, is(not(sourceFile))); assertThat(resultMessage.getHeaders().get(FileHeaders.ORIGINAL_FILE, File.class), is(sourceFile)); assertThat(sourceFile.exists(), is(false)); assertThat(payloadFile.exists(), is(true)); }
@Test public void copy() throws Exception { copyInputChannel.send(message); List<Message<?>> result = outputChannel.clear(); assertThat(result.size(), is(1)); Message<?> resultMessage = result.get(0); File payloadFile = (File) resultMessage.getPayload(); assertThat(payloadFile, is(not(sourceFile))); assertThat(resultMessage.getHeaders().get(FileHeaders.ORIGINAL_FILE, File.class), is(sourceFile)); assertThat(sourceFile.exists(), is(true)); assertThat(payloadFile.exists(), is(true)); }
@Test public void testClearEmptyChannel() { QueueChannel channel = new QueueChannel(); List<Message<?>> clearedMessages = channel.clear(); assertNotNull(clearedMessages); assertEquals(0, clearedMessages.size()); }
@Test public void splitDocument() throws Exception { Document doc = XmlTestUtil.getDocumentForString("<orders><order>one</order><order>two</order><order>three</order></orders>"); this.splitter.handleMessage(new GenericMessage<>(doc)); List<Message<?>> docMessages = this.replyChannel.clear(); assertEquals("Wrong number of messages", 3, docMessages.size()); for (Message<?> message : docMessages) { assertThat(message.getPayload(), instanceOf(Node.class)); assertThat(message.getPayload(), not(instanceOf(Document.class))); assertThat(new IntegrationMessageHeaderAccessor(message).getSequenceSize(), greaterThan(0)); } }
@Test public void splitStringXml() throws Exception { String payload = "<orders><order>one</order><order>two</order><order>three</order></orders>"; this.splitter.handleMessage(new GenericMessage<>(payload)); List<Message<?>> docMessages = this.replyChannel.clear(); assertEquals("Wrong number of messages", 3, docMessages.size()); for (Message<?> message : docMessages) { assertThat(message.getPayload(), instanceOf(String.class)); assertThat(new IntegrationMessageHeaderAccessor(message).getSequenceSize(), greaterThan(0)); } }
@Test public void splitDocumentWithCreateDocumentsTrue() throws Exception { this.splitter.setCreateDocuments(true); Document doc = XmlTestUtil.getDocumentForString("<orders><order>one</order><order>two</order><order>three</order></orders>"); this.splitter.handleMessage(new GenericMessage<>(doc)); List<Message<?>> docMessages = this.replyChannel.clear(); assertEquals("Wrong number of messages", 3, docMessages.size()); for (Message<?> message : docMessages) { assertThat(message.getPayload(), instanceOf(Document.class)); Document docPayload = (Document) message.getPayload(); assertEquals("Wrong root element name", "order", docPayload.getDocumentElement().getLocalName()); assertThat(new IntegrationMessageHeaderAccessor(message).getSequenceSize(), greaterThan(0)); } }
@Test public void splitMessageToStringList() throws Exception { GenericMessage<String> message = new GenericMessage<>("foo.bar"); MethodInvokingSplitter splitter = getSplitter("messageToStringList"); QueueChannel replyChannel = new QueueChannel(); splitter.setOutputChannel(replyChannel); splitter.handleMessage(message); List<Message<?>> replies = replyChannel.clear(); Message<?> reply1 = replies.get(0); assertNotNull(reply1); assertEquals("foo", reply1.getPayload()); Message<?> reply2 = replies.get(1); assertNotNull(reply2); assertEquals("bar", reply2.getPayload()); }
@Test public void splitMessageToStringListConfiguredByMethodName() throws Exception { GenericMessage<String> message = new GenericMessage<>("foo.bar"); MethodInvokingSplitter splitter = getSplitter("messageToStringList"); QueueChannel replyChannel = new QueueChannel(); splitter.setOutputChannel(replyChannel); splitter.handleMessage(message); List<Message<?>> replies = replyChannel.clear(); Message<?> reply1 = replies.get(0); assertNotNull(reply1); assertEquals("foo", reply1.getPayload()); Message<?> reply2 = replies.get(1); assertNotNull(reply2); assertEquals("bar", reply2.getPayload()); }
@Test public void splitMessageToMessageArrayConfiguredByMethodName() throws Exception { GenericMessage<String> message = new GenericMessage<>("foo.bar"); MethodInvokingSplitter splitter = getSplitter("messageToMessageArray"); QueueChannel replyChannel = new QueueChannel(); splitter.setOutputChannel(replyChannel); splitter.handleMessage(message); List<Message<?>> replies = replyChannel.clear(); Message<?> reply1 = replies.get(0); assertNotNull(reply1); assertEquals("foo", reply1.getPayload()); Message<?> reply2 = replies.get(1); assertNotNull(reply2); assertEquals("bar", reply2.getPayload()); }
@Test public void splitMessageToStringArray() throws Exception { GenericMessage<String> message = new GenericMessage<>("foo.bar"); MethodInvokingSplitter splitter = getSplitter("messageToStringArray"); QueueChannel replyChannel = new QueueChannel(); splitter.setOutputChannel(replyChannel); splitter.handleMessage(message); List<Message<?>> replies = replyChannel.clear(); Message<?> reply1 = replies.get(0); assertNotNull(reply1); assertEquals("foo", reply1.getPayload()); Message<?> reply2 = replies.get(1); assertNotNull(reply2); assertEquals("bar", reply2.getPayload()); }
@Test public void splitStringToMessageArray() throws Exception { GenericMessage<String> message = new GenericMessage<>("foo.bar"); MethodInvokingSplitter splitter = this.getSplitter("stringToMessageArray"); QueueChannel replyChannel = new QueueChannel(); splitter.setOutputChannel(replyChannel); splitter.handleMessage(message); List<Message<?>> replies = replyChannel.clear(); Message<?> reply1 = replies.get(0); assertNotNull(reply1); assertEquals("foo", reply1.getPayload()); Message<?> reply2 = replies.get(1); assertNotNull(reply2); assertEquals("bar", reply2.getPayload()); }
@Test public void splitStringToMessageArrayConfiguredByMethodName() throws Exception { GenericMessage<String> message = new GenericMessage<>("foo.bar"); MethodInvokingSplitter splitter = getSplitter("stringToMessageArray"); QueueChannel replyChannel = new QueueChannel(); splitter.setOutputChannel(replyChannel); splitter.handleMessage(message); List<Message<?>> replies = replyChannel.clear(); Message<?> reply1 = replies.get(0); assertNotNull(reply1); assertEquals("foo", reply1.getPayload()); Message<?> reply2 = replies.get(1); assertNotNull(reply2); assertEquals("bar", reply2.getPayload()); }
@Test public void splitMessageToMessageArray() throws Exception { GenericMessage<String> message = new GenericMessage<>("foo.bar"); MethodInvokingSplitter splitter = getSplitter("messageToMessageArray"); QueueChannel replyChannel = new QueueChannel(); splitter.setOutputChannel(replyChannel); splitter.handleMessage(message); List<Message<?>> replies = replyChannel.clear(); Message<?> reply1 = replies.get(0); assertNotNull(reply1); assertEquals("foo", reply1.getPayload()); Message<?> reply2 = replies.get(1); assertNotNull(reply2); assertEquals("bar", reply2.getPayload()); }
@Test public void splitMessageToMessageListConfiguredByMethodName() throws Exception { GenericMessage<String> message = new GenericMessage<>("foo.bar"); MethodInvokingSplitter splitter = getSplitter("messageToMessageList"); QueueChannel replyChannel = new QueueChannel(); splitter.setOutputChannel(replyChannel); splitter.handleMessage(message); List<Message<?>> replies = replyChannel.clear(); Message<?> reply1 = replies.get(0); assertNotNull(reply1); assertEquals("foo", reply1.getPayload()); Message<?> reply2 = replies.get(1); assertNotNull(reply2); assertEquals("bar", reply2.getPayload()); }
@Test public void splitStringToStringArray() throws Exception { GenericMessage<String> message = new GenericMessage<>("foo.bar"); MethodInvokingSplitter splitter = getSplitter("stringToStringArray"); QueueChannel replyChannel = new QueueChannel(); splitter.setOutputChannel(replyChannel); splitter.handleMessage(message); List<Message<?>> replies = replyChannel.clear(); Message<?> reply1 = replies.get(0); assertNotNull(reply1); assertEquals("foo", reply1.getPayload()); Message<?> reply2 = replies.get(1); assertNotNull(reply2); assertEquals("bar", reply2.getPayload()); }
@Test public void splitStringToStringList() throws Exception { GenericMessage<String> message = new GenericMessage<>("foo.bar"); MethodInvokingSplitter splitter = getSplitter("stringToStringList"); QueueChannel replyChannel = new QueueChannel(); splitter.setOutputChannel(replyChannel); splitter.handleMessage(message); List<Message<?>> replies = replyChannel.clear(); Message<?> reply1 = replies.get(0); assertNotNull(reply1); assertEquals("foo", reply1.getPayload()); Message<?> reply2 = replies.get(1); assertNotNull(reply2); assertEquals("bar", reply2.getPayload()); }
@Test public void splitMessageHeader() throws Exception { Message<String> message = MessageBuilder.withPayload("ignored").setHeader("testHeader", "foo.bar").build(); MethodInvokingSplitter splitter = this.getSplitter("splitHeader"); QueueChannel replyChannel = new QueueChannel(); splitter.setOutputChannel(replyChannel); splitter.handleMessage(message); List<Message<?>> replies = replyChannel.clear(); Message<?> reply1 = replies.get(0); assertNotNull(reply1); assertEquals("foo", reply1.getPayload()); Message<?> reply2 = replies.get(1); assertNotNull(reply2); assertEquals("bar", reply2.getPayload()); }
@Test public void testClear() { QueueChannel channel = new QueueChannel(2); GenericMessage<String> message1 = new GenericMessage<>("test1"); GenericMessage<String> message2 = new GenericMessage<>("test2"); GenericMessage<String> message3 = new GenericMessage<>("test3"); assertTrue(channel.send(message1)); assertTrue(channel.send(message2)); assertFalse(channel.send(message3, 0)); List<Message<?>> clearedMessages = channel.clear(); assertNotNull(clearedMessages); assertEquals(2, clearedMessages.size()); assertTrue(channel.send(message3)); }