[nobug] Fixing migration
diff --git a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/ModuleMigratorManager.java b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/ModuleMigratorManager.java
index 6980474..f7f8023 100644
--- a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/ModuleMigratorManager.java
+++ b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/ModuleMigratorManager.java
@@ -6,7 +6,7 @@
 import org.eclipse.core.resources.IFolder;
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.WorkspaceJob;
+import org.eclipse.core.resources.ResourcesPlugin;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
@@ -18,6 +18,7 @@
 import org.eclipse.wst.common.componentcore.datamodel.properties.IProjectMigratorDataModelProperties;
 import org.eclipse.wst.common.frameworks.datamodel.DataModelFactory;
 import org.eclipse.wst.common.frameworks.datamodel.IDataModel;
+import org.eclipse.wst.common.frameworks.internal.datamodel.IWorkspaceRunnableWithStatus;
 import org.eclipse.wst.common.internal.emfworkbench.WorkbenchResourceHelper;
 import org.eclipse.wst.common.project.facet.core.ProjectFacetsManager;
 
@@ -36,53 +37,69 @@
 		return manager;
 	}
 	private void migrateComponentsIfNecessary(IProject project) {
-		migrated.add(project);
-		WorkspaceJob job = new WorkspaceJob("Adding Facets")
-	      {
-	        
-	        public IStatus runInWorkspace(IProgressMonitor monitor)
-	        {
-	          try
-	          {	
+		
+//		WorkspaceJob job = new WorkspaceJob("Adding Facets")
+//	      {
+//	        
+//	        public IStatus runInWorkspace(IProgressMonitor monitor)
+//	        {
+//	          try
+//	          {	
 	        	  
 	        	  IProject[] projects = WorkbenchResourceHelper.getWorkspace().getRoot().getProjects();
 			      for (int i = 0; i < projects.length; i++) {
-						IProject project = projects[i];
-						
+						IProject proj = projects[i];
+						migrated.add(proj);
 						IDataModel dm = DataModelFactory.createDataModel(new ProjectMigratorDataModelProvider());
-						dm.setStringProperty(IProjectMigratorDataModelProperties.PROJECT_NAME,project.getName());
+						dm.setStringProperty(IProjectMigratorDataModelProperties.PROJECT_NAME,proj.getName());
 						try {
 							dm.getDefaultOperation().execute(null,null);
 						} catch (ExecutionException e) {
 							// TODO Auto-generated catch block
 							e.printStackTrace();
 						}
+			      }
 						
-					}}
-	          catch (Exception e)
-	          {
-	        	  return Status.CANCEL_STATUS;
-	          }
-	          return Status.OK_STATUS;
-	        }
-	      };
-	      job.schedule(5000);
+//					}}
+//	          catch (Exception e)
+//	          {
+//	        	  return Status.CANCEL_STATUS;
+//	          }
+//	          return Status.OK_STATUS;
+//	        }
+//	      };
+//	      job.setRule(ResourcesPlugin.getWorkspace().getRuleFactory().buildRule());
+//	      job.schedule();
 		
 	}
 	public synchronized void migrateOldMetaData(IProject aProject) throws CoreException {
-		migrating = true;
-		try {
-			if (aProject.isAccessible() && ModuleCoreNature.isFlexibleProject(aProject)) {
-				if (aProject.findMember(".wtpmodules") != null && (!moved.contains(aProject)))
-					moveOldMetaDataFile();
-				if ((aProject.findMember(".settings/.component") != null) && 
-						(ProjectFacetsManager.create(aProject) == null) &&
-						(!migrated.contains(aProject)))
-					migrateComponentsIfNecessary(aProject);
+		
+		IWorkspaceRunnableWithStatus workspaceRunnable = new IWorkspaceRunnableWithStatus(aProject) {
+			public void run(IProgressMonitor pm) throws CoreException {
+				IProject aProj = (IProject)this.getInfo();
+				migrating = true;
+				try {
+					if (aProj.isAccessible() && ModuleCoreNature.isFlexibleProject(aProj)) {
+						if (aProj.findMember(".wtpmodules") != null) {
+							if (!moved.contains(aProj))
+								moveOldMetaDataFile();
+						} else moved.add(aProj);
+						if ((aProj.findMember(".settings/.component") != null) && 
+								(ProjectFacetsManager.create(aProj) == null) &&
+								(!migrated.contains(aProj)))
+							migrateComponentsIfNecessary(aProj);
+					}
+				} finally {
+					migrating = false;
+				}
 			}
-		} finally {
-			migrating = false;
-		}
+		};
+		
+		ResourcesPlugin.getWorkspace().run(workspaceRunnable, null);
+		
+		
+		
+		
 	}
 	private void moveMetaDataFile(IProject project) {
 		IResource oldfile = project.findMember(".wtpmodules");
@@ -99,11 +116,11 @@
 		}
 	}
 	private void moveOldMetaDataFile() {
-		WorkspaceJob job = new WorkspaceJob("Migrating metadata")
-	      {
-	        
-	        public IStatus runInWorkspace(IProgressMonitor monitor)
-	        {
+//		WorkspaceJob job = new WorkspaceJob("Migrating metadata")
+//	      {
+//	        
+//	        public IStatus runInWorkspace(IProgressMonitor monitor)
+//	        {
 	          try
 	          {
 	        	IProject[] projects = WorkbenchResourceHelper.getWorkspace().getRoot().getProjects();
@@ -113,19 +130,18 @@
 		      			moveMetaDataFile(project);
 	      				IFolder depFolder = project.getFolder(".deployables");
 	      				if (depFolder.exists())
-	      					depFolder.delete(true,monitor);
-		      			project.refreshLocal(IResource.DEPTH_INFINITE,monitor);
+	      					depFolder.delete(true,null);
+		      			project.refreshLocal(IResource.DEPTH_INFINITE,null);
 		      			moved.add(project);
 	      			}
-	      		}
-	          catch (Exception e)
-	          {
-	        	  return Status.CANCEL_STATUS;
+	      		
+	          } catch (Exception e) {
 	          }
-	          return Status.OK_STATUS;
-	        }
-	      };
-	      job.schedule();
+//	          return Status.OK_STATUS;
+//	        }
+//	      };
+//	      job.setRule(ResourcesPlugin.getWorkspace().getRuleFactory().buildRule());
+//	      job.schedule();
 	}
 	protected boolean isMigrating() {
 		return migrating;
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 80be515..7013a2e 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
@@ -117,7 +117,7 @@
 			addProjectModulesIfNecessary(res);
 		} catch (IOException e) {		
 			Platform.getLog(ModulecorePlugin.getDefault().getBundle()).log(new Status(IStatus.ERROR, ModulecorePlugin.PLUGIN_ID, IStatus.ERROR, e.getMessage(), e));
-		}
+		} 
 		return res;
 	}