My personal collection of Scala utilities and rewrite of an existing data structure or a pattern.
MyTrie
: A Trie data structure implementation in Scala.
Circuit
: A circuit specification for circuit-breaker design pattern.
Usage:
val myCircuit = new Circuit[Int](
"sample-circuit",
5,
5.seconds,
1,
-1
)
def doThingAndReturnInt: Int = ??? //method to wrap
def doThingAndReturnIntF: Future[Int] = ??? //async method to wrap
myCircuit.execute(doThingAndReturnInt)
myCircuit.executeAsync(doThingAndReturnIntF)
myCircuit.execute {
val x = 23
//.. do something here
???
val y = getAndIntRandomly()
x / y
}
//others methods like
implict val circuit: Circuit[T] = ???
(f: => R).execute
(ff: => Future[R]).executeAsync
//another circuit to be applied on similar blocks
val circuit2: Circuit[T] = ???
(f: => R)(circuit2).execute
(ff: => Future[R])(circuit2).executeAsync
AritmeticUtils
: utility implicit classes and extension methods needed to do arithmetic operations
FileUtils
:DocumentUtils
:
StringUtils
:
- Added Retry component in resiliency package.
- Logging:
- Expedite scala logging libraries.
- Create on if needed on top of Slf4j.
- Improve logging.
- Expedite scala logging libraries.
- Make project modular with sbt modules (especially the resiliency package):
- Added publish support.
- Publish resiliency library.
- Add maven and gradle support as well with common build script (refer popular sbt projects also supporting maven and gradle).