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());