diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/Entity.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/Entity.java
index a26d22f..b7ae57f 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/Entity.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/Entity.java
@@ -278,6 +278,19 @@
 		String DESCENDANTS_COLLECTION = "descendants"; //$NON-NLS-1$
 
 
+	// ********** validation **********
+
+	/**
+	 * Returns the {@link TextRange} of the name property.
+	 */
+	TextRange getNameTextRange();
+
+	/**
+	 * Return whether this entity should be validated and have validation messages displayed
+	 */
+	boolean supportsValidationMessages();
+
+
 	// ********** misc **********
 
 	/**
@@ -292,9 +305,4 @@
 	 */
 	PersistentAttribute getIdAttribute();
 
-	/**
-	 * Returns the {@link TextRange} of the name property.
-	 */
-	TextRange getNameTextRange();
-
 }
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaEntity.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaEntity.java
index 0bbc1c7..85cc9db 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaEntity.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/java/AbstractJavaEntity.java
@@ -1341,6 +1341,10 @@
 		}
 	}
 
+	public boolean supportsValidationMessages() {
+		return MappingTools.nodeIsInternalSource(this, this.getJavaResourceType());
+	}
+
 	public TextRange getNameTextRange() {
 		return this.getMappingAnnotation().getNameTextRange();
 	}
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmEntity.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmEntity.java
index 0640626..741b438 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmEntity.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/orm/AbstractOrmEntity.java
@@ -1783,6 +1783,10 @@
 		}
 	}
 
+	public boolean supportsValidationMessages() {
+		return true;
+	}
+
 	@Override
 	public TextRange getNameTextRange() {
 		return this.getXmlTypeMapping().getNameTextRange();
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/persistence/AbstractPersistenceUnit.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/persistence/AbstractPersistenceUnit.java
index 853f681..bade179 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/persistence/AbstractPersistenceUnit.java
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/persistence/AbstractPersistenceUnit.java
@@ -66,13 +66,11 @@
 import org.eclipse.jpt.jpa.core.context.Query;
 import org.eclipse.jpt.jpa.core.context.ReadOnlyPersistentAttribute;
 import org.eclipse.jpt.jpa.core.context.TypeMapping;
-import org.eclipse.jpt.jpa.core.context.java.JavaEntity;
 import org.eclipse.jpt.jpa.core.context.java.JavaGenerator;
 import org.eclipse.jpt.jpa.core.context.java.JavaPersistentType;
 import org.eclipse.jpt.jpa.core.context.java.JavaQuery;
 import org.eclipse.jpt.jpa.core.context.java.JavaTypeMappingDefinition;
 import org.eclipse.jpt.jpa.core.context.orm.EntityMappings;
-import org.eclipse.jpt.jpa.core.context.orm.OrmEntity;
 import org.eclipse.jpt.jpa.core.context.orm.OrmQueryContainer;
 import org.eclipse.jpt.jpa.core.context.persistence.ClassRef;
 import org.eclipse.jpt.jpa.core.context.persistence.JarFileRef;
@@ -83,7 +81,6 @@
 import org.eclipse.jpt.jpa.core.context.persistence.PersistenceUnitTransactionType;
 import org.eclipse.jpt.jpa.core.context.persistence.PersistentTypeContainer;
 import org.eclipse.jpt.jpa.core.internal.JptCoreMessages;
-import org.eclipse.jpt.jpa.core.internal.context.MappingTools;
 import org.eclipse.jpt.jpa.core.internal.plugin.JptJpaCorePlugin;
 import org.eclipse.jpt.jpa.core.internal.validation.DefaultJpaValidationMessages;
 import org.eclipse.jpt.jpa.core.internal.validation.JpaValidationMessages;
@@ -2622,7 +2619,7 @@
 	protected void validateEntitiesWithSameName(String entityName, ArrayList<Entity> dups, List<IMessage> messages) {
 		String[] parms = new String[] {entityName};
 		for (Entity dup : dups) {
-			if (this.entitySupportsValidationMessages(dup)) {
+			if (dup.supportsValidationMessages()) {
 				messages.add(
 					DefaultJpaValidationMessages.buildMessage(
 						IMessage.HIGH_SEVERITY,
@@ -2636,14 +2633,6 @@
 		}
 	}
 
-	protected boolean entitySupportsValidationMessages(Entity entity) {
-		return (entity instanceof OrmEntity) || this.entitySupportsValidationMessages((JavaEntity) entity);
-	}
-
-	protected boolean entitySupportsValidationMessages(JavaEntity javaEntity) {
-		return MappingTools.nodeIsInternalSource(javaEntity, javaEntity.getJavaResourceType());
-	}
-
 	public boolean validatesAgainstDatabase() {
 		return this.connectionProfileIsActive();
 	}
