Created
May 16, 2011 18:02
-
-
Save debasishg/974974 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// classes and typeclass instances | |
case class WFNode(val id: Long, val name: String, val requestedBy: Option[String] = None) | |
implicit val WFNodeFormat: Format[WFNode] = | |
asProduct3("id", "name", "requestedBy")(WFNode)(WFNode.unapply(_).get) | |
case class ValueNode(override val id: Long, override val name: String, | |
override val requestedBy: Option[String] = None, | |
var value: Option[String] = None) extends WFNode(id, name, requestedBy) | |
implicit val ValueNodeFormat: Format[ValueNode] = | |
asProduct4("id", "name", "requestedBy", "value")(ValueNode)(ValueNode.unapply(_).get) | |
case class ParameterNode(override val id: Long, override val name: String, | |
override val requestedBy: Option[String] = None, | |
initialValue: Option[String] = None) extends ValueNode(id, name, requestedBy, initialValue) | |
implicit val ParameterNodeFormat: Format[ParameterNode] = | |
asProduct4("id", "name", "requestedBy", "initialValue")(ParameterNode)(ParameterNode.unapply(_).get) | |
case class FileNode(override val id: Long, override val name: String, val fileType: String, | |
override val requestedBy : Option[String] = None, | |
initialGUID: Option[String] = None) extends ValueNode(id, name, requestedBy, initialGUID) | |
implicit val FileNodeFormat: Format[FileNode] = | |
asProduct5("id", "name", "requestedBy", "fileType", "initialGUID")(FileNode)(FileNode.unapply(_).get) | |
case class AnalysisNode(id: Long, name: String, val application: String, val version: String, val analysis: String) | |
implicit val AnalysisNodeFormat: Format[AnalysisNode] = | |
asProduct5("id", "name", "application", "version", "analysis")(AnalysisNode)(AnalysisNode.unapply(_).get) | |
// test cases | |
describe("Serialization with another inheritance") { | |
it("should serialize") { | |
val vn = ValueNode(100, "value_node_name", Some("debasish"), Some("value_node_value")) | |
val acc = fromjson[ValueNode](tojson(vn)) | |
acc should equal(vn) | |
val fn = FileNode(100, "file_node_name", "file_node_file_type", Some("debasish"), Some("initial_guid")) | |
val fcc = fromjson[FileNode](tojson(fn)) | |
fcc should equal(fn) | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment