Fix a bug with class casting to the wrong future type
authorChristos KK Loverdos <loverdos@gmail.com>
Fri, 29 Jun 2012 11:40:15 +0000 (14:40 +0300)
committerChristos KK Loverdos <loverdos@gmail.com>
Fri, 29 Jun 2012 11:40:15 +0000 (14:40 +0300)
src/main/scala/gr/grnet/aquarium/service/FinagleRESTService.scala

index 45b0856..2d61e27 100644 (file)
@@ -56,6 +56,7 @@ import com.ckkloverdos.resource.StreamResource
 import com.ckkloverdos.maybe.{Just, Failed}
 import gr.grnet.aquarium.event.model.ExternalEventModel
 import akka.util.{Timeout ⇒ ATimeout, Duration ⇒ ADuration}
+import akka.dispatch.{Future ⇒ AFuture}
 
 /**
  *
@@ -174,12 +175,15 @@ class FinagleRESTService extends Lifecycle with AquariumAwareSkeleton with Confi
         val promise = new TPromise[UserActorResponseMessage[_]]()
 
         val actualWork = akka.pattern.ask(actorRef, request)(ATimeout(ADuration(500, TimeUnit.MILLISECONDS))).
-          asInstanceOf[TFuture[UserActorResponseMessage[_]]]
+          asInstanceOf[AFuture[UserActorResponseMessage[_]]]
 
-        actualWork.
-          onSuccess(promise.setValue).
-          onFailure(promise.setException).
-          onCancellation(promise.setException(new Exception("Processing of %s has been cancelled".format(request))))
+        actualWork.onComplete {
+          case Left(throwable) ⇒
+            promise.setException(throwable)
+
+          case Right(value) ⇒
+            promise.setValue(value)
+        }
 
         promise
       }