package org.talend.example; import java.util.concurrent.atomic.AtomicInteger; import javax.naming.Context; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.mock.MockEndpoint; import org.apache.camel.test.junit4.CamelTestSupport; import org.apache.camel.util.jndi.JndiContext; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class CamelBeanWithArgumentTest extends CamelTestSupport { static final transient Logger LOG = LoggerFactory.getLogger(CamelBeanWithArgumentTest.class); @Test public void testTimer() throws Exception { int expected = 10; MockEndpoint mock = getMockEndpoint("mock:result"); mock.expectedMinimumMessageCount(expected); assertMockEndpointsSatisfied(); assertTrue("Should have fired 2 or more times was: " + ExampleBean.COUNTER.get(), ExampleBean.COUNTER.get() >= expected); } @Override protected RouteBuilder createRouteBuilder() throws Exception { return new RouteBuilder() { @Override public void configure() throws Exception { from("timer://eip?fixedRate=true&delay=0&period=500") .beanRef("myBean", "firstMethod") .to("mock:result"); } }; } @Override protected Context createJndiContext() throws Exception { JndiContext answer = new JndiContext(); answer.bind("myBean", new ExampleBean()); return answer; } public static class ExampleBean { public static AtomicInteger COUNTER = new AtomicInteger(0); public void firstMethod() { LOG.info("Invoked someMethod()"); COUNTER.incrementAndGet(); } public void secondMethod() { LOG.info("Invoked secondMethod()"); COUNTER.decrementAndGet(); } } }