in server/src/main/scala/com/twitter/server/handler/ToggleHandler.scala [324:347]
private[this] def toLibraryToggles(toggleMap: ToggleMap): Seq[LibraryToggle] = {
// create a map of id to metadata for faster lookups
val idToMetadata = toggleMap.iterator.map { md => md.id -> md }.toMap
// create a mapping of id to a seq of its components.
val idToComponents = mutable.Map.empty[String, mutable.ArrayBuffer[Component]]
ToggleMap.components(toggleMap).foreach { tm =>
tm.iterator.foreach { md =>
val components: mutable.ArrayBuffer[Component] =
idToComponents.getOrElse(md.id, mutable.ArrayBuffer.empty[Component])
idToComponents.put(md.id, components += Component(md.source, md.fraction))
}
}
idToComponents.map {
case (id, details) =>
val md = idToMetadata(id)
val lastApply = toggleMap(id) match {
case captured: Toggle.Captured => captured.lastApply
case _ => None
}
LibraryToggle(Current(id, md.fraction, lastApply, md.description), details.toSeq)
}.toSeq
}