Author: akazakov
Date: 2010-09-20 05:13:07 -0400 (Mon, 20 Sep 2010)
New Revision: 25018
Modified:
trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/PageContextFactory.java
trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/internal/validation/ValidationErrorManager.java
Log:
JBIDE-7021
https://jira.jboss.org/browse/JBIDE-7021 Applied the patch to fix some perfomance
problems.
Modified:
trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/PageContextFactory.java
===================================================================
---
trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/PageContextFactory.java 2010-09-20
03:37:58 UTC (rev 25017)
+++
trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/PageContextFactory.java 2010-09-20
09:13:07 UTC (rev 25018)
@@ -168,6 +168,7 @@
public static ELContext createPageContext(IFile file) {
return createPageContext(file, null);
}
+
/**
* Creates a page context for the specified context type
*
@@ -343,6 +344,46 @@
context = createJavaContext(file);
} else if(JAVA_PROPERTIES_CONTENT_TYPE.equalsIgnoreCase(typeId)) {
context = createPropertiesContext(file);
+ } else if (typeId != null) {
+ context = defaultContextType == null ?
+ createPageContextInstance(typeId) :
+ createContextInstanceOfType(defaultContextType);
+ if (context == null)
+ return null;
+
+ context.setResource(file);
+ context.setElResolvers(ELResolverFactoryManager.getInstance().getResolvers(file));
+
+ if (context instanceof JspContextImpl && !(context instanceof
FaceletPageContextImpl)) {
+ // Fill JSP namespaces defined in TLDCMDocumentManager
+ fillJSPNameSpaces((JspContextImpl)context);
+ }
+
+ // The subsequently called functions may use the file and document
+ // already stored in context for their needs
+ if (context instanceof FaceletPageContextImpl) {
+ IModelManager manager = StructuredModelManager.getModelManager();
+ if(manager == null) {
+ return context;
+ }
+ IStructuredModel model = null;
+ try {
+ model = manager.getModelForRead(file);
+ if (model instanceof IDOMModel) {
+ IDOMModel domModel = (IDOMModel) model;
+ IDOMDocument document = domModel.getDocument();
+ fillContextForChildNodes(document, context, parents);
+ }
+ } catch (CoreException e) {
+ WebKbPlugin.getDefault().logError(e);
+ } catch (IOException e) {
+ WebKbPlugin.getDefault().logError(e);
+ } finally {
+ if (model != null) {
+ model.releaseFromRead();
+ }
+ }
+ }
} else {
// ctm = System.currentTimeMillis();
// System.out.println("Create Context : " + file.getFullPath().toString() +
", Totals: " + cache.size());
@@ -726,7 +767,11 @@
notifier.removeAdapter(adapter);
adapter = new ExtendedLinkElementAdapter(
(Element) stylesContainer, attribute);
- notifier.addAdapter(adapter);
+ sheet = (CSSStyleSheet) adapter.getSheet();
+ source = ((ExtendedLinkElementAdapter)adapter).getSource();
+ if (sheet != null && source != null) {
+ notifier.addAdapter(adapter);
+ }
}
if (adapter != null) {
Modified:
trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/internal/validation/ValidationErrorManager.java
===================================================================
---
trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/internal/validation/ValidationErrorManager.java 2010-09-20
03:37:58 UTC (rev 25017)
+++
trunk/jst/plugins/org.jboss.tools.jst.web.kb/src/org/jboss/tools/jst/web/kb/internal/validation/ValidationErrorManager.java 2010-09-20
09:13:07 UTC (rev 25018)
@@ -15,6 +15,8 @@
import org.eclipse.core.resources.IMarker;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IWorkspace;
+import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
@@ -30,6 +32,7 @@
import org.jboss.tools.common.preferences.SeverityPreferences;
import org.jboss.tools.common.text.ITextSourceReference;
import org.jboss.tools.jst.web.kb.KbMessages;
+import org.jboss.tools.jst.web.kb.PageContextFactory;
import org.jboss.tools.jst.web.kb.WebKbPlugin;
import org.jboss.tools.jst.web.kb.validation.IValidationContext;
import org.jboss.tools.jst.web.kb.validation.IValidationErrorManager;
@@ -217,7 +220,9 @@
IMessage problemMessage = new ProblemMessage(message, severity, messageArguments,
target, markerId);
problemMessage.setLength(length);
problemMessage.setOffset(offset);
+ IWorkspace workspace = ResourcesPlugin.getWorkspace();
try {
+ if (workspace != null)
workspace.removeResourceChangeListener(PageContextFactory.getInstance());
if (documentProvider != null) {
documentProvider.connect(target);
IDocument doc = documentProvider.getDocument(target);
@@ -236,6 +241,7 @@
NLS.bind(KbMessages.EXCEPTION_DURING_CREATING_MARKER, target.getFullPath()), e);
} finally {
documentProvider.disconnect(target);
+ if (workspace != null)
workspace.addResourceChangeListener(PageContextFactory.getInstance());
}
return marker;