diff --git a/akka-actor-tests/src/test/java/akka/actor/InboxJavaAPITest.java b/akka-actor-tests/src/test/java/akka/actor/InboxJavaAPITest.java new file mode 100644 index 0000000000..7535fcc663 --- /dev/null +++ b/akka-actor-tests/src/test/java/akka/actor/InboxJavaAPITest.java @@ -0,0 +1,29 @@ +/** + * Copyright (C) 2009-2014 Typesafe Inc. + */ + +package akka.actor; + +import java.util.concurrent.TimeUnit; +import java.util.concurrent.TimeoutException; +import org.junit.ClassRule; +import org.junit.Test; +import akka.testkit.AkkaJUnitActorSystemResource; +import akka.testkit.AkkaSpec; +import scala.concurrent.duration.FiniteDuration; + +public class InboxJavaAPITest { + + @ClassRule + public static AkkaJUnitActorSystemResource actorSystemResource = new AkkaJUnitActorSystemResource("InboxJavaAPITest", + AkkaSpec.testConf()); + + private final ActorSystem system = actorSystemResource.getSystem(); + + @Test(expected = TimeoutException.class) + public void mustBeAbleToThrowTimeoutException() throws TimeoutException { + Inbox inbox = Inbox.create(system); + inbox.receive(new FiniteDuration(10, TimeUnit.MILLISECONDS)); + } + +} diff --git a/akka-actor/src/main/scala/akka/actor/ActorDSL.scala b/akka-actor/src/main/scala/akka/actor/ActorDSL.scala index 1e8a6f003f..f620159f6c 100644 --- a/akka-actor/src/main/scala/akka/actor/ActorDSL.scala +++ b/akka-actor/src/main/scala/akka/actor/ActorDSL.scala @@ -121,6 +121,7 @@ abstract class Inbox { * up to the specified duration to await reception of a message. If no message * is received a [[java.util.concurrent.TimeoutException]] will be raised. */ + @throws(classOf[java.util.concurrent.TimeoutException]) def receive(max: FiniteDuration): Any /** diff --git a/akka-docs/rst/java/code/docs/actor/InboxDocTest.java b/akka-docs/rst/java/code/docs/actor/InboxDocTest.java index be3ad97df7..017e49b51e 100644 --- a/akka-docs/rst/java/code/docs/actor/InboxDocTest.java +++ b/akka-docs/rst/java/code/docs/actor/InboxDocTest.java @@ -38,7 +38,11 @@ public class InboxDocTest { probe.expectMsgEquals("hello"); probe.send(probe.getLastSender(), "world"); //#inbox - assert inbox.receive(Duration.create(1, TimeUnit.SECONDS)).equals("world"); + try { + assert inbox.receive(Duration.create(1, TimeUnit.SECONDS)).equals("world"); + } catch (java.util.concurrent.TimeoutException e) { + // timeout + } //#inbox } @@ -50,7 +54,11 @@ public class InboxDocTest { final Inbox inbox = Inbox.create(system); inbox.watch(target); target.tell(PoisonPill.getInstance(), ActorRef.noSender()); - assert inbox.receive(Duration.create(1, TimeUnit.SECONDS)) instanceof Terminated; + try { + assert inbox.receive(Duration.create(1, TimeUnit.SECONDS)) instanceof Terminated; + } catch (java.util.concurrent.TimeoutException e) { + // timeout + } //#watch }