Skip to content

lprakashv/scala-utils

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

60 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GitHub Test Badge Coverage Badge

scala-utils

My personal collection of Scala utilities and rewrite of an existing data structure or a pattern.

Packages and their descriptions:

collections [todo: take out as library in another module]

  • MyTrie : A Trie data structure implementation in Scala.

resiliency [todo: take out as library in another module]

  • 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

commons

  • AritmeticUtils : utility implicit classes and extension methods needed to do arithmetic operations

files

  • FileUtils :
  • DocumentUtils :

strings

  • StringUtils :

TODOs:

  • Added Retry component in resiliency package.
  • Logging:
    • Expedite scala logging libraries.
      • Create on if needed on top of Slf4j.
    • Improve logging.
  • 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).

About

Utilities for Scala

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages