diff --git a/jpa/plugins/org.eclipse.jpt.core/property_files/jpa_validation.properties b/jpa/plugins/org.eclipse.jpt.core/property_files/jpa_validation.properties
index 7f0d00b..598a375 100644
--- a/jpa/plugins/org.eclipse.jpt.core/property_files/jpa_validation.properties
+++ b/jpa/plugins/org.eclipse.jpt.core/property_files/jpa_validation.properties
@@ -17,6 +17,7 @@
 PERSISTENCE_NO_PERSISTENCE_UNIT=No persistence unit defined
 PERSISTENCE_MULTIPLE_PERSISTENCE_UNITS=Multiple persistence units defined - only the first persistence unit will be recognized
 PERSISTENCE_UNIT_UNSPECIFIED_MAPPING_FILE=Unspecified mapping file
+PERSISTENCE_UNIT_UNSUPPORTED_MAPPING_FILE_CONTENT=Mapping file \"{0}\" does not have supported content for this JPA platform
 PERSISTENCE_UNIT_NONEXISTENT_MAPPING_FILE=Mapping file \"{0}\" cannot be resolved
 PERSISTENCE_UNIT_INVALID_MAPPING_FILE=Mapping file \"{0}\" does not have ORM content
 PERSISTENCE_UNIT_DUPLICATE_MAPPING_FILE=Duplicate mapping file \"{0}\"
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/persistence/GenericMappingFileRef.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/persistence/GenericMappingFileRef.java
index 8649fb0..ada4610 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/persistence/GenericMappingFileRef.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/persistence/GenericMappingFileRef.java
@@ -25,12 +25,10 @@
 import org.eclipse.jpt.core.context.persistence.PersistenceUnit;
 import org.eclipse.jpt.core.internal.context.AbstractXmlContextNode;
 import org.eclipse.jpt.core.internal.resource.JpaResourceModelProviderManager;
-import org.eclipse.jpt.core.internal.resource.orm.OrmResourceModelProvider;
 import org.eclipse.jpt.core.internal.validation.DefaultJpaValidationMessages;
 import org.eclipse.jpt.core.internal.validation.JpaValidationMessages;
 import org.eclipse.jpt.core.resource.JpaResourceModelProvider;
 import org.eclipse.jpt.core.resource.common.JpaXmlResource;
-import org.eclipse.jpt.core.resource.orm.OrmResource;
 import org.eclipse.jpt.core.resource.persistence.XmlMappingFileRef;
 import org.eclipse.jpt.core.utility.TextRange;
 import org.eclipse.jpt.utility.internal.StringTools;
@@ -96,7 +94,7 @@
 	protected void initialize(XmlMappingFileRef mappingFileRef) {
 		this.xmlMappingFileRef = mappingFileRef;
 		initializeFileName();
-		initializeOrmXml();
+		initializeMappingFile();
 	}
 	
 	protected void initializeFileName() {
@@ -108,14 +106,13 @@
 		}
 	}
 	
-	protected void initializeOrmXml() {
-		if (fileName != null) {
-			OrmResourceModelProvider modelProvider =
-				OrmResourceModelProvider.getModelProvider(getJpaProject().getProject(), fileName);
-			OrmResource ormResource = modelProvider.getResource();
-			
-			if (ormResource != null && ormResource.exists()) {
-				mappingFile = buildMappingFile(ormResource);
+	protected void initializeMappingFile() {
+		IFile platformFile = getPlatformFile();
+		if ((platformFile != null) && platformFile.exists()) {
+			JpaResourceModelProvider modelProvider = JpaResourceModelProviderManager.instance().getModelProvider(platformFile);
+			JpaXmlResource resource = (modelProvider == null) ? null : modelProvider.getResource();
+			if (resource != null && resource.exists()) {
+				this.mappingFile = buildMappingFile(resource);
 			}
 		}
 	}
@@ -136,26 +133,23 @@
 	}
 	
 	protected void updateMappingFile() {
-		if (fileName != null) {
-			IProject project = getJpaProject().getProject();
-			IVirtualFile vFile = ComponentCore.createFile(project, new Path(fileName));
-			IFile realFile = vFile.getUnderlyingFile();
-			
-			if ((realFile != null) && realFile.exists()) {
-				JpaResourceModelProvider modelProvider = JpaResourceModelProviderManager.instance().getModelProvider(realFile);
-				JpaXmlResource resource = (modelProvider == null) ? null : modelProvider.getResource();
-				if (resource != null) {
-					if (this.mappingFile != null && ! resource.equals(this.mappingFile.getXmlResource())) {
-						this.mappingFile.dispose();
-					}
-					if (this.mappingFile == null) {
-						setMappingFile(buildMappingFile(resource));
-					}
-					else {
-						this.mappingFile.update(resource);
-					}
-					return;
+		IFile platformFile = getPlatformFile();	
+		if ((platformFile != null) && platformFile.exists()) {
+			JpaResourceModelProvider modelProvider = JpaResourceModelProviderManager.instance().getModelProvider(platformFile);
+			JpaXmlResource resource = (modelProvider == null) ? null : modelProvider.getResource();
+			if (resource != null && resource.exists()) {
+				// this check is done to determine whether the resource type has 
+				// changed.  if so, the mapping file must be rebuilt.
+				if (this.mappingFile != null && ! resource.equals(this.mappingFile.getXmlResource())) {
+					this.mappingFile.dispose();
 				}
+				if (this.mappingFile == null) {
+					setMappingFile(buildMappingFile(resource));
+				}
+				else {
+					this.mappingFile.update(resource);
+				}
+				return;
 			}
 		}
 		
@@ -165,6 +159,15 @@
 		}
 	}
 	
+	protected IFile getPlatformFile() {
+		if (fileName == null) {
+			return null;
+		}
+		IProject project = getJpaProject().getProject();
+		IVirtualFile vFile = ComponentCore.createFile(project, new Path(fileName));
+		return vFile.getUnderlyingFile();
+	}
+	
 	protected MappingFile buildMappingFile(JpaXmlResource resource) {
 		XmlContextNode context = this.getJpaFactory().buildContextNode(this, resource);
 		try {
@@ -242,22 +245,30 @@
 					IMessage.HIGH_SEVERITY,
 					JpaValidationMessages.PERSISTENCE_UNIT_UNSPECIFIED_MAPPING_FILE,
 					this,
-					this.getValidationTextRange()
-				)
-			);
+					this.getValidationTextRange()));
 			return;
 		}
-
+		
 		if (this.mappingFile == null) {
-			messages.add(
-				DefaultJpaValidationMessages.buildMessage(
-					IMessage.HIGH_SEVERITY,
-					JpaValidationMessages.PERSISTENCE_UNIT_NONEXISTENT_MAPPING_FILE,
-					new String[] {this.fileName},
-					this,
-					this.getValidationTextRange()
-				)
-			);
+			IFile platformFile = getPlatformFile();
+			if (platformFile != null && platformFile.exists()) {
+				messages.add(
+					DefaultJpaValidationMessages.buildMessage(
+						IMessage.HIGH_SEVERITY,
+						JpaValidationMessages.PERSISTENCE_UNIT_UNSUPPORTED_MAPPING_FILE_CONTENT,
+						new String[] {this.fileName},
+						this,
+						this.getValidationTextRange()));
+			}
+			else {
+				messages.add(
+					DefaultJpaValidationMessages.buildMessage(
+						IMessage.HIGH_SEVERITY,
+						JpaValidationMessages.PERSISTENCE_UNIT_NONEXISTENT_MAPPING_FILE,
+						new String[] {this.fileName},
+						this,
+						this.getValidationTextRange()));
+			}
 			return;
 		}
 
@@ -268,9 +279,7 @@
 					JpaValidationMessages.PERSISTENCE_UNIT_INVALID_MAPPING_FILE,
 					new String[] {this.fileName},
 					this,
-					this.getValidationTextRange()
-				)
-			);
+					this.getValidationTextRange()));
 		}
 
 		this.mappingFile.validate(messages);
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/GenericJpaFactory.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/GenericJpaFactory.java
index cb578a1..79cf8c7 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/GenericJpaFactory.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/platform/GenericJpaFactory.java
@@ -283,10 +283,10 @@
 	}
 	
 	public XmlContextNode buildContextNode(JpaContextNode parent, JpaXmlResource resource) {
-		if (resource instanceof PersistenceResource) {
+		if (resource.getType() == JpaFile.PERSISTENCE_RESOURCE_TYPE) {
 			return this.buildPersistenceXml((JpaRootContextNode) parent, (PersistenceResource) resource);
 		}
-		if (resource instanceof OrmResource) {
+		if (resource.getType() == JpaFile.ORM_RESOURCE_TYPE) {
 			return this.buildOrmXml((MappingFileRef) parent, (OrmResource) resource);
 		}
 		return null;
diff --git a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/validation/JpaValidationMessages.java b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/validation/JpaValidationMessages.java
index b2faee9..28586e9 100644
--- a/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/validation/JpaValidationMessages.java
+++ b/jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/validation/JpaValidationMessages.java
@@ -23,6 +23,7 @@
 	public static final String PERSISTENCE_NO_PERSISTENCE_UNIT = "PERSISTENCE_NO_PERSISTENCE_UNIT";
 	public static final String PERSISTENCE_MULTIPLE_PERSISTENCE_UNITS = "PERSISTENCE_MULTIPLE_PERSISTENCE_UNITS";
 	public static final String PERSISTENCE_UNIT_UNSPECIFIED_MAPPING_FILE = "PERSISTENCE_UNIT_UNSPECIFIED_MAPPING_FILE";
+	public static final String PERSISTENCE_UNIT_UNSUPPORTED_MAPPING_FILE_CONTENT = "PERSISTENCE_UNIT_UNSUPPORTED_MAPPING_FILE_CONTENT";
 	public static final String PERSISTENCE_UNIT_NONEXISTENT_MAPPING_FILE = "PERSISTENCE_UNIT_NONEXISTENT_MAPPING_FILE";
 	public static final String PERSISTENCE_UNIT_INVALID_MAPPING_FILE = "PERSISTENCE_UNIT_INVALID_MAPPING_FILE";
 	public static final String PERSISTENCE_UNIT_DUPLICATE_MAPPING_FILE = "PERSISTENCE_UNIT_DUPLICATE_MAPPING_FILE";
