Example usage for org.springframework.integration.file.tail FileTailingMessageProducerSupport start

List of usage examples for org.springframework.integration.file.tail FileTailingMessageProducerSupport start

Introduction

In this page you can find the example usage for org.springframework.integration.file.tail FileTailingMessageProducerSupport start.

Prototype

@Override
    public final void start() 

Source Link

Usage

From source file:org.springframework.integration.file.tail.FileTailingMessageProducerTests.java

private void testGuts(FileTailingMessageProducerSupport adapter, String field) throws Exception {
    this.adapter = adapter;
    final List<FileTailingEvent> events = new ArrayList<FileTailingEvent>();
    adapter.setApplicationEventPublisher(new ApplicationEventPublisher() {
        @Override/*from ww w . j a v  a2 s .  c o  m*/
        public void publishEvent(ApplicationEvent event) {
            FileTailingEvent tailEvent = (FileTailingEvent) event;
            logger.warn(event);
            events.add(tailEvent);
        }
    });
    adapter.setFile(new File(testDir, "foo"));
    QueueChannel outputChannel = new QueueChannel();
    adapter.setOutputChannel(outputChannel);
    adapter.setTailAttemptsDelay(500);
    adapter.afterPropertiesSet();
    File file = new File(testDir, "foo");
    File renamed = new File(testDir, "bar");
    file.delete();
    renamed.delete();
    adapter.start();
    waitForField(adapter, field);
    FileOutputStream foo = new FileOutputStream(file);
    for (int i = 0; i < 50; i++) {
        foo.write(("hello" + i + "\n").getBytes());
    }
    foo.flush();
    foo.close();
    for (int i = 0; i < 50; i++) {
        Message<?> message = outputChannel.receive(5000);
        assertNotNull("expected a non-null message", message);
        assertEquals("hello" + i, message.getPayload());
    }
    file.renameTo(renamed);
    file = new File(testDir, "foo");
    foo = new FileOutputStream(file);
    if (adapter instanceof ApacheCommonsFileTailingMessageProducer) {
        Thread.sleep(1000);
    }
    for (int i = 50; i < 100; i++) {
        foo.write(("hello" + i + "\n").getBytes());
    }
    foo.flush();
    foo.close();
    for (int i = 50; i < 100; i++) {
        Message<?> message = outputChannel.receive(10000);
        assertNotNull("expected a non-null message", message);
        assertEquals("hello" + i, message.getPayload());
    }
}