aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/xyz/driver/core/rest/PatchDirectives.scala
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/scala/xyz/driver/core/rest/PatchDirectives.scala')
-rw-r--r--src/main/scala/xyz/driver/core/rest/PatchDirectives.scala8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/main/scala/xyz/driver/core/rest/PatchDirectives.scala b/src/main/scala/xyz/driver/core/rest/PatchDirectives.scala
index 256358c..f33bf9d 100644
--- a/src/main/scala/xyz/driver/core/rest/PatchDirectives.scala
+++ b/src/main/scala/xyz/driver/core/rest/PatchDirectives.scala
@@ -53,10 +53,10 @@ trait PatchDirectives extends Directives with SprayJsonSupport {
}
protected def mergeObjects(oldObj: JsObject, newObj: JsObject, maxLevels: Option[Int] = None): JsObject = {
- JsObject(oldObj.fields.map({
- case (key, oldValue) =>
- val newValue = newObj.fields.get(key).fold(oldValue)(mergeJsValues(oldValue, _, maxLevels.map(_ - 1)))
- key -> newValue
+ JsObject((oldObj.fields.keys ++ newObj.fields.keys).map({ key =>
+ val oldValue = oldObj.fields.getOrElse(key, JsNull)
+ val newValue = newObj.fields.get(key).fold(oldValue)(mergeJsValues(oldValue, _, maxLevels.map(_ - 1)))
+ key -> newValue
})(collection.breakOut): _*)
}