diff --git a/akka-actor/src/main/scala/akka/japi/JavaAPI.scala b/akka-actor/src/main/scala/akka/japi/JavaAPI.scala index f9aa9e5e2b..ab9d82c387 100644 --- a/akka-actor/src/main/scala/akka/japi/JavaAPI.scala +++ b/akka-actor/src/main/scala/akka/japi/JavaAPI.scala @@ -5,10 +5,10 @@ package akka.japi import language.implicitConversions - import scala.Some import scala.reflect.ClassTag import scala.util.control.NoStackTrace +import scala.runtime.AbstractPartialFunction /** * A Function interface. Used to create first-class-functions is Java. @@ -90,13 +90,13 @@ object JavaPartialFunction { * does not throw `noMatch()` it will continue with calling * `PurePartialFunction.apply(x, false)`. */ -abstract class JavaPartialFunction[A, B] extends scala.runtime.AbstractFunction1[A, B] with PartialFunction[A, B] { +abstract class JavaPartialFunction[A, B] extends AbstractPartialFunction[A, B] { import JavaPartialFunction._ def apply(x: A, isCheck: Boolean): B final def isDefinedAt(x: A): Boolean = try { apply(x, true); true } catch { case NoMatch ⇒ false } - final def apply(x: A): B = try apply(x, false) catch { case NoMatch ⇒ throw new MatchError(x) } + final override def apply(x: A): B = try apply(x, false) catch { case NoMatch ⇒ throw new MatchError(x) } final override def applyOrElse[A1 <: A, B1 >: B](x: A1, default: A1 ⇒ B1): B1 = try apply(x, false) catch { case NoMatch ⇒ default(x) } } diff --git a/akka-testkit/src/main/scala/akka/testkit/TestKit.scala b/akka-testkit/src/main/scala/akka/testkit/TestKit.scala index 371caa2894..064105adec 100644 --- a/akka-testkit/src/main/scala/akka/testkit/TestKit.scala +++ b/akka-testkit/src/main/scala/akka/testkit/TestKit.scala @@ -729,12 +729,12 @@ trait DefaultTimeout { this: TestKit ⇒ * This class is used internal to JavaTestKit and should not be extended * by client code directly. */ -private[testkit] abstract class CachingPartialFunction[A, B <: AnyRef] extends scala.runtime.AbstractFunction1[A, B] with PartialFunction[A, B] { +private[testkit] abstract class CachingPartialFunction[A, B <: AnyRef] extends scala.runtime.AbstractPartialFunction[A, B] { import akka.japi.JavaPartialFunction._ def `match`(x: A): B var cache: B = _ final def isDefinedAt(x: A): Boolean = try { cache = `match`(x); true } catch { case NoMatch ⇒ cache = null.asInstanceOf[B]; false } - final def apply(x: A): B = cache + final override def apply(x: A): B = cache }