diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/convert/MappingMongoConverter.java b/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/convert/MappingMongoConverter.java index 52aba45af..b7feca39f 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/convert/MappingMongoConverter.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/convert/MappingMongoConverter.java @@ -58,7 +58,7 @@ public class MappingMongoConverter implements MongoConverter, ApplicationContext protected MappingContext mappingContext; protected ApplicationContext applicationContext; protected boolean autowirePersistentBeans = false; - protected boolean useFieldAccessOnly = false; + protected boolean useFieldAccessOnly = true; public MappingMongoConverter() { initializeConverters(); @@ -367,13 +367,12 @@ public class MappingMongoConverter implements MongoConverter, ApplicationContext } protected void writeMapInternal(Map obj, DBObject dbo) { - Set simpleTypes = MappingBeanHelper.getSimpleTypes(); for (Map.Entry entry : obj.entrySet()) { Object key = entry.getKey(); Object val = entry.getValue(); - if (simpleTypes.contains(key.getClass().getName())) { + if (MappingBeanHelper.isSimpleType(key.getClass())) { String simpleKey = conversionService.convert(key, String.class); - if (simpleTypes.contains(val.getClass().toString())) { + if (MappingBeanHelper.isSimpleType(val.getClass())) { dbo.put(simpleKey, val); } else { DBObject newDbo = new BasicDBObject(); diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/mapping/MongoMappingConfigurationBuilder.java b/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/mapping/MongoMappingConfigurationBuilder.java index 33ad9ddd4..2accd48f4 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/mapping/MongoMappingConfigurationBuilder.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/mapping/MongoMappingConfigurationBuilder.java @@ -36,7 +36,6 @@ import org.springframework.data.mapping.model.*; import java.beans.PropertyDescriptor; import java.lang.reflect.Field; -import java.math.BigInteger; import java.util.HashMap; import java.util.Map; import java.util.Set; @@ -53,15 +52,15 @@ public class MongoMappingConfigurationBuilder extends BasicMappingConfigurationB public MongoMappingConfigurationBuilder(MongoTemplate mongoTemplate) { this.mongoTemplate = mongoTemplate; // Augment simpleTypes with MongoDB-specific classes - Set simpleTypes = MappingBeanHelper.getSimpleTypes(); - simpleTypes.add(DBRef.class.getName()); - simpleTypes.add(ObjectId.class.getName()); - simpleTypes.add(CodeWScope.class.getName()); + Set> simpleTypes = MappingBeanHelper.getSimpleTypes(); + simpleTypes.add(com.mongodb.DBRef.class); + simpleTypes.add(ObjectId.class); + simpleTypes.add(CodeWScope.class); } @Override public PersistentProperty createPersistentProperty(Field field, PropertyDescriptor descriptor) throws MappingConfigurationException { - @SuppressWarnings({ "unchecked", "rawtypes" }) + @SuppressWarnings({"unchecked", "rawtypes"}) PersistentProperty property = new MongoPersistentProperty(field.getName(), field.getType(), field, descriptor); if (field.isAnnotationPresent(Indexed.class)) { Indexed index = field.getAnnotation(Indexed.class); diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/mapping/MongoPersistentProperty.java b/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/mapping/MongoPersistentProperty.java index 8540820ac..02e640b6a 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/mapping/MongoPersistentProperty.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/mapping/MongoPersistentProperty.java @@ -1,5 +1,5 @@ /* - * Copyright 2011 by the original author(s). + * Copyright (c) 2011 by the original author(s). * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/mapping/BasePerson.java b/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/mapping/BasePerson.java index c3f32b8ef..85be5593d 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/mapping/BasePerson.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/mapping/BasePerson.java @@ -19,11 +19,14 @@ package org.springframework.data.document.mongodb.mapping; /** * @author Jon Brisbin */ -public class BasePerson { +public abstract class BasePerson { - private Integer ssn; - private String firstName; - private String lastName; + protected Integer ssn; + protected String firstName; + protected String lastName; + + public BasePerson() { + } public BasePerson(Integer ssn, String firstName, String lastName) { this.ssn = ssn; diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/mapping/MappingTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/mapping/MappingTests.java index 56d6bce2f..e3bd38544 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/mapping/MappingTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/mapping/MappingTests.java @@ -16,9 +16,7 @@ package org.springframework.data.document.mongodb.mapping; -import org.junit.Rule; import org.junit.Test; -import org.junit.rules.ExpectedException; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.document.mongodb.MongoTemplate; @@ -50,9 +48,6 @@ public class MappingTests { @Autowired BasicMappingContext mappingContext; - @Rule - public ExpectedException thrown = ExpectedException.none(); - @Test public void setUp() { template.dropCollection("person"); @@ -100,14 +95,12 @@ public class MappingTests { @Test @SuppressWarnings({"unchecked"}) public void testWriteEntity() { - Person p = new Person(123456789, "John", "Doe", 37); Address addr = new Address(); addr.setLines(new String[]{"1234 W. 1st Street", "Apt. 12"}); addr.setCity("Anytown"); addr.setPostalCode(12345); addr.setCountry("USA"); - p.setAddress(addr); Account acct = new Account(); acct.setBalance(1000.00f); @@ -115,8 +108,9 @@ public class MappingTests { List accounts = new ArrayList(); accounts.add(acct); - p.setAccounts(accounts); + Person p = new Person(123456789, "John", "Doe", 37, addr); + p.setAccounts(accounts); template.insert("person", p); assertNotNull(p.getId()); diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/mapping/Person.java b/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/mapping/Person.java index e2f61d6e9..c40cafe5f 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/mapping/Person.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/mapping/Person.java @@ -52,13 +52,6 @@ public class Person { @Autowired private MongoTemplate mongoTemplate; - public Person(Integer ssn, String firstName, String lastName, Integer age) { - this.ssn = ssn; - this.firstName = firstName; - this.lastName = lastName; - this.age = age; - } - @PersistenceConstructor public Person(Integer ssn, String firstName, String lastName, Integer age, T address) { this.ssn = ssn; @@ -80,6 +73,10 @@ public class Person { return ssn; } + public void setSsn(Integer ssn) { + this.ssn = ssn; + } + public String getFirstName() { return firstName; } diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/mapping/PersonCustomIdName.java b/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/mapping/PersonCustomIdName.java index 728e438d8..2711610ed 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/mapping/PersonCustomIdName.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/mapping/PersonCustomIdName.java @@ -22,18 +22,13 @@ import org.springframework.data.annotation.Id; /** * @author Jon Brisbin */ -public class PersonCustomIdName { +public class PersonCustomIdName extends BasePerson { @Id private ObjectId customId; - private Integer ssn; - private String firstName; - private String lastName; public PersonCustomIdName(Integer ssn, String firstName, String lastName) { - this.ssn = ssn; - this.firstName = firstName; - this.lastName = lastName; + super(ssn, firstName, lastName); } public ObjectId getCustomId() { @@ -44,27 +39,4 @@ public class PersonCustomIdName { this.customId = customId; } - public Integer getSsn() { - return ssn; - } - - public void setSsn(Integer ssn) { - this.ssn = ssn; - } - - public String getFirstName() { - return firstName; - } - - public void setFirstName(String firstName) { - this.firstName = firstName; - } - - public String getLastName() { - return lastName; - } - - public void setLastName(String lastName) { - this.lastName = lastName; - } } diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/mapping/PersonPojo.java b/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/mapping/PersonPojo.java index d6d5968c6..382706e3d 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/mapping/PersonPojo.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/mapping/PersonPojo.java @@ -21,17 +21,12 @@ import org.bson.types.ObjectId; /** * @author Jon Brisbin */ -public class PersonPojo { +public class PersonPojo extends BasePerson { private ObjectId id; - private Integer ssn; - private String firstName; - private String lastName; public PersonPojo(Integer ssn, String firstName, String lastName) { - this.ssn = ssn; - this.firstName = firstName; - this.lastName = lastName; + super(ssn, firstName, lastName); } public ObjectId getId() { @@ -41,28 +36,4 @@ public class PersonPojo { public void setId(ObjectId id) { this.id = id; } - - public Integer getSsn() { - return ssn; - } - - public void setSsn(Integer ssn) { - this.ssn = ssn; - } - - public String getFirstName() { - return firstName; - } - - public void setFirstName(String firstName) { - this.firstName = firstName; - } - - public String getLastName() { - return lastName; - } - - public void setLastName(String lastName) { - this.lastName = lastName; - } }