All Downloads are FREE. Search and download functionalities are using the official Maven repository.

pureconfig.backend.ConfigFactoryWrapper.scala Maven / Gradle / Ivy

package pureconfig.backend

import java.io.File
import java.net.URL
import java.nio.file.Path

import com.typesafe.config._

import pureconfig._
import pureconfig.backend.ErrorUtil._
import pureconfig.error._

/** A wrapper of `com.typesafe.config.ConfigFactory` whose methods return [[scala.Either]] instead of throwing
  * exceptions
  */
object ConfigFactoryWrapper {
  private[this] val strictSettings = ConfigParseOptions.defaults.setAllowMissing(false)

  /** @see `com.typesafe.config.ConfigFactory.invalidateCaches()` */
  def invalidateCaches(): ConfigReader.Result[Unit] =
    unsafeToReaderResult(ConfigFactory.invalidateCaches())

  /** @see `com.typesafe.config.ConfigFactory.load()` */
  def load(): ConfigReader.Result[Config] =
    unsafeToReaderResult(ConfigFactory.load())

  /** @see `com.typesafe.config.ConfigFactory.load(Config)` */
  def load(conf: Config): ConfigReader.Result[Config] =
    unsafeToReaderResult(ConfigFactory.load(conf))

  /** @see `com.typesafe.config.ConfigFactory.defaultReference()` */
  def defaultReference(): ConfigReader.Result[Config] =
    unsafeToReaderResult(ConfigFactory.defaultReference())

  /** @see `com.typesafe.config.ConfigFactory.defaultApplication()` */
  def defaultApplication(): ConfigReader.Result[Config] =
    unsafeToReaderResult(ConfigFactory.defaultApplication())

  /** @see `com.typesafe.config.ConfigFactory.defaultOverrides()` */
  def defaultOverrides(): ConfigReader.Result[Config] =
    unsafeToReaderResult(ConfigFactory.defaultOverrides())

  /** @see `com.typesafe.config.ConfigFactory.systemProperties()` */
  def systemProperties(): ConfigReader.Result[Config] =
    unsafeToReaderResult(ConfigFactory.systemProperties())

  /** @see `com.typesafe.config.ConfigFactory.parseString()` */
  def parseString(s: String): ConfigReader.Result[Config] =
    unsafeToReaderResult(ConfigFactory.parseString(s))

  /** @see `com.typesafe.config.ConfigFactory.parseFile()` */
  def parseFile(file: File): ConfigReader.Result[Config] =
    unsafeToReaderResult(
      ConfigFactory.parseFile(file, strictSettings),
      onIOFailure = Some(CannotReadFile(file.toPath, _))
    )

  /** @see `com.typesafe.config.ConfigFactory.parseFile()` */
  def parseFile(path: Path): ConfigReader.Result[Config] =
    unsafeToReaderResult(
      ConfigFactory.parseFile(path.toFile, strictSettings),
      onIOFailure = Some(CannotReadFile(path, _))
    )

  /** @see `com.typesafe.config.ConfigFactory.parseResources()` */
  def parseResources(resource: String, classLoader: ClassLoader = null): ConfigReader.Result[Config] =
    unsafeToReaderResult(
      ConfigFactory.parseResources(resource, strictSettings.setClassLoader(classLoader)),
      onIOFailure = Some(CannotReadResource(resource, _))
    )

  /** @see `com.typesafe.config.ConfigFactory.parseURL()` */
  def parseURL(url: URL): ConfigReader.Result[Config] =
    unsafeToReaderResult(ConfigFactory.parseURL(url, strictSettings), onIOFailure = Some(CannotReadUrl(url, _)))

  /** Utility methods that parse a file and then calls `ConfigFactory.load` */
  def loadFile(path: Path): ConfigReader.Result[Config] =
    parseFile(path.toFile).flatMap(rawConfig => unsafeToReaderResult(ConfigFactory.load(rawConfig)))
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy