diff --git a/project/Build.scala b/project/Build.scala index a82be187c..2c27f4844 100644 --- a/project/Build.scala +++ b/project/Build.scala @@ -185,8 +185,8 @@ object SummingbirdBuild extends Build { "com.backtype" % "dfs-datastores" % dfsDatastoresVersion, "com.backtype" % "dfs-datastores-cascading" % dfsDatastoresVersion, "com.twitter" %% "algebird-core" % algebirdVersion, - "com.twitter" %% "algebird-bijection" % algebirdVersion, withCross("com.twitter" %% "bijection-json" % bijectionVersion), + withCross("com.twitter" %% "bijection-algebird" % bijectionVersion), withCross("com.twitter" %% "chill" % chillVersion), "com.twitter" %% "scalding-core" % scaldingVersion, withCross("com.twitter" %% "scalding-commons" % "0.2.0") diff --git a/summingbird-scalding/src/main/scala/com/twitter/summingbird/scalding/ScaldingStore.scala b/summingbird-scalding/src/main/scala/com/twitter/summingbird/scalding/ScaldingStore.scala index 59a612b14..b2f42d305 100644 --- a/summingbird-scalding/src/main/scala/com/twitter/summingbird/scalding/ScaldingStore.scala +++ b/summingbird-scalding/src/main/scala/com/twitter/summingbird/scalding/ScaldingStore.scala @@ -16,7 +16,8 @@ package com.twitter.summingbird.scalding -import com.twitter.algebird.bijection.BijectedSemigroup +import com.twitter.bijection.ImplicitBijection +import com.twitter.bijection.algebird.BijectedSemigroup import com.twitter.algebird.{Monoid, Semigroup} import com.twitter.algebird.{ Universe, Empty, Interval, Intersection, InclusiveLower, ExclusiveUpper, InclusiveUpper } import com.twitter.algebird.monad.{StateWithError, Reader} @@ -134,9 +135,17 @@ trait BatchedScaldingStore[K, V] extends ScaldingStore[K, V] { self => */ def unpackBijectedSemigroup[U]: Option[(Bijection[V, U], Semigroup[U])] = sg match { - case innerSg: BijectedSemigroup[U, V] => Some( - innerSg.bijection -> innerSg.sg - ) + case innerSg: BijectedSemigroup[_, _] => + def getField[F: ClassManifest](fieldName: String): F = { + val f = classOf[BijectedSemigroup[_, _]].getDeclaredField(fieldName) + f.setAccessible(true) + implicitly[ClassManifest[F]] + .erasure.asInstanceOf[Class[F]].cast(f.get(innerSg)) + } + Some(( + getField[ImplicitBijection[U, V]]("bij").bijection.inverse, + getField[Semigroup[U]]("sg") + )) case _ => None }