Browse Source

DATAMONGO-1998 - Polishing.

Switch id field name check to equals or to match the last property path segment.

Original pull request: #567.
pull/585/head
Mark Paluch 8 years ago
parent
commit
f82b791f72
  1. 7
      spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/support/SpringDataMongodbSerializer.java
  2. 5
      spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/support/SpringDataMongodbSerializerUnitTests.java

7
spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/support/SpringDataMongodbSerializer.java

@ -20,7 +20,6 @@ import java.util.HashSet;
import java.util.Set; import java.util.Set;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import com.mongodb.util.JSON;
import org.springframework.data.mapping.context.MappingContext; import org.springframework.data.mapping.context.MappingContext;
import org.springframework.data.mongodb.core.convert.MongoConverter; import org.springframework.data.mongodb.core.convert.MongoConverter;
import org.springframework.data.mongodb.core.convert.QueryMapper; import org.springframework.data.mongodb.core.convert.QueryMapper;
@ -31,6 +30,7 @@ import org.springframework.util.ClassUtils;
import com.mongodb.DBObject; import com.mongodb.DBObject;
import com.mongodb.DBRef; import com.mongodb.DBRef;
import com.mongodb.util.JSON;
import com.querydsl.core.types.Constant; import com.querydsl.core.types.Constant;
import com.querydsl.core.types.Expression; import com.querydsl.core.types.Expression;
import com.querydsl.core.types.Operation; import com.querydsl.core.types.Operation;
@ -116,7 +116,7 @@ class SpringDataMongodbSerializer extends MongodbSerializer {
@Override @Override
protected DBObject asDBObject(String key, Object value) { protected DBObject asDBObject(String key, Object value) {
if (key.endsWith(ID_KEY)) { if (ID_KEY.equals(key) || (key != null && key.endsWith("." + ID_KEY))) {
return convertId(key, value); return convertId(key, value);
} }
return super.asDBObject(key, value instanceof Pattern ? value : converter.convertToMongoType(value)); return super.asDBObject(key, value instanceof Pattern ? value : converter.convertToMongoType(value));
@ -134,8 +134,7 @@ class SpringDataMongodbSerializer extends MongodbSerializer {
Object convertedId = mapper.convertId(idValue); Object convertedId = mapper.convertId(idValue);
DBObject mappedIdValue = mapper.getMappedObject(super.asDBObject(key, convertedId), DBObject mappedIdValue = mapper.getMappedObject(super.asDBObject(key, convertedId), null);
null);
return (DBObject) JSON.parse(JSON.serialize(mappedIdValue)); return (DBObject) JSON.parse(JSON.serialize(mappedIdValue));
} }

5
spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/support/SpringDataMongodbSerializerUnitTests.java

@ -20,6 +20,7 @@ import static org.junit.Assert.*;
import static org.springframework.data.mongodb.core.DBObjectTestUtils.*; import static org.springframework.data.mongodb.core.DBObjectTestUtils.*;
import java.util.Collections; import java.util.Collections;
import java.util.List;
import org.bson.types.ObjectId; import org.bson.types.ObjectId;
import org.hamcrest.Matchers; import org.hamcrest.Matchers;
@ -158,9 +159,9 @@ public class SpringDataMongodbSerializerUnitTests {
DBObject serialized = serializer.asDBObject("_id", new BasicDBObject("$in", objectIds)); DBObject serialized = serializer.asDBObject("_id", new BasicDBObject("$in", objectIds));
DBObject _id = getAsDBObject(serialized, "_id"); DBObject _id = getAsDBObject(serialized, "_id");
Object[] $in = getTypedValue(_id, "$in", Object[].class); List<ObjectId> $in = getTypedValue(_id, "$in", List.class);
assertThat($in, Matchers.<Object> arrayContaining(firstId, secondId)); assertThat($in, contains(firstId, secondId));
} }
@Test // DATAMONGO-1485 @Test // DATAMONGO-1485

Loading…
Cancel
Save