in storehaus-algebra/src/main/scala/com/twitter/storehaus/algebra/EnrichedMergeableStore.scala [36:59]
def unpivot[CombinedK, InnerK, InnerV](split: CombinedK => (K, InnerK))
(implicit ev: V <:< Map[InnerK, InnerV], monoid: Semigroup[InnerV])
: MergeableStore[CombinedK, InnerV] =
MergeableStore.unpivot(store.asInstanceOf[MergeableStore[K, Map[InnerK, InnerV]]])(split)
def withSummer(summerCons: SummerConstructor[K]): MergeableStore[K, V] =
MergeableStore.withSummer(store)(summerCons)
def composeKeyMapping[K1](fn: K1 => K): MergeableStore[K1, V] =
MergeableStore.convert(store)(fn)
def mapValues[V1](implicit bij: ImplicitBijection[V1, V]): MergeableStore[K, V1] =
MergeableStore.convert(store)(identity[K])
def convert[K1, V1](fn: K1 => K)(implicit bij: ImplicitBijection[V1, V]): MergeableStore[K1, V1] =
MergeableStore.convert(store)(fn)
def onMergeFailure(rescueException: Throwable => Unit): MergeableStore[K, V] =
new MergeableStoreProxy[K, V] {
override def self = store
override def merge(kv: (K, V)) = store.merge(kv).onFailure(rescueException)
override def multiMerge[K1 <: K](kvs: Map[K1, V]) =
store.multiMerge(kvs).map { case (key, value) => (key, value.onFailure(rescueException)) }
}