[157099 file sync issue
diff --git a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/ModuleStructuralModel.java b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/ModuleStructuralModel.java
index ba98703..4306d7c 100644
--- a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/ModuleStructuralModel.java
+++ b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/ModuleStructuralModel.java
@@ -18,11 +18,14 @@
import java.util.List;
import java.util.Map;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.IWorkspace;
import org.eclipse.core.resources.IWorkspaceRunnable;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Platform;
@@ -73,6 +76,8 @@
*/
public class ModuleStructuralModel extends EditModel implements IAdaptable {
+ private static final String R0_7_MODULE_META_FILE_NAME = ".component";
+ private static final String R1_MODULE_META_FILE_NAME = ".settings/.component";
public static final String MODULE_CORE_ID = "moduleCoreId"; //$NON-NLS-1$
private static final String PROJECT_VERSION_1_5 = "1.5.0";
private boolean useOldFormat = false;
@@ -182,6 +187,10 @@
}
public Resource prepareProjectModulesIfNecessary() throws CoreException {
XMIResource res;
+ if (!isComponentSynchronizedOrNull()) {
+ //Return if component file is out of sync from workspace
+ return null;
+ }
res = (XMIResource) getPrimaryResource();
if (res != null && resNeedsMigrating(res) && !useOldFormat)
return null;
@@ -195,6 +204,27 @@
return res;
}
+ /**
+ * This methods checks the status of the component file, and first checks for existance, then if its locally synchronized
+ * @return boolean
+ */
+ private boolean isComponentSynchronizedOrNull() {
+ IFile componentFile = getProject().getFile(StructureEdit.MODULE_META_FILE_NAME);
+ IPath componentFileLocation = componentFile.getLocation();
+ if (componentFileLocation != null && !componentFileLocation.toFile().exists()) {
+ componentFile = getProject().getFile(R1_MODULE_META_FILE_NAME);
+ componentFileLocation = componentFile.getLocation();
+ if (componentFileLocation != null && !componentFileLocation.toFile().exists()) {
+ componentFile = getProject().getFile(R0_7_MODULE_META_FILE_NAME);
+ componentFileLocation = componentFile.getLocation();
+ if (componentFileLocation != null && !componentFileLocation.toFile().exists())
+ return true;
+ }
+ }
+ if (componentFileLocation == null)
+ return true;
+ else return componentFile.isSynchronized(IResource.DEPTH_ZERO);
+ }
public WTPModulesResource makeWTPModulesResource() {
return (WTPModulesResource) createResource(WTPModulesResourceFactory.WTP_MODULES_URI_OBJ);
}
@@ -221,16 +251,16 @@
// Overriden to handle loading the .component resource in new and old forms
// First will try to load from .settings/org.eclipse.wst.common.component
// Second will try to load from the old location(s) .settings/.component or .component
-
+
URI uri = (URI) URI.createURI(StructureEdit.MODULE_META_FILE_NAME);
WTPModulesResource res = (WTPModulesResource)getResource(uri);
if (res == null || !res.isLoaded()) {
removeResource(res);
- uri = (URI) URI.createURI(".settings/.component");
+ uri = (URI) URI.createURI(R1_MODULE_META_FILE_NAME);
res = (WTPModulesResource)getResource(uri);
if (res == null || !res.isLoaded()) {
removeResource(res);
- uri = (URI) URI.createURI(".component");
+ uri = (URI) URI.createURI(R0_7_MODULE_META_FILE_NAME);
res = (WTPModulesResource)getResource(uri);
if (res == null || !res.isLoaded()) {
removeResource(res);