diff --git a/akka-actor/src/main/scala/akka/actor/Props.scala b/akka-actor/src/main/scala/akka/actor/Props.scala
index 323c338196..404966d88f 100644
--- a/akka-actor/src/main/scala/akka/actor/Props.scala
+++ b/akka-actor/src/main/scala/akka/actor/Props.scala
@@ -10,10 +10,9 @@ import akka.util._
import collection.immutable.Stack
/**
- * ActorRef configuration object, this is threadsafe and fully sharable
- *
- * Props() returns default configuration
- * FIXME document me
+ * Factory for Props instances.
+ * Props is a ActorRef configuration object, that is thread safe and fully sharable.
+ * Used when creating new actors through; ActorSystem.actorOf and ActorContext.actorOf.
*/
object Props {
import FaultHandlingStrategy._
@@ -28,54 +27,81 @@ object Props {
case _ ⇒ Escalate
}
final val defaultFaultHandler: FaultHandlingStrategy = OneForOneStrategy(defaultDecider, None, None)
-
final val noHotSwap: Stack[Actor.Receive] = Stack.empty
+ final val empty = Props(new Actor { def receive = Actor.emptyBehavior })
/**
- * The default Props instance, uses the settings from the Props object starting with default*
+ * The default Props instance, uses the settings from the Props object starting with default*.
*/
final val default = new Props()
/**
- * Returns a cached default implementation of Props
+ * Returns a cached default implementation of Props.
*/
def apply(): Props = default
- val empty = Props(new Actor { def receive = Actor.emptyBehavior })
-
/**
* Returns a Props that has default values except for "creator" which will be a function that creates an instance
- * of the supplied type using the default constructor
+ * of the supplied type using the default constructor.
*/
def apply[T <: Actor: ClassManifest]: Props =
default.withCreator(implicitly[ClassManifest[T]].erasure.asInstanceOf[Class[_ <: Actor]].newInstance)
/**
* Returns a Props that has default values except for "creator" which will be a function that creates an instance
- * of the supplied class using the default constructor
+ * of the supplied class using the default constructor.
*/
def apply(actorClass: Class[_ <: Actor]): Props =
default.withCreator(actorClass.newInstance)
/**
* Returns a Props that has default values except for "creator" which will be a function that creates an instance
- * using the supplied thunk
+ * using the supplied thunk.
*/
- def apply(creator: ⇒ Actor): Props = default.withCreator(creator)
+ def apply(creator: ⇒ Actor): Props =
+ default.withCreator(creator)
/**
* Returns a Props that has default values except for "creator" which will be a function that creates an instance
- * using the supplied thunk
+ * using the supplied thunk.
*/
- def apply(creator: Creator[_ <: Actor]): Props = default.withCreator(creator.create)
+ def apply(creator: Creator[_ <: Actor]): Props =
+ default.withCreator(creator.create)
- def apply(behavior: ActorContext ⇒ Actor.Receive): Props = apply(new Actor { def receive = behavior(context) })
+ def apply(behavior: ActorContext ⇒ Actor.Receive): Props =
+ apply(new Actor { def receive = behavior(context) })
- def apply(faultHandler: FaultHandlingStrategy): Props = apply(new Actor { def receive = { case _ ⇒ } }).withFaultHandler(faultHandler)
+ def apply(faultHandler: FaultHandlingStrategy): Props =
+ apply(new Actor { def receive = { case _ ⇒ } }).withFaultHandler(faultHandler)
}
/**
- * ActorRef configuration object, this is thread safe and fully sharable
+ * Props is a ActorRef configuration object, that is thread safe and fully sharable.
+ * Used when creating new actors through; ActorSystem.actorOf and ActorContext.actorOf.
+ *
+ * Examples on Scala API:
+ * {{{
+ * val props = Props[MyActor]
+ * val props = Props(new MyActor)
+ * val props = Props[MyActor].withTimeout(timeout)
+ * val props = Props[MyActor].withFaultHandler(OneForOneStrategy {
+ * case e: IllegalStateException ⇒ Resume
+ * })
+ * }}}
+ *
+ * Examples on Java API:
+ * {{{
+ * Props props = new Props();
+ * Props props = new Props(MyActor.class);
+ * Props props = new Props(new UntypedActorFactory() {
+ * public UntypedActor create() {
+ * return new MyActor();
+ * }
+ * });
+ * Props props = new Props().withCreator(new UntypedActorFactory() { ... });
+ * Props props = new Props().withTimeout(timeout);
+ * Props props = new Props().withFaultHandler(new OneForOneStrategy(...));
+ * }}}
*/
case class Props(creator: () ⇒ Actor = Props.defaultCreator,
@transient dispatcher: MessageDispatcher = Props.defaultDispatcher,
@@ -83,26 +109,8 @@ case class Props(creator: () ⇒ Actor = Props.defaultCreator,
faultHandler: FaultHandlingStrategy = Props.defaultFaultHandler) {
/**
- * Java API
- */
- def this(factory: UntypedActorFactory) = this(
- creator = () ⇒ factory.create(),
- dispatcher = Props.defaultDispatcher,
- timeout = Props.defaultTimeout,
- faultHandler = Props.defaultFaultHandler)
-
- /**
- * Java API
- */
- def this(actorClass: Class[_ <: Actor]) = this(
- creator = () ⇒ actorClass.newInstance,
- dispatcher = Props.defaultDispatcher,
- timeout = Props.defaultTimeout,
- faultHandler = Props.defaultFaultHandler)
-
- /**
- * No-args constructor that sets all the default values
- * Java API
+ * No-args constructor that sets all the default values.
+ * Java API.
*/
def this() = this(
creator = Props.defaultCreator,
@@ -111,39 +119,56 @@ case class Props(creator: () ⇒ Actor = Props.defaultCreator,
faultHandler = Props.defaultFaultHandler)
/**
- * Returns a new Props with the specified creator set
- * Scala API
+ * Java API.
+ */
+ def this(factory: UntypedActorFactory) = this(
+ creator = () ⇒ factory.create(),
+ dispatcher = Props.defaultDispatcher,
+ timeout = Props.defaultTimeout,
+ faultHandler = Props.defaultFaultHandler)
+
+ /**
+ * Java API.
+ */
+ def this(actorClass: Class[_ <: Actor]) = this(
+ creator = () ⇒ actorClass.newInstance,
+ dispatcher = Props.defaultDispatcher,
+ timeout = Props.defaultTimeout,
+ faultHandler = Props.defaultFaultHandler)
+
+ /**
+ * Returns a new Props with the specified creator set.
+ * Scala API.
*/
def withCreator(c: ⇒ Actor) = copy(creator = () ⇒ c)
/**
- * Returns a new Props with the specified creator set
- * Java API
+ * Returns a new Props with the specified creator set.
+ * Java API.
*/
def withCreator(c: Creator[Actor]) = copy(creator = () ⇒ c.create)
/**
- * Returns a new Props with the specified creator set
- * Java API
+ * Returns a new Props with the specified creator set.
+ * Java API.
*/
def withCreator(c: Class[_ <: Actor]) = copy(creator = () ⇒ c.newInstance)
/**
- * Returns a new Props with the specified dispatcher set
- * Java API
+ * Returns a new Props with the specified dispatcher set.
+ * Java API.
*/
def withDispatcher(d: MessageDispatcher) = copy(dispatcher = d)
/**
* Returns a new Props with the specified timeout set
- * Java API
+ * Java API.
*/
def withTimeout(t: Timeout) = copy(timeout = t)
/**
- * Returns a new Props with the specified faulthandler set
- * Java API
+ * Returns a new Props with the specified faulthandler set.
+ * Java API.
*/
def withFaultHandler(f: FaultHandlingStrategy) = copy(faultHandler = f)
-
}