From 6b35ca80d42a28fe0dd87eef4aaae149a36cfdb4 Mon Sep 17 00:00:00 2001 From: Oliver Gierke Date: Thu, 23 May 2013 20:40:05 +0200 Subject: [PATCH] DATAMONGO-679 - Fixed saving plain JSON strings in MongoTemplate. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit MongoTemplate.doSave(…) didn't handle plain JSON strings correctly. It now correctly passes the marshaled object to the underlying method. --- .../data/mongodb/core/MongoTemplate.java | 3 +-- .../data/mongodb/core/MongoTemplateTests.java | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoTemplate.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoTemplate.java index ad1a0cd19..37e4f9831 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoTemplate.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoTemplate.java @@ -798,7 +798,6 @@ public class MongoTemplate implements MongoOperations, ApplicationContextAware { } } - @SuppressWarnings("unchecked") protected void doSave(String collectionName, T objectToSave, MongoWriter writer) { assertUpdateableIdIfNotSet(objectToSave); @@ -811,7 +810,7 @@ public class MongoTemplate implements MongoOperations, ApplicationContextAware { writer.write(objectToSave, dbDoc); } else { try { - objectToSave = (T) JSON.parse((String) objectToSave); + dbDoc = (DBObject) JSON.parse((String) objectToSave); } catch (JSONParseException e) { throw new MappingException("Could not parse given String to save into a JSON document!", e); } diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/MongoTemplateTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/MongoTemplateTests.java index 35b453ef5..f699cd1dd 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/MongoTemplateTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/MongoTemplateTests.java @@ -1597,6 +1597,21 @@ public class MongoTemplateTests { } } + /** + * @see DATAMONGO-679 + */ + @Test + public void savesJsonStringCorrectly() { + + DBObject dbObject = new BasicDBObject().append("first", "first").append("second", "second"); + + template.save(dbObject.toString(), "collection"); + + List result = template.findAll(DBObject.class, "collection"); + assertThat(result.size(), is(1)); + assertThat(result.get(0).containsField("first"), is(true)); + } + static class MyId { String first;