diff options
author | Grzegorz Kossakowski <grek@google.com> | 2009-09-24 16:54:49 -0700 |
---|---|---|
committer | Grzegorz Kossakowski <grzegorz.kossakowski@gmail.com> | 2010-04-02 01:36:45 +0200 |
commit | 630113dcce18e4be54550669ccfc2c7bc6c3dff9 (patch) | |
tree | f8749b09a0f4b8d5582cd5aba86bcf26760f140b /src/test/scala/com/google/gimd/query | |
parent | cc3cf9fdc34eec1bcb54f81d94184b1e2e38be63 (diff) | |
download | gimd-630113dcce18e4be54550669ccfc2c7bc6c3dff9.tar.gz |
Define implicit conversions from FieldSpec to functions that extract values.
Defined FieldSpecOne2T and FieldSpecOption implicit conversions where T is
a type of a value that given UserObject stores in it's class field. Thanks
to that it's possible to use FieldSpec as functions: Message => T which is very convenient
for defining UserType and implementing it's method toUserObject.
Another improvement is defining implicit conversion
FieldSpec => List[FieldSpec] that allows one to define list of FieldSpecs
in an elegant way.
FieldSpecMany and it's implicit conversions has not been implemented yet as
it requires much more work. The problem is with sorting of fields that can
be either interpreted as string and int fields. This ambiguity makes it
much more difficult to define what is a valid (sorted) representation of
given message that has fields named the same but storing both ints and
non-int values.
Change-Id: Iadeec3a97c7dac60508245e8f773e408ea9e5541
Signed-off-by: Grzegorz Kossakowski <grek@google.com>
Diffstat (limited to 'src/test/scala/com/google/gimd/query')
-rw-r--r-- | src/test/scala/com/google/gimd/query/MessageQueryTestCase.scala | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/src/test/scala/com/google/gimd/query/MessageQueryTestCase.scala b/src/test/scala/com/google/gimd/query/MessageQueryTestCase.scala index 21b461b..c8c58eb 100644 --- a/src/test/scala/com/google/gimd/query/MessageQueryTestCase.scala +++ b/src/test/scala/com/google/gimd/query/MessageQueryTestCase.scala @@ -17,17 +17,16 @@ package com.google.gimd.query import file.{File, FileType} import org.junit.Test import org.junit.Assert._ +import UserType._ class MessageQueryTestCase { case class TreeNode(id: Int, name: String) object TreeNodeType extends UserType[TreeNode] { - def toUserObject(m: Message): TreeNode = - new TreeNode( - m.one("id").intField.value, - m.one("name").stringField.value - ) + val id = FieldSpecOne("id", IntField, _.id) + val name = FieldSpecOne("name", StringField, _.name) + def fields = id :: name override def children = Seq(new NestedMember("node", TreeNodeType)) - def fields = List(FieldSpec("id", IntField, _.id), FieldSpec("name", StringField, _.name)) + def toUserObject(m: Message) = new TreeNode(id(m), name(m)) } val root = new TreeNode(-1, "a") |