Created
May 28, 2013 11:56
-
-
Save andrei15/5662218 to your computer and use it in GitHub Desktop.
This file contains hidden or 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
| import _root_.freemarker.template._ | |
| import circumflex._, freemarker._ | |
| import org.bson._, types._ | |
| import collection.JavaConversions._ | |
| class ExtendedObjectWrapper extends ScalaObjectWrapper { | |
| override def wrap(obj: Any) = obj match { | |
| case null => null | |
| case list: BasicBSONList => | |
| new BSONListWrapper(list, this) | |
| case bson: BSONObject => | |
| new BSONWrapper(bson, this) | |
| case _ => super.wrap(obj) | |
| } | |
| } | |
| class BSONWrapper(val bson: BSONObject, val wrapper: ObjectWrapper) | |
| extends TemplateHashModelEx | |
| with TemplateScalarModel { | |
| def size = bson.keySet.size | |
| def isEmpty = size == 0 | |
| def keys = new ScalaIterableWrapper[Any]( | |
| bson.keySet.toStream, wrapper) | |
| def values = new ScalaIterableWrapper[Any]( | |
| bson.toMap.valuesIterator.toStream, wrapper) | |
| def get(key: String) = wrapper.wrap(bson.get(key)) | |
| def getAsString = bson.toString | |
| } | |
| class BSONListWrapper(val list: BasicBSONList, | |
| val wrapper: ObjectWrapper) | |
| extends TemplateSequenceModel { | |
| def get(index: Int) = wrapper.wrap(list.get(index)) | |
| def size = list.size | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment