Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/persistence/GenericMappingFileRef.java')
-rw-r--r--jpa/plugins/org.eclipse.jpt.core/src/org/eclipse/jpt/core/internal/context/persistence/GenericMappingFileRef.java101
1 files changed, 55 insertions, 46 deletions
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 8649fb0819..ada461049c 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.PersistenceStructureNodes;
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 @@ public class GenericMappingFileRef extends AbstractXmlContextNode
protected void initialize(XmlMappingFileRef mappingFileRef) {
this.xmlMappingFileRef = mappingFileRef;
initializeFileName();
- initializeOrmXml();
+ initializeMappingFile();
}
protected void initializeFileName() {
@@ -108,14 +106,13 @@ public class GenericMappingFileRef extends AbstractXmlContextNode
}
}
- 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 @@ public class GenericMappingFileRef extends AbstractXmlContextNode
}
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 @@ public class GenericMappingFileRef extends AbstractXmlContextNode
}
}
+ 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 @@ public class GenericMappingFileRef extends AbstractXmlContextNode
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 @@ public class GenericMappingFileRef extends AbstractXmlContextNode
JpaValidationMessages.PERSISTENCE_UNIT_INVALID_MAPPING_FILE,
new String[] {this.fileName},
this,
- this.getValidationTextRange()
- )
- );
+ this.getValidationTextRange()));
}
this.mappingFile.validate(messages);

Back to the top