From eebd49ab8d5779d6762d3360f9e0e94d50cd69d5 Mon Sep 17 00:00:00 2001 From: Becca Gaspard Date: Fri, 20 Sep 2013 12:41:32 -0400 Subject: [PATCH] DATAMONGO-630 - Support $setOnInsert update operator. Original pull request: #70. --- .../data/mongodb/core/query/Update.java | 13 +++++++++ .../data/mongodb/core/query/UpdateTests.java | 28 +++++++++++++++++-- 2 files changed, 38 insertions(+), 3 deletions(-) diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/Update.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/Update.java index 20b04e815..73e5afc5e 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/Update.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/Update.java @@ -31,6 +31,7 @@ import com.mongodb.DBObject; * @author Thomas Risberg * @author Mark Pollack * @author Oliver Gierke + * @author Becca Gaspard */ public class Update { @@ -90,6 +91,18 @@ public class Update { return this; } + /** + * Update using the $setOnInsert update modifier + * + * @param key + * @param value + * @return + */ + public Update setOnInsert(String key, Object value) { + addMultiFieldOperation("$setOnInsert", key, value); + return this; + } + /** * Update using the $unset update modifier * diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/query/UpdateTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/query/UpdateTests.java index 159c7099c..636a52109 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/query/UpdateTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/query/UpdateTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2011 the original author or authors. + * Copyright 2010-2013 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -20,9 +20,13 @@ import java.util.Map; import org.junit.Assert; import org.junit.Test; -import org.springframework.data.mongodb.core.query.BasicUpdate; -import org.springframework.data.mongodb.core.query.Update; +/** + * Test cases for {@link Update}. + * + * @author Oliver Gierke + * @author Becca Gaspard + */ public class UpdateTests { @Test @@ -135,4 +139,22 @@ public class UpdateTests { Assert.assertEquals("{ \"$inc\" : { \"size\" : 1} , \"$set\" : { \"directory\" : \"/Users/Test/Desktop\"}}", u .getUpdateObject().toString()); } + + /** + * @see DATAMONGO-630 + */ + @Test + public void testSetOnInsert() { + Update u = new Update().setOnInsert("size", 1); + Assert.assertEquals("{ \"$setOnInsert\" : { \"size\" : 1}}", u.getUpdateObject().toString()); + } + + /** + * @see DATAMONGO-630 + */ + @Test + public void testSetOnInsertSetOnInsert() { + Update u = new Update().setOnInsert("size", 1).setOnInsert("count", 1); + Assert.assertEquals("{ \"$setOnInsert\" : { \"size\" : 1 , \"count\" : 1}}", u.getUpdateObject().toString()); + } }