Author: vrubezhny
Date: 2009-10-24 10:41:01 -0400 (Sat, 24 Oct 2009)
New Revision: 18283
Modified:
branches/jbosstools-3.1.0.M4/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/IIncludedContextSupport.java
branches/jbosstools-3.1.0.M4/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/PageContextFactory.java
branches/jbosstools-3.1.0.M4/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/internal/XmlContextImpl.java
Log:
JBIDE-5083: java.lang.StackOverflowError exception when DND the same file into page
The fix for 3.1.0.M4 is committed
Modified:
branches/jbosstools-3.1.0.M4/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/IIncludedContextSupport.java
===================================================================
---
branches/jbosstools-3.1.0.M4/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/IIncludedContextSupport.java 2009-10-24
02:45:58 UTC (rev 18282)
+++
branches/jbosstools-3.1.0.M4/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/IIncludedContextSupport.java 2009-10-24
14:41:01 UTC (rev 18283)
@@ -51,4 +51,27 @@
* @return
*/
Map<String, List<INameSpace>> getNameSpaces(int offset);
+
+
+ /**
+ * Checks if the context exists in parent contexts for the specified resource
+ *
+ * @param resource
+ * @return
+ */
+ boolean contextExistsInParents(IFile resource);
+
+ /**
+ * Set up parent context
+ *
+ * @param parent
+ */
+ void setParent(IIncludedContextSupport parent);
+
+ /**
+ * Returns parent context
+ *
+ * @return
+ */
+ IIncludedContextSupport getParent();
}
Modified:
branches/jbosstools-3.1.0.M4/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/PageContextFactory.java
===================================================================
---
branches/jbosstools-3.1.0.M4/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/PageContextFactory.java 2009-10-24
02:45:58 UTC (rev 18282)
+++
branches/jbosstools-3.1.0.M4/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/PageContextFactory.java 2009-10-24
14:41:01 UTC (rev 18283)
@@ -309,15 +309,20 @@
if (file == null)
return;
+ // Fix for JBIDE-5083 >>>
+ if (context.contextExistsInParents(file))
+ return;
+ // Fix for JBIDE-5083 <<<
+
IStructuredModel sModel = null;
try {
sModel = StructuredModelManager.getModelManager()
.getModelForRead(file);
} catch (IOException e) {
- // Ignore. The sModel will be set to null
+ WebKbPlugin.getDefault().logError(e);
} catch (CoreException e) {
- // Ignore. The sModel will be set to null
+ WebKbPlugin.getDefault().logError(e);
}
if (sModel == null)
@@ -400,9 +405,9 @@
sModel = StructuredModelManager.getModelManager()
.getModelForRead(file);
} catch (IOException e) {
- // Ignore. The sModel will be set to null
+ WebKbPlugin.getDefault().logError(e);
} catch (CoreException e) {
- // Ignore. The sModel will be set to null
+ WebKbPlugin.getDefault().logError(e);
}
if (sModel == null)
@@ -433,9 +438,9 @@
sModel = StructuredModelManager.getModelManager()
.getModelForRead(context.getResource());
} catch (IOException e) {
- // Ignore. The sModel will be set to null
+ WebKbPlugin.getDefault().logError(e);
} catch (CoreException e) {
- // Ignore. The sModel will be set to null
+ WebKbPlugin.getDefault().logError(e);
}
if (sModel == null)
@@ -538,9 +543,9 @@
sModel = StructuredModelManager.getModelManager()
.getModelForRead(context.getResource());
} catch (IOException e) {
- // Ignore. The sModel will be set to null
+ WebKbPlugin.getDefault().logError(e);
} catch (CoreException e) {
- // Ignore. The sModel will be set to null
+ WebKbPlugin.getDefault().logError(e);
}
if (sModel == null)
@@ -656,9 +661,9 @@
try {
sModel =
StructuredModelManager.getModelManager().getModelForRead(context.getResource());
} catch (IOException e) {
- // Ignore. The sModel will be set to null
+ WebKbPlugin.getDefault().logError(e);
} catch (CoreException e) {
- // Ignore. The sModel will be set to null
+ WebKbPlugin.getDefault().logError(e);
}
if (sModel == null)
Modified:
branches/jbosstools-3.1.0.M4/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/internal/XmlContextImpl.java
===================================================================
---
branches/jbosstools-3.1.0.M4/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/internal/XmlContextImpl.java 2009-10-24
02:45:58 UTC (rev 18282)
+++
branches/jbosstools-3.1.0.M4/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/internal/XmlContextImpl.java 2009-10-24
14:41:01 UTC (rev 18283)
@@ -6,6 +6,7 @@
import java.util.Map;
import java.util.Set;
+import org.eclipse.core.resources.IFile;
import org.eclipse.jface.text.IDocument;
import org.eclipse.jface.text.IRegion;
import org.eclipse.ui.part.IPage;
@@ -21,6 +22,7 @@
protected ITagLibrary[] libs;
protected Map<IRegion, Map<String, INameSpace>> nameSpaces = new
HashMap<IRegion, Map<String, INameSpace>>();
protected IResourceBundle[] bundles;
+ private IIncludedContextSupport parentContext = null;
/*
* (non-Javadoc)
@@ -149,14 +151,48 @@
nameSpaces.get(region).put(nameSpace.getURI(), nameSpace);
}
+ /**
+ * (non-Javadoc)
+ * @see
org.jboss.tools.jst.web.kb.IIncludedContextSupport#addIncludedContext(org.jboss.tools.jst.web.kb.IPageContext)
+ */
public void addIncludedContext(IPageContext includedContext) {
throw new UnsupportedOperationException();
}
+ /**
+ * (non-Javadoc)
+ * @see org.jboss.tools.jst.web.kb.IIncludedContextSupport#getIncludedContexts()
+ */
public List<IPageContext> getIncludedContexts() {
return null;
}
-
-
+
+ /**
+ * (non-Javadoc)
+ * @see
org.jboss.tools.jst.web.kb.IIncludedContextSupport#contextExistsInParents(org.eclipse.core.resources.IFile)
+ */
+ public boolean contextExistsInParents(IFile resource) {
+ // Assuming that the resource must not be null here
+ if (resource.equals(getResource()))
+ return true;
+
+ return getParent() == null ? false : getParent().contextExistsInParents(resource);
+ }
+
+ /**
+ * (non-Javadoc)
+ * @see org.jboss.tools.jst.web.kb.IIncludedContextSupport#getParent()
+ */
+ public IIncludedContextSupport getParent() {
+ return parentContext;
+ }
+
+ /**
+ * (non-Javadoc)
+ * @see
org.jboss.tools.jst.web.kb.IIncludedContextSupport#setParent(org.jboss.tools.jst.web.kb.IIncludedContextSupport)
+ */
+ public void setParent(IIncludedContextSupport parent) {
+ parentContext = parent;
+ }
}