Author: scabanovich
Date: 2009-02-04 10:40:50 -0500 (Wed, 04 Feb 2009)
New Revision: 13466
Modified:
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/project/ModelNature.java
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/util/EclipseResourceUtil.java
Log:
JBIDE-3730
Modified:
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/project/ModelNature.java
===================================================================
---
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/project/ModelNature.java 2009-02-04
14:13:20 UTC (rev 13465)
+++
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/project/ModelNature.java 2009-02-04
15:40:50 UTC (rev 13466)
@@ -190,4 +190,41 @@
return null;
}
+ /**
+ * These hack methods are used to prevent loading model nature
+ * when its project data is not stored in xmodel settings and should
+ * be loaded from WTP, but project is not synchronized yet so that
+ * loading will fail and xmodel will be corrupted.
+ * @param project
+ * @return
+ */
+ public static boolean checkModelNature(IProject project) {
+ if(project == null || !project.isOpen()) return false;
+ String nature = null;
+ try {
+ if(project.hasNature("org.jboss.tools.jsf.jsfnature")) {
+ nature = "org.jboss.tools.jsf.jsfnature";
+ } else if(project.hasNature("org.jboss.tools.struts.strutsnature")) {
+ nature = "org.jboss.tools.struts.strutsnature";
+ }
+ } catch (CoreException e) {
+ ModelPlugin.getPluginLog().logError(e);
+ return false;
+ }
+ return checkModelNature(project, nature);
+ }
+
+ public static boolean checkModelNature(IProject project, String nature) {
+ if(project == null || !project.isOpen()) return false;
+ if(nature == null) return false;
+ String home = new ProjectHome().getLocation(project);
+ if(home != null && home.length() > 0) {
+ return true;
+ }
+ if(!project.isSynchronized(1)) {
+ return false;
+ }
+ return true;
+ }
+
}
Modified:
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/util/EclipseResourceUtil.java
===================================================================
---
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/util/EclipseResourceUtil.java 2009-02-04
14:13:20 UTC (rev 13465)
+++
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/util/EclipseResourceUtil.java 2009-02-04
15:40:50 UTC (rev 13466)
@@ -37,6 +37,7 @@
import org.jboss.tools.common.model.impl.XModelObjectImpl;
import org.jboss.tools.common.model.plugin.ModelPlugin;
import org.jboss.tools.common.model.project.IModelNature;
+import org.jboss.tools.common.model.project.ModelNature;
public class EclipseResourceUtil {
@@ -213,6 +214,9 @@
for (int i = 0; i < natures.length; i++) {
try {
if(p.hasNature(natures[i])) {
+ if(!ModelNature.checkModelNature(p, natures[i])) {
+ continue;
+ }
IModelNature n = (IModelNature)p.getNature(natures[i]);
if(n == null) return null;
n = testNature(n);
@@ -242,6 +246,9 @@
if(p == null || !p.isOpen()) return null;
try {
if(p.hasNature(id)) {
+ if(!ModelNature.checkModelNature(p, id)) {
+ return null;
+ }
IModelNature n = (IModelNature)p.getNature(id);
if(n == null) return null;
n = testNature(n);
Show replies by thread