#2776 - deprecating and introducing alternatives for methods and parameters ending with '_?'

This commit is contained in:
Viktor Klang 2012-12-11 16:24:12 +01:00
parent 761f1c6258
commit d0717aaec6
8 changed files with 32 additions and 30 deletions

View file

@ -372,15 +372,15 @@ trait FSM[S, D] extends Listeners with ActorLogging {
* timer does not exist, has previously been canceled or if it was a
* single-shot timer whose message was already received.
*/
@deprecated("Use isTimerActive(name) instead.", "2.2")
final def timerActive_?(name: String) = isTimerActive(name)
@deprecated("use isTimerActive instead", "2.2")
final def timerActive_?(name: String): Boolean = isTimerActive(name)
/**
* Inquire whether the named timer is still active. Returns true unless the
* timer does not exist, has previously been canceled or if it was a
* single-shot timer whose message was already received.
*/
final def isTimerActive(name: String) = timers contains name
final def isTimerActive(name: String): Boolean = timers contains name
/**
* Set state timeout explicitly. This method can safely be used from within a

View file

@ -4,8 +4,6 @@
package akka.actor
import language.existentials
import akka.dispatch._
import akka.japi.Creator
import scala.reflect.ClassTag

View file

@ -128,9 +128,13 @@ object TypedActor extends ExtensionId[TypedActorExtension] with ExtensionIdProvi
case class MethodCall(method: Method, parameters: Array[AnyRef]) {
def isOneWay = method.getReturnType == java.lang.Void.TYPE
def returnsFuture_? = classOf[Future[_]].isAssignableFrom(method.getReturnType)
def returnsJOption_? = classOf[akka.japi.Option[_]].isAssignableFrom(method.getReturnType)
def returnsOption_? = classOf[scala.Option[_]].isAssignableFrom(method.getReturnType)
def returnsFuture = classOf[Future[_]] isAssignableFrom method.getReturnType
def returnsJOption = classOf[akka.japi.Option[_]] isAssignableFrom method.getReturnType
def returnsOption = classOf[scala.Option[_]] isAssignableFrom method.getReturnType
@deprecated("use returnsFuture instead", "2.2") def returnsFuture_? = returnsFuture
@deprecated("use returnsJOption instead", "2.2") def returnsJOption_? = returnsJOption
@deprecated("use returnsOption instead", "2.2") def returnsOption_? = returnsOption
/**
* Invokes the Method on the supplied instance
@ -296,7 +300,7 @@ object TypedActor extends ExtensionId[TypedActorExtension] with ExtensionIdProvi
if (m.isOneWay) m(me)
else {
try {
if (m.returnsFuture_?) {
if (m.returnsFuture) {
val s = sender
m(me).asInstanceOf[Future[Any]] onComplete {
case Failure(f) s ! Status.Failure(f)
@ -400,12 +404,12 @@ object TypedActor extends ExtensionId[TypedActorExtension] with ExtensionIdProvi
case _
import akka.pattern.ask
MethodCall(method, args) match {
case m if m.isOneWay actor ! m; null //Null return value
case m if m.returnsFuture_? ask(actor, m)(timeout)
case m if m.returnsJOption_? || m.returnsOption_?
case m if m.isOneWay actor ! m; null //Null return value
case m if m.returnsFuture ask(actor, m)(timeout)
case m if m.returnsJOption || m.returnsOption
val f = ask(actor, m)(timeout)
(try { Await.ready(f, timeout.duration).value } catch { case _: TimeoutException None }) match {
case None | Some(Success(null)) if (m.returnsJOption_?) JOption.none[Any] else None
case None | Some(Success(null)) if (m.returnsJOption) JOption.none[Any] else None
case Some(t: Try[_]) t.get.asInstanceOf[AnyRef]
}
case m Await.result(ask(actor, m)(timeout), timeout.duration).asInstanceOf[AnyRef]
@ -655,8 +659,8 @@ class TypedActorExtension(system: ExtendedActorSystem) extends TypedActorFactory
/**
* INTERNAL USE ONLY
*/
private[akka] def invocationHandlerFor(typedActor_? : AnyRef): TypedActorInvocationHandler =
if ((typedActor_? ne null) && Proxy.isProxyClass(typedActor_?.getClass)) typedActor_? match {
private[akka] def invocationHandlerFor(@deprecatedName('typedActor_?) typedActor: AnyRef): TypedActorInvocationHandler =
if ((typedActor ne null) && Proxy.isProxyClass(typedActor.getClass)) typedActor match {
case null null
case other Proxy.getInvocationHandler(other) match {
case null null

View file

@ -450,7 +450,6 @@ abstract class MessageDispatcherConfigurator(val config: Config, val prerequisit
}
class ThreadPoolExecutorConfigurator(config: Config, prerequisites: DispatcherPrerequisites) extends ExecutorServiceConfigurator(config, prerequisites) {
import ThreadPoolConfigBuilder.conf_?
val threadPoolConfig: ThreadPoolConfig = createThreadPoolConfigBuilder(config, prerequisites).config
@ -461,15 +460,15 @@ class ThreadPoolExecutorConfigurator(config: Config, prerequisites: DispatcherPr
.setCorePoolSizeFromFactor(config getInt "core-pool-size-min", config getDouble "core-pool-size-factor", config getInt "core-pool-size-max")
.setMaxPoolSizeFromFactor(config getInt "max-pool-size-min", config getDouble "max-pool-size-factor", config getInt "max-pool-size-max")
.configure(
conf_?(Some(config getInt "task-queue-size") flatMap {
Some(config getInt "task-queue-size") flatMap {
case size if size > 0
Some(config getString "task-queue-type") map {
case "array" ThreadPoolConfig.arrayBlockingQueue(size, false) //TODO config fairness?
case "" | "linked" ThreadPoolConfig.linkedBlockingQueue(size)
case x throw new IllegalArgumentException("[%s] is not a valid task-queue-type [array|linked]!" format x)
}
} map { qf (q: ThreadPoolConfigBuilder) q.setQueueFactory(qf) }
case _ None
})(queueFactory _.setQueueFactory(queueFactory)))
})
}
def createExecutorServiceFactory(id: String, threadFactory: ThreadFactory): ExecutorServiceFactory =

View file

@ -99,10 +99,6 @@ case class ThreadPoolConfig(allowCorePoolTimeout: Boolean = ThreadPoolConfig.def
}
}
object ThreadPoolConfigBuilder {
def conf_?[T](opt: Option[T])(fun: (T) ThreadPoolConfigBuilder ThreadPoolConfigBuilder): Option[(ThreadPoolConfigBuilder) ThreadPoolConfigBuilder] = opt map fun
}
/**
* A DSL to configure and create a MessageDispatcher with a ThreadPoolExecutor
*/

View file

@ -30,4 +30,12 @@ API changes to FSM and TestFSMRef
The ``timerActive_?`` method has been deprecated in both the ``FSM`` trait and the ``TestFSMRef``
class. You should now use the ``isTimerActive`` method instead. The old method will remain
throughout 2.2.x. It will be removed in Akka 2.3.
throughout 2.2.x. It will be removed in Akka 2.3.
ThreadPoolConfigBuilder
=======================
``akka.dispatch.ThreadPoolConfigBuilder`` companion object has been removed,
and with it the ``conf_?`` method that was essentially only a type-inferencer aid for creation
of optional transformations on ``ThreadPoolConfigBuilder``.
Instead use: ``option.map(o => (t: ThreadPoolConfigBuilder) => t.op(o))``.

View file

@ -232,7 +232,7 @@ class TestkitDocSpec extends AkkaSpec with DefaultTimeout with ImplicitSender {
//#test-probe-forward
}
"demonstrate " in {
"demonstrate calling thread dispatcher" in {
//#calling-thread-dispatcher
import akka.testkit.CallingThreadDispatcher
val ref = system.actorOf(Props[MyActor].withDispatcher(CallingThreadDispatcher.Id))

View file

@ -75,11 +75,8 @@ class TestFSMRef[S, D, T <: Actor](
*/
def cancelTimer(name: String) { fsm.cancelTimer(name) }
/**
* Proxy for FSM.timerActive_?.
*/
@deprecated("Use isTimerActive(name) instead.", "2.2")
def timerActive_?(name: String) = isTimerActive(name)
@deprecated("Use isTimerActive", "2.2")
def timerActive_?(name: String): Boolean = isTimerActive(name)
/**
* Proxy for FSM.isTimerActive.