Skip to content

Commit

Permalink
Make CustomFicusInstances extendable
Browse files Browse the repository at this point in the history
  • Loading branch information
piotrp committed Apr 23, 2024
1 parent 90a4c50 commit fdef635
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,15 @@ import net.ceedubs.ficus.readers._
import java.util.UUID
import scala.language.implicitConversions

// We exclude URLReader because of our own implementation with fallback to a File url
object CustomFicusInstances
/**
* Configuration extending default Ficus decoding.
*
* Customizations:
*
* - [[URLReader]] is modified to default to the `file://` scheme
* - String values can be read as [[UUID]] instances
*/
trait CustomFicusInstances
extends AnyValReaders
with StringReader
with SymbolReader
Expand All @@ -36,3 +43,5 @@ object CustomFicusInstances
implicit def toFicusConfig(config: Config): FicusConfig = SimpleFicusConfig(config)

}

object CustomFicusInstances extends CustomFicusInstances
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package pl.touk.nussknacker.engine.util.config

import com.typesafe.config.ConfigValueFactory.fromAnyRef
import com.typesafe.config.ConfigFactory
import net.ceedubs.ficus.readers.ArbitraryTypeReader._
import org.scalatest.flatspec.AnyFlatSpec
import org.scalatest.matchers.should.Matchers
import CustomFicusInstances._

import java.io.File
import java.net.URL
import java.util.UUID

class CustomFicusInstancesSpec extends AnyFlatSpec with Matchers {

it should "decode URL using custom decoder" in {
case class Container(url: URL)

val config = ConfigFactory.empty().withValue("url", fromAnyRef("/absolute/path"))

config.as[Container].url shouldBe new File("/absolute/path").toURI.toURL
}

it should "decode UUID" in {
case class Container(uuid: UUID)

val config = ConfigFactory.empty().withValue("uuid", fromAnyRef("a0cddbd7-0f2d-4c86-8434-8811c45f18dd"))

config.as[Container].uuid shouldBe UUID.fromString("a0cddbd7-0f2d-4c86-8434-8811c45f18dd")
}

}

0 comments on commit fdef635

Please sign in to comment.