/** * Copyright (C) 2009-2013 Typesafe Inc. */ package akka.camel; import scala.concurrent.duration.Duration; import scala.concurrent.duration.FiniteDuration; import akka.actor.ActorRef; import akka.actor.ActorSystem; import akka.actor.Props; import akka.testkit.JavaTestKit; import akka.util.Timeout; import scala.concurrent.Await; import scala.concurrent.ExecutionContext; import org.junit.AfterClass; import org.junit.Test; import java.util.concurrent.TimeUnit; import akka.testkit.AkkaSpec; import static org.junit.Assert.*; /** * */ public class ConsumerJavaTestBase { static ActorSystem system = ActorSystem.create("test", AkkaSpec.testConf()); @AfterClass public static void tearDownAfterClass() { system.shutdown(); } @Test public void shouldHandleExceptionThrownByActorAndGenerateCustomResponse() throws Exception { new JavaTestKit(system) {{ String result = new EventFilter(Exception.class) { protected String run() { FiniteDuration duration = Duration.create(1, TimeUnit.SECONDS); Timeout timeout = new Timeout(duration); Camel camel = CamelExtension.get(system); ExecutionContext executionContext = system.dispatcher(); try { Await.result( camel.activationFutureFor(system.actorOf(Props.create(SampleErrorHandlingConsumer.class), "sample-error-handling-consumer"), timeout, executionContext), duration); return camel.template().requestBody("direct:error-handler-test-java", "hello", String.class); } catch (Exception e) { return e.getMessage(); } } }.occurrences(1).exec(); assertEquals("error: hello", result); }}; } }