Browse Source

Tweaks to BasicMappingContext.

Re-added a initialEntitySet property to BasicMappingContext and let trigger adding those to the context in afterPropertiesSet(). Moved createPersistentEntity and createPersistentProperty methods from MappingConfigurationBuilder into BasicMappingContext (could probably be done for all of those methods still in MCB).

Opened up getPersistentEntites() in MappingContext interface to return Collection<? extends PersistentEntity> to allow easy overriding in subclasses with more specific types.
pull/2/head
Oliver Gierke 15 years ago
parent
commit
06463a0b58
  1. 27
      spring-data-commons-core/src/main/java/org/springframework/data/mapping/BasicMappingContext.java
  2. 8
      spring-data-commons-core/src/main/java/org/springframework/data/mapping/model/MappingConfigurationBuilder.java
  3. 2
      spring-data-commons-core/src/main/java/org/springframework/data/mapping/model/MappingContext.java

27
spring-data-commons-core/src/main/java/org/springframework/data/mapping/BasicMappingContext.java

@ -25,8 +25,10 @@ import java.lang.reflect.Modifier; @@ -25,8 +25,10 @@ import java.lang.reflect.Modifier;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
@ -69,6 +71,8 @@ public class BasicMappingContext implements MappingContext, InitializingBean, Ap @@ -69,6 +71,8 @@ public class BasicMappingContext implements MappingContext, InitializingBean, Ap
protected GenericConversionService conversionService = ConversionServiceFactory.createDefaultConversionService();
private List<Class<?>> customSimpleTypes = new ArrayList<Class<?>>();
private Set<Class<?>> initialEntitySet = new HashSet<Class<?>>();
public BasicMappingContext() {
builder = new BasicMappingConfigurationBuilder();
}
@ -93,7 +97,11 @@ public class BasicMappingContext implements MappingContext, InitializingBean, Ap @@ -93,7 +97,11 @@ public class BasicMappingContext implements MappingContext, InitializingBean, Ap
this.applicationContext = applicationContext;
}
public Collection<PersistentEntity<?>> getPersistentEntities() {
public void setInitialEntitySet(Set<Class<?>> initialEntitySet) {
this.initialEntitySet = initialEntitySet;
}
public Collection<? extends PersistentEntity<?>> getPersistentEntities() {
return persistentEntities.values();
}
@ -121,7 +129,7 @@ public class BasicMappingContext implements MappingContext, InitializingBean, Ap @@ -121,7 +129,7 @@ public class BasicMappingContext implements MappingContext, InitializingBean, Ap
Class<T> type = (Class<T>) typeInformation.getType();
try {
final PersistentEntity<T> entity = builder.createPersistentEntity(typeInformation, this);
final PersistentEntity<T> entity = createPersistentEntity(typeInformation, this);
BeanInfo info = Introspector.getBeanInfo(type);
final Map<String, PropertyDescriptor> descriptors = new HashMap<String, PropertyDescriptor>();
@ -136,7 +144,7 @@ public class BasicMappingContext implements MappingContext, InitializingBean, Ap @@ -136,7 +144,7 @@ public class BasicMappingContext implements MappingContext, InitializingBean, Ap
PropertyDescriptor descriptor = descriptors.get(field.getName());
if (builder.isPersistentProperty(field, descriptor)) {
ReflectionUtils.makeAccessible(field);
PersistentProperty property = builder.createPersistentProperty(field, descriptor, entity.getPropertyInformation());
PersistentProperty property = createPersistentProperty(field, descriptor, entity.getPropertyInformation());
property.setOwner(entity);
entity.addPersistentProperty(property);
if (builder.isAssociation(field, descriptor)) {
@ -269,7 +277,20 @@ public class BasicMappingContext implements MappingContext, InitializingBean, Ap @@ -269,7 +277,20 @@ public class BasicMappingContext implements MappingContext, InitializingBean, Ap
return false;
}
protected <T> PersistentEntity<T> createPersistentEntity(TypeInformation typeInformation, MappingContext mappingContext)
throws MappingConfigurationException {
return new BasicPersistentEntity<T>(mappingContext, typeInformation);
}
protected PersistentProperty createPersistentProperty(Field field, PropertyDescriptor descriptor,
TypeInformation information) throws MappingConfigurationException {
return new BasicPersistentProperty(field, descriptor, information);
}
public void afterPropertiesSet() throws Exception {
Assert.notNull(builder, "No mapping configuration provider configured.");
for (Class<?> initialEntity : initialEntitySet) {
addPersistentEntity(initialEntity);
}
}
}

8
spring-data-commons-core/src/main/java/org/springframework/data/mapping/model/MappingConfigurationBuilder.java

@ -19,9 +19,6 @@ package org.springframework.data.mapping.model; @@ -19,9 +19,6 @@ package org.springframework.data.mapping.model;
import java.beans.PropertyDescriptor;
import java.lang.reflect.Field;
import org.springframework.data.mapping.BasicPersistentEntity;
import org.springframework.data.util.TypeInformation;
/**
* @author Jon Brisbin <jbrisbin@vmware.com>
*/
@ -29,16 +26,11 @@ public interface MappingConfigurationBuilder { @@ -29,16 +26,11 @@ public interface MappingConfigurationBuilder {
<T> boolean isPersistentEntity(Class<T> clazz);
<T> PersistentEntity<T> createPersistentEntity(TypeInformation typeInformation, MappingContext mappingContext) throws MappingConfigurationException;
boolean isPersistentProperty(Field field, PropertyDescriptor descriptor) throws MappingConfigurationException;
PersistentProperty createPersistentProperty(Field field, PropertyDescriptor descriptor, TypeInformation owningTypeInformation) throws MappingConfigurationException;
<T> PreferredConstructor<T> getPreferredConstructor(Class<T> clazz) throws MappingConfigurationException;
boolean isAssociation(Field field, PropertyDescriptor descriptor) throws MappingConfigurationException;
Association createAssociation(PersistentProperty property);
}

2
spring-data-commons-core/src/main/java/org/springframework/data/mapping/model/MappingContext.java

@ -46,7 +46,7 @@ public interface MappingContext extends InitializingBean { @@ -46,7 +46,7 @@ public interface MappingContext extends InitializingBean {
*
* @return A list of PersistentEntity instances
*/
Collection<PersistentEntity<?>> getPersistentEntities();
Collection<? extends PersistentEntity<?>> getPersistentEntities();
<T> PersistentEntity<T> getPersistentEntity(Class<T> type);

Loading…
Cancel
Save