Skip to content

Instantly share code, notes, and snippets.

@jbiason
Created January 23, 2018 12:22
Show Gist options
  • Save jbiason/1a984416da515f31cffc2e09734771d3 to your computer and use it in GitHub Desktop.
Save jbiason/1a984416da515f31cffc2e09734771d3 to your computer and use it in GitHub Desktop.
abstract class Metric {
def parse(line:String):List[String]
}
class MetricData extends Metric {
def parse(line:String):List[String] = {
println("MetricData")
List()
}
}
trait MetricParser extends Metric { }
trait DataTransferredMetric extends MetricParser {
abstract override def parse(line:String):List[String] = {
println("DataTransferredMetric")
return super.parse(line) ++ List("DataTransferred")
}
}
trait RequestsMetric extends MetricParser {
abstract override def parse(line:String):List[String] = {
println("RequestsMetric")
return super.parse(line) ++ List("RequestsMetric")
}
}
trait BytesInMetric extends MetricParser {
abstract override def parse(line:String):List[String] = {
println("BytesIn")
return super.parse(line) ++ List("BytesIn")
}
}
object MetricTest extends App {
val parser = new MetricData with DataTransferredMetric with RequestsMetric
val parser2 = new MetricData with DataTransferredMetric with BytesInMetric
println(parser.parse(""))
println("-------------------------------")
println(parser2.parse(""))
println("-------------------------------")
println(parser.parse("HELLO"))
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment