diff --git a/project/build.scala b/project/build.scala index 43e618e..c1300ab 100644 --- a/project/build.scala +++ b/project/build.scala @@ -5,8 +5,8 @@ object Common { def settings: Seq[Setting[_]] = Seq( organization := "me.lessis", version := "0.1.0", - crossScalaVersions := Seq("2.9.3", "2.10.0", "2.10.1"), - scalaVersion := "2.9.3", + crossScalaVersions := Seq("2.9.3", "2.10.2"), + scalaVersion := "2.10.2", licenses <<= version(v => Seq("MIT" -> url("https://github.com/softprops/retry/blob/%s/LICENSE" format v))), @@ -50,5 +50,6 @@ object Build extends sbt.Build { lazy val netty = module("netty").dependsOn(core) - lazy val twitter = module("twitter").dependsOn(core) + lazy val twitter = module("twitter") + .dependsOn(core) } diff --git a/project/plugins.sbt b/project/plugins.sbt index b30fbe1..82c8d1f 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -2,4 +2,4 @@ addSbtPlugin("me.lessis" % "ls-sbt" % "0.1.2") addSbtPlugin("com.eed3si9n" % "sbt-buildinfo" % "0.2.0") -addSbtPlugin("com.jsuereth" % "xsbt-gpg-plugin" % "0.6") +//addSbtPlugin("com.jsuereth" % "xsbt-gpg-plugin" % "0.6") diff --git a/twitter/build.sbt b/twitter/build.sbt index a4ac109..97a5bb5 100644 --- a/twitter/build.sbt +++ b/twitter/build.sbt @@ -2,12 +2,12 @@ organization := "me.lessis" name := "retry-twitter" -libraryDependencies += "com.twitter" % "util-core" % "6.3.4" +libraryDependencies ++= Seq( + "com.twitter" %% "util-core" % "6.3.4", + "com.twitter" %% "util-zk" % "6.3.4", + "com.twitter" %% "bijection-util" % "0.5.2" exclude("org.scalacheck", "scalacheck_2.10") exclude("org.scala-tools.testing", "specs_2.10") +) description := "provides a retry.Timer implementation backed by a com.twitter.util.Timer" resolvers += "twitter" at "http://maven.twttr.com/" - -crossScalaVersions := Seq("2.10.0", "2.10.1") - -scalaVersion := "2.10.0" diff --git a/twitter/src/main/scala/retrypolicyconverters.scala b/twitter/src/main/scala/retrypolicyconverters.scala new file mode 100644 index 0000000..4cb05f9 --- /dev/null +++ b/twitter/src/main/scala/retrypolicyconverters.scala @@ -0,0 +1,20 @@ +package retry + +import com.twitter.util.{Future => TwitterFuture, Return, Throw} +import com.twitter.zk.{RetryPolicy => TwitterRetryPolicy} +import com.twitter.bijection.twitter_util.UtilBijections.twitter2ScalaFuture +import com.twitter.bijection.Conversion.asMethod +import scala.concurrent.{Future => ScalaFuture, ExecutionContext} +import scala.concurrent.ExecutionContext.Implicits.global + +object RetryPolicyConverters { + val defaultContext = global + + def retryPolicyToRetrier(policy: TwitterRetryPolicy): ScalaRetryPolicy = new ScalaRetryPolicy(policy, defaultContext) +} + +class ScalaRetryPolicy(policy: TwitterRetryPolicy, context: ExecutionContext) { + implicit val ctxt = context + + def apply[A](op: => ScalaFuture[A]): ScalaFuture[A] = policy(op.as[TwitterFuture[A]]).as[ScalaFuture[A]] +}