diff --git a/spring-data-commons-core/src/main/java/org/springframework/data/mapping/PersistentProperty.java b/spring-data-commons-core/src/main/java/org/springframework/data/mapping/PersistentProperty.java index 66cf12f0c..3ba7bee40 100644 --- a/spring-data-commons-core/src/main/java/org/springframework/data/mapping/PersistentProperty.java +++ b/spring-data-commons-core/src/main/java/org/springframework/data/mapping/PersistentProperty.java @@ -54,6 +54,14 @@ public interface PersistentProperty

> { Association

getAssociation(); + /** + * Returns whether the type of the {@link PersistentProperty} is actually to be regarded as {@link PersistentEntity} + * in turn. + * + * @return + */ + boolean isEntity(); + /** * Returns whether the property is the ID property of the owning {@link PersistentEntity}. * diff --git a/spring-data-commons-core/src/main/java/org/springframework/data/mapping/context/AbstractMappingContext.java b/spring-data-commons-core/src/main/java/org/springframework/data/mapping/context/AbstractMappingContext.java index 9815dd53c..736edd374 100644 --- a/spring-data-commons-core/src/main/java/org/springframework/data/mapping/context/AbstractMappingContext.java +++ b/spring-data-commons-core/src/main/java/org/springframework/data/mapping/context/AbstractMappingContext.java @@ -165,6 +165,24 @@ public abstract class AbstractMappingContext(entity, typeInformation)); + applicationEventPublisher.publishEvent(new MappingContextEvent(entity)); } return entity; diff --git a/spring-data-commons-core/src/main/java/org/springframework/data/mapping/context/MappingContext.java b/spring-data-commons-core/src/main/java/org/springframework/data/mapping/context/MappingContext.java index 889e7c689..d62430c5a 100644 --- a/spring-data-commons-core/src/main/java/org/springframework/data/mapping/context/MappingContext.java +++ b/spring-data-commons-core/src/main/java/org/springframework/data/mapping/context/MappingContext.java @@ -1,4 +1,5 @@ -/* Copyright 2004-2005 the original author or authors. +/* + * Copyright 2011-2012 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,32 +18,20 @@ package org.springframework.data.mapping.context; import java.util.Collection; import java.util.List; -import org.springframework.data.mapping.PropertyPath; import org.springframework.data.mapping.PersistentEntity; import org.springframework.data.mapping.PersistentProperty; +import org.springframework.data.mapping.PropertyPath; import org.springframework.data.util.TypeInformation; import org.springframework.validation.Validator; /** - *

* This interface defines the overall context including all known PersistentEntity instances and methods to obtain - * instances on demand - *

- *

- *

- * This interface is used internally to establish associations between entities and also at runtime to obtain entities - * by name - *

- *

- *

- * The generic type parameters T & R are used to specify the mapped form of a class (example Table) and property - * (example Column) respectively. - *

- *

+ * instances on demand. it is used internally to establish associations between entities and also at runtime to obtain + * entities by name. * - * @author Graeme Rocher - * @author Jon Brisbin * @author Oliver Gierke + * @author Jon Brisbin + * @author Graeme Rocher */ public interface MappingContext, P extends PersistentProperty

> { @@ -69,6 +58,15 @@ public interface MappingContext, P extends Pers */ E getPersistentEntity(TypeInformation type); + /** + * Returns the {@link PersistentEntity} mapped by the given {@link PersistentProperty}. + * + * @param persistentProperty + * @return the {@link PersistentEntity} mapped by the given {@link PersistentProperty} or null if no + * {@link PersistentEntity} exists for it or the {@link PersistentProperty} does not refer to an entity. + */ + E getPersistentEntity(P persistentProperty); + /** * Returns all {@link PersistentProperty}s for the given path expression based on the given {@link PropertyPath}. * diff --git a/spring-data-commons-core/src/main/java/org/springframework/data/mapping/model/AbstractPersistentProperty.java b/spring-data-commons-core/src/main/java/org/springframework/data/mapping/model/AbstractPersistentProperty.java index fea40007f..6afbed9db 100644 --- a/spring-data-commons-core/src/main/java/org/springframework/data/mapping/model/AbstractPersistentProperty.java +++ b/spring-data-commons-core/src/main/java/org/springframework/data/mapping/model/AbstractPersistentProperty.java @@ -175,7 +175,11 @@ public abstract class AbstractPersistentProperty

return getType().isArray(); } - protected boolean isEntity() { + /* + * (non-Javadoc) + * @see org.springframework.data.mapping.PersistentProperty#isEntity() + */ + public boolean isEntity() { TypeInformation actualType = information.getActualType(); boolean isComplexType = actualType == null ? false : !simpleTypeHolder.isSimpleType(actualType.getType());