@@ -6,7 +6,6 @@ import java.util.Date
66
77import org .mongodb .scala .Document
88import org .mongodb .scala .bson .BsonArray .fromIterable
9- import org .mongodb .scala .bson ._
109import org .mongodb .scala .bson .{ObjectId , _ }
1110
1211import scala .collection .JavaConverters ._
@@ -29,10 +28,14 @@ object BsonConverter {
2928 val newKey = newKeyFromRelation(key)
3029 val relation = relationKey(key)
3130
32- if (document.contains(relation) && documentValueOption(document, relation)
33- .isInstanceOf [Option [Document ]]) {
34- val relatedDocument = documentValueOption(document, relation).asInstanceOf [Option [Document ]].get
35- documentValueOption(relatedDocument, newKey)
31+ if (document.contains(relation) && documentValueOption(document, relation).isDefined) {
32+ val value = documentValueOption(document, relation).get
33+ value match {
34+ case document : Document =>
35+ documentValueOption(document, newKey)
36+ case _ =>
37+ None
38+ }
3639 }
3740 else {
3841 None
@@ -48,9 +51,9 @@ object BsonConverter {
4851 }
4952
5053 def updateDocumentValue (document : Document , key : String , value : Any ): Document = {
51- val doc = org.mongodb.scala.bson.collection.mutable.Document (document)
54+ val doc = org.mongodb.scala.bson.collection.mutable.Document (document.toJson() )
5255 val result = updateDocumentValueInternal(doc, key, value)
53- Document (result)
56+ Document (result.toJson() )
5457 }
5558
5659 private def updateDocumentValueInternal (
@@ -64,11 +67,16 @@ object BsonConverter {
6467 val relation = relationKey(key)
6568
6669 var relatedDocument = Document ()
67- val relationValue = documentValueOption(Document (document), relation)
68- if (relationValue.isDefined && relationValue.isInstanceOf [Option [Document ]]) {
69- relatedDocument = relationValue.asInstanceOf [Option [Document ]].get
70+ val relationValue = documentValueOption(Document (document.toJson()), relation)
71+ if (relationValue.isDefined) {
72+ val value = relationValue.get
73+ value match {
74+ case document : Document =>
75+ relatedDocument = document
76+ case _ =>
77+ }
7078 }
71- val mutableDoc = org.mongodb.scala.bson.collection.mutable.Document (relatedDocument)
79+ val mutableDoc = org.mongodb.scala.bson.collection.mutable.Document .apply (relatedDocument.toJson() )
7280 document.put(relation, mutableDoc)
7381 if (root.isEmpty)
7482 updateDocumentValueInternal(mutableDoc, newKey, value, Some (document))
0 commit comments