summaryrefslogtreecommitdiff
path: root/src/actors
diff options
context:
space:
mode:
authorLukas Rytz <lukas.rytz@epfl.ch>2010-11-30 15:38:56 +0000
committerLukas Rytz <lukas.rytz@epfl.ch>2010-11-30 15:38:56 +0000
commit4be5e11cccace4974ed9a449052455392570139f (patch)
tree88c86bc65b88df08b48584ed791acd1619983c0c /src/actors
parent402d96dd3fab6ae677966a9a258c00b3f34a37ed (diff)
downloadscala-4be5e11cccace4974ed9a449052455392570139f.tar.gz
scala-4be5e11cccace4974ed9a449052455392570139f.tar.bz2
scala-4be5e11cccace4974ed9a449052455392570139f.zip
Deprecated the @serializable annotation, introd...
Deprecated the @serializable annotation, introduce a new trait "scala.Serializable" which has to be extended instead (cross-platform). Known issues: - Companion objects of serializable classes (including case classes) are automatically made serializable. However, they don't extend "Serializable" statically because of the known difficulty (should be done before typing, but hard). - Writing "case class C() extends Serializable" gives "error: trait Serializable is inherited twice" - Functions are serializable, but don't extend Serializable dynamically (could be fixed by making FunctionN Serializable - shouldn't we?) Note that @SerialVersionUID continues to be an annotation; it generates a static field, which is not possible otherwise in scala. Review by dragos, extempore. Question to dragos: in JavaPlatform.isMaybeBoxed, why is there a test for "JavaSerializableClass"? Is that correct?
Diffstat (limited to 'src/actors')
-rw-r--r--src/actors/scala/actors/Actor.scala4
-rw-r--r--src/actors/scala/actors/MessageQueue.scala8
-rw-r--r--src/actors/scala/actors/remote/Proxy.scala12
3 files changed, 10 insertions, 14 deletions
diff --git a/src/actors/scala/actors/Actor.scala b/src/actors/scala/actors/Actor.scala
index d92dab9b17..77b55e288c 100644
--- a/src/actors/scala/actors/Actor.scala
+++ b/src/actors/scala/actors/Actor.scala
@@ -417,8 +417,8 @@ object Actor extends Combinators {
* @define actor actor
* @define channel actor's mailbox
*/
-@serializable @SerialVersionUID(-781154067877019505L)
-trait Actor extends AbstractActor with ReplyReactor with ActorCanReply with InputChannel[Any] {
+@SerialVersionUID(-781154067877019505L)
+trait Actor extends AbstractActor with ReplyReactor with ActorCanReply with InputChannel[Any] with Serializable {
/* The following two fields are only used when the actor
* suspends by blocking its underlying thread, for example,
diff --git a/src/actors/scala/actors/MessageQueue.scala b/src/actors/scala/actors/MessageQueue.scala
index 6936bf63a8..73537c661a 100644
--- a/src/actors/scala/actors/MessageQueue.scala
+++ b/src/actors/scala/actors/MessageQueue.scala
@@ -15,9 +15,9 @@ package scala.actors
*
* @author Philipp Haller
*/
-@serializable @SerialVersionUID(7124278808020037465L)
+@SerialVersionUID(7124278808020037465L)
@deprecated("this class is going to be removed in a future release")
-class MessageQueueElement(msg: Any, session: OutputChannel[Any], next: MessageQueueElement) extends MQueueElement[Any](msg, session, next) {
+class MessageQueueElement(msg: Any, session: OutputChannel[Any], next: MessageQueueElement) extends MQueueElement[Any](msg, session, next) with Serializable {
def this() = this(null, null, null)
def this(msg: Any, session: OutputChannel[Any]) = this(msg, session, null)
}
@@ -35,9 +35,9 @@ private[actors] class MQueueElement[Msg >: Null](val msg: Msg, val session: Outp
*
* @author Philipp Haller
*/
-@serializable @SerialVersionUID(2168935872884095767L)
+@SerialVersionUID(2168935872884095767L)
@deprecated("this class is going to be removed in a future release")
-class MessageQueue(label: String) extends MQueue[Any](label)
+class MessageQueue(label: String) extends MQueue[Any](label) with Serializable
private[actors] class MQueue[Msg >: Null](protected val label: String) {
protected var first: MQueueElement[Msg] = null
diff --git a/src/actors/scala/actors/remote/Proxy.scala b/src/actors/scala/actors/remote/Proxy.scala
index 625ce8bb0b..8df723adee 100644
--- a/src/actors/scala/actors/remote/Proxy.scala
+++ b/src/actors/scala/actors/remote/Proxy.scala
@@ -15,8 +15,7 @@ import scala.collection.mutable.HashMap
/**
* @author Philipp Haller
*/
-@serializable
-private[remote] class Proxy(node: Node, name: Symbol, @transient var kernel: NetKernel) extends AbstractActor {
+private[remote] class Proxy(node: Node, name: Symbol, @transient var kernel: NetKernel) extends AbstractActor with Serializable {
import java.io.{IOException, ObjectOutputStream, ObjectInputStream}
@transient
@@ -82,8 +81,7 @@ private[remote] class Proxy(node: Node, name: Symbol, @transient var kernel: Net
name+"@"+node
}
-@serializable
-class LinkToFun extends Function2[AbstractActor, Proxy, Unit] {
+class LinkToFun extends Function2[AbstractActor, Proxy, Unit] with Serializable {
def apply(target: AbstractActor, creator: Proxy) {
target.linkTo(creator)
}
@@ -91,8 +89,7 @@ class LinkToFun extends Function2[AbstractActor, Proxy, Unit] {
"<LinkToFun>"
}
-@serializable
-class UnlinkFromFun extends Function2[AbstractActor, Proxy, Unit] {
+class UnlinkFromFun extends Function2[AbstractActor, Proxy, Unit] with Serializable {
def apply(target: AbstractActor, creator: Proxy) {
target.unlinkFrom(creator)
}
@@ -100,8 +97,7 @@ class UnlinkFromFun extends Function2[AbstractActor, Proxy, Unit] {
"<UnlinkFromFun>"
}
-@serializable
-class ExitFun(reason: AnyRef) extends Function2[AbstractActor, Proxy, Unit] {
+class ExitFun(reason: AnyRef) extends Function2[AbstractActor, Proxy, Unit] with Serializable {
def apply(target: AbstractActor, creator: Proxy) {
target.exit(creator, reason)
}