private[this] def loadImpls[T]()

in util-app/src/main/scala/com/twitter/app/LoadService.scala [150:203]


  private[this] def loadImpls[T](iface: Class[T], ifaceName: String): Seq[T] = {
    val loader = iface.getClassLoader

    val denied: Set[String] = loadServiceDenied()

    val cp = new LoadServiceClassPath()
    val whenAbsent = new JFunction[ClassLoader, Seq[ClassPath.LoadServiceInfo]] {
      def apply(loader: ClassLoader): Seq[ClassPath.LoadServiceInfo] = {
        cp.browse(loader).toSeq
      }
    }

    val classNames = for {
      info <- cache.computeIfAbsent(loader, whenAbsent) if info.iface == ifaceName
      className <- info.lines
    } yield className

    val classNamesFromResources = for {
      rsc <- loader.getResources("META-INF/services/" + ifaceName).asScala
      line <- cp.readLines(Source.fromURL(rsc, "UTF-8"))
    } yield line

    (classNames ++ classNamesFromResources).distinct
      .filterNot { className =>
        val isDenied = denied.contains(className)
        if (isDenied)
          log.info(s"LoadService: skipped $className due to deny list flag")
        isDenied
      }
      .flatMap { className =>
        val cls = Class.forName(className)
        if (!iface.isAssignableFrom(cls))
          throw new ServiceConfigurationError(s"$className not a subclass of $ifaceName")

        log.log(
          Level.FINE,
          s"LoadService: loaded instance of class $className for requested service $ifaceName"
        )

        try {
          val instance = cls.newInstance().asInstanceOf[T]
          Some(instance)
        } catch {
          case NonFatal(ex) =>
            log.log(
              Level.SEVERE,
              s"LoadService: failed to instantiate '$className' for the requested "
                + s"service '$ifaceName'",
              ex
            )
            None
        }
      }
  }