diff --git a/akka-actor-tests/src/test/java/akka/japi/JavaAPITestBase.java b/akka-actor-tests/src/test/java/akka/japi/JavaAPITestBase.java index 386b849b48..39d42f68de 100644 --- a/akka-actor-tests/src/test/java/akka/japi/JavaAPITestBase.java +++ b/akka-actor-tests/src/test/java/akka/japi/JavaAPITestBase.java @@ -17,6 +17,7 @@ public class JavaAPITestBase { assertFalse(o.isEmpty()); assertTrue(o.isDefined()); assertEquals("abc", o.get()); + assertEquals("abc", o.getOrElse("other")); } @Test @@ -24,10 +25,12 @@ public class JavaAPITestBase { Option o1 = Option.none(); assertTrue(o1.isEmpty()); assertFalse(o1.isDefined()); + assertEquals("other", o1.getOrElse("other")); Option o2 = Option.none(); assertTrue(o2.isEmpty()); assertFalse(o2.isDefined()); + assertEquals("other", o1.getOrElse("other")); } @Test diff --git a/akka-actor/src/main/scala/akka/japi/JavaAPI.scala b/akka-actor/src/main/scala/akka/japi/JavaAPI.scala index 1c468a639f..7d62ebc1ee 100644 --- a/akka-actor/src/main/scala/akka/japi/JavaAPI.scala +++ b/akka-actor/src/main/scala/akka/japi/JavaAPI.scala @@ -130,6 +130,11 @@ abstract class JavaPartialFunction[A, B] extends AbstractPartialFunction[A, B] { */ sealed abstract class Option[A] extends java.lang.Iterable[A] { def get: A + /** + * Returns a if this is some(a) or defaultValue if + * this is none. + */ + def getOrElse[B >: A](defaultValue: B): B def isEmpty: Boolean def isDefined: Boolean = !isEmpty def asScala: scala.Option[A] @@ -167,6 +172,7 @@ object Option { */ final case class Some[A](v: A) extends Option[A] { def get: A = v + def getOrElse[B >: A](defaultValue: B): B = v def isEmpty: Boolean = false def asScala: scala.Some[A] = scala.Some(v) } @@ -176,6 +182,7 @@ object Option { */ private case object None extends Option[Nothing] { def get: Nothing = throw new NoSuchElementException("None.get") + def getOrElse[B](defaultValue: B): B = defaultValue def isEmpty: Boolean = true def asScala: scala.None.type = scala.None }