Browse Source

Tweaks to tests, BasePerson class, common inheritance to test classes, tweaks to complex/simple type detection.

pull/1/head
Jon Brisbin 15 years ago committed by J. Brisbin
parent
commit
21048f211d
  1. 7
      spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/convert/MappingMongoConverter.java
  2. 11
      spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/mapping/MongoMappingConfigurationBuilder.java
  3. 2
      spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/mapping/MongoPersistentProperty.java
  4. 11
      spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/mapping/BasePerson.java
  5. 10
      spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/mapping/MappingTests.java
  6. 11
      spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/mapping/Person.java
  7. 32
      spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/mapping/PersonCustomIdName.java
  8. 33
      spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/mapping/PersonPojo.java

7
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 MappingContext mappingContext;
protected ApplicationContext applicationContext; protected ApplicationContext applicationContext;
protected boolean autowirePersistentBeans = false; protected boolean autowirePersistentBeans = false;
protected boolean useFieldAccessOnly = false; protected boolean useFieldAccessOnly = true;
public MappingMongoConverter() { public MappingMongoConverter() {
initializeConverters(); initializeConverters();
@ -367,13 +367,12 @@ public class MappingMongoConverter implements MongoConverter, ApplicationContext
} }
protected void writeMapInternal(Map<Object, Object> obj, DBObject dbo) { protected void writeMapInternal(Map<Object, Object> obj, DBObject dbo) {
Set<String> simpleTypes = MappingBeanHelper.getSimpleTypes();
for (Map.Entry<Object, Object> entry : obj.entrySet()) { for (Map.Entry<Object, Object> entry : obj.entrySet()) {
Object key = entry.getKey(); Object key = entry.getKey();
Object val = entry.getValue(); Object val = entry.getValue();
if (simpleTypes.contains(key.getClass().getName())) { if (MappingBeanHelper.isSimpleType(key.getClass())) {
String simpleKey = conversionService.convert(key, String.class); String simpleKey = conversionService.convert(key, String.class);
if (simpleTypes.contains(val.getClass().toString())) { if (MappingBeanHelper.isSimpleType(val.getClass())) {
dbo.put(simpleKey, val); dbo.put(simpleKey, val);
} else { } else {
DBObject newDbo = new BasicDBObject(); DBObject newDbo = new BasicDBObject();

11
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.beans.PropertyDescriptor;
import java.lang.reflect.Field; import java.lang.reflect.Field;
import java.math.BigInteger;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
@ -53,15 +52,15 @@ public class MongoMappingConfigurationBuilder extends BasicMappingConfigurationB
public MongoMappingConfigurationBuilder(MongoTemplate mongoTemplate) { public MongoMappingConfigurationBuilder(MongoTemplate mongoTemplate) {
this.mongoTemplate = mongoTemplate; this.mongoTemplate = mongoTemplate;
// Augment simpleTypes with MongoDB-specific classes // Augment simpleTypes with MongoDB-specific classes
Set<String> simpleTypes = MappingBeanHelper.getSimpleTypes(); Set<Class<?>> simpleTypes = MappingBeanHelper.getSimpleTypes();
simpleTypes.add(DBRef.class.getName()); simpleTypes.add(com.mongodb.DBRef.class);
simpleTypes.add(ObjectId.class.getName()); simpleTypes.add(ObjectId.class);
simpleTypes.add(CodeWScope.class.getName()); simpleTypes.add(CodeWScope.class);
} }
@Override @Override
public PersistentProperty<?> createPersistentProperty(Field field, PropertyDescriptor descriptor) throws MappingConfigurationException { 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); PersistentProperty<?> property = new MongoPersistentProperty(field.getName(), field.getType(), field, descriptor);
if (field.isAnnotationPresent(Indexed.class)) { if (field.isAnnotationPresent(Indexed.class)) {
Indexed index = field.getAnnotation(Indexed.class); Indexed index = field.getAnnotation(Indexed.class);

2
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"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.

11
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 <jbrisbin@vmware.com> * @author Jon Brisbin <jbrisbin@vmware.com>
*/ */
public class BasePerson { public abstract class BasePerson {
private Integer ssn; protected Integer ssn;
private String firstName; protected String firstName;
private String lastName; protected String lastName;
public BasePerson() {
}
public BasePerson(Integer ssn, String firstName, String lastName) { public BasePerson(Integer ssn, String firstName, String lastName) {
this.ssn = ssn; this.ssn = ssn;

10
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; package org.springframework.data.document.mongodb.mapping;
import org.junit.Rule;
import org.junit.Test; import org.junit.Test;
import org.junit.rules.ExpectedException;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.document.mongodb.MongoTemplate; import org.springframework.data.document.mongodb.MongoTemplate;
@ -50,9 +48,6 @@ public class MappingTests {
@Autowired @Autowired
BasicMappingContext mappingContext; BasicMappingContext mappingContext;
@Rule
public ExpectedException thrown = ExpectedException.none();
@Test @Test
public void setUp() { public void setUp() {
template.dropCollection("person"); template.dropCollection("person");
@ -100,14 +95,12 @@ public class MappingTests {
@Test @Test
@SuppressWarnings({"unchecked"}) @SuppressWarnings({"unchecked"})
public void testWriteEntity() { public void testWriteEntity() {
Person p = new Person(123456789, "John", "Doe", 37);
Address addr = new Address(); Address addr = new Address();
addr.setLines(new String[]{"1234 W. 1st Street", "Apt. 12"}); addr.setLines(new String[]{"1234 W. 1st Street", "Apt. 12"});
addr.setCity("Anytown"); addr.setCity("Anytown");
addr.setPostalCode(12345); addr.setPostalCode(12345);
addr.setCountry("USA"); addr.setCountry("USA");
p.setAddress(addr);
Account acct = new Account(); Account acct = new Account();
acct.setBalance(1000.00f); acct.setBalance(1000.00f);
@ -115,8 +108,9 @@ public class MappingTests {
List<Account> accounts = new ArrayList<Account>(); List<Account> accounts = new ArrayList<Account>();
accounts.add(acct); accounts.add(acct);
p.setAccounts(accounts);
Person p = new Person(123456789, "John", "Doe", 37, addr);
p.setAccounts(accounts);
template.insert("person", p); template.insert("person", p);
assertNotNull(p.getId()); assertNotNull(p.getId());

11
spring-data-mongodb/src/test/java/org/springframework/data/document/mongodb/mapping/Person.java

@ -52,13 +52,6 @@ public class Person<T extends Address> {
@Autowired @Autowired
private MongoTemplate mongoTemplate; 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 @PersistenceConstructor
public Person(Integer ssn, String firstName, String lastName, Integer age, T address) { public Person(Integer ssn, String firstName, String lastName, Integer age, T address) {
this.ssn = ssn; this.ssn = ssn;
@ -80,6 +73,10 @@ public class Person<T extends Address> {
return ssn; return ssn;
} }
public void setSsn(Integer ssn) {
this.ssn = ssn;
}
public String getFirstName() { public String getFirstName() {
return firstName; return firstName;
} }

32
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 <jbrisbin@vmware.com> * @author Jon Brisbin <jbrisbin@vmware.com>
*/ */
public class PersonCustomIdName { public class PersonCustomIdName extends BasePerson {
@Id @Id
private ObjectId customId; private ObjectId customId;
private Integer ssn;
private String firstName;
private String lastName;
public PersonCustomIdName(Integer ssn, String firstName, String lastName) { public PersonCustomIdName(Integer ssn, String firstName, String lastName) {
this.ssn = ssn; super(ssn, firstName, lastName);
this.firstName = firstName;
this.lastName = lastName;
} }
public ObjectId getCustomId() { public ObjectId getCustomId() {
@ -44,27 +39,4 @@ public class PersonCustomIdName {
this.customId = customId; 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;
}
} }

33
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 <jbrisbin@vmware.com> * @author Jon Brisbin <jbrisbin@vmware.com>
*/ */
public class PersonPojo { public class PersonPojo extends BasePerson {
private ObjectId id; private ObjectId id;
private Integer ssn;
private String firstName;
private String lastName;
public PersonPojo(Integer ssn, String firstName, String lastName) { public PersonPojo(Integer ssn, String firstName, String lastName) {
this.ssn = ssn; super(ssn, firstName, lastName);
this.firstName = firstName;
this.lastName = lastName;
} }
public ObjectId getId() { public ObjectId getId() {
@ -41,28 +36,4 @@ public class PersonPojo {
public void setId(ObjectId id) { public void setId(ObjectId id) {
this.id = 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;
}
} }

Loading…
Cancel
Save