Author: mareshkau
Date: 2008-04-03 14:08:04 -0400 (Thu, 03 Apr 2008)
New Revision: 7307
Modified:
trunk/jst/plugins/org.jboss.tools.jst.jsp/src/org/jboss/tools/jst/jsp/outline/JSPPropertySourceAdapter.java
trunk/jst/plugins/org.jboss.tools.jst.jsp/src/org/jboss/tools/jst/jsp/outline/ValueHelper.java
Log:
http://jira.jboss.org/jira/browse/JBIDE-1983, ValueHelper was added as property for class
JSPPropertySourceAdapter, because of creating this class on each method locally strongly
decrease perfomance of VPE. Also from ValueHelper was removed "IVisualContext
iVisualContex;" property, which by Snjezana Peco words causes a memory
leak(JBIDE-1896).
Modified:
trunk/jst/plugins/org.jboss.tools.jst.jsp/src/org/jboss/tools/jst/jsp/outline/JSPPropertySourceAdapter.java
===================================================================
---
trunk/jst/plugins/org.jboss.tools.jst.jsp/src/org/jboss/tools/jst/jsp/outline/JSPPropertySourceAdapter.java 2008-04-03
15:58:18 UTC (rev 7306)
+++
trunk/jst/plugins/org.jboss.tools.jst.jsp/src/org/jboss/tools/jst/jsp/outline/JSPPropertySourceAdapter.java 2008-04-03
18:08:04 UTC (rev 7307)
@@ -59,11 +59,11 @@
protected final static String CATEGORY_ATTRIBUTES =
XMLUIMessages.XMLPropertySourceAdapter_0;
private static final boolean SET_EXPERT_FILTER = false;
- private AttributeSorter sorter = null;
+ private AttributeSorter sorter = null;
private Node fNode = null;
private boolean fCaseSensitive = true;
private IPropertyDescriptor[] fDescriptors = null;
- //private ValueHelper valueHelper = new ValueHelper();
+ private ValueHelper valueHelper = new ValueHelper();
private Set attributeNames = new HashSet();
public JSPPropertySourceAdapter(INodeNotifier target) {
@@ -122,7 +122,6 @@
private String getQuery(String attributeName) {
String tagName = fNode.getNodeName();
String jsfTagName = null;
- ValueHelper valueHelper = new ValueHelper();
if(fNode instanceof Element) {
jsfTagName = valueHelper.getFaceletJsfTag((Element)fNode);
}
@@ -145,7 +144,7 @@
List<String> names = new ArrayList<String>();
List<String> namesLow = new ArrayList<String>();
IPropertyDescriptor descriptor;
- ValueHelper valueHelper = new ValueHelper();
+
TagDescriptor td = valueHelper.getTagDescriptor("/" + fNode.getNodeName());
if(td != null) {
List list = td.getAttributesDescriptors();
@@ -275,7 +274,6 @@
}
private IPropertyDescriptor createJSPPropertyDescriptor(String query, String
attributeName, boolean hideOnFilter) {
- ValueHelper valueHelper = new ValueHelper();
AttributeDescriptor d = valueHelper.getAttributeDescriptor(query);
return createJSPPropertyDescriptor(d, attributeName, hideOnFilter);
}
@@ -290,7 +288,7 @@
context.put("node", fNode);
context.setProperty("nodeName", fNode.getNodeName());
context.setProperty("attributeName", attributeName);
- //context.put("valueHelper", valueHelper);
+ context.put("valueHelper", valueHelper);
JSPPropertyDescriptor descriptor = new JSPPropertyDescriptor(context, attributeName,
attributeName);
descriptor.setCategory(getCategory(null));
descriptor.setDescription(attributeName);
@@ -333,7 +331,7 @@
protected void updatePropertyDescriptors() {
if (fDescriptors == null || fDescriptors.length == 0) return;
- ValueHelper valueHelper = new ValueHelper();
+
// List of all names encountered in the tag and defined by the element
List<String> declaredNames = new ArrayList<String>();
// New descriptor list that will become fDescriptors after all
@@ -548,7 +546,6 @@
if (attr instanceof IDOMNode) {
((IDOMNode) attr).setValueSource(valueString);
try {
- ValueHelper valueHelper = new ValueHelper();
IVisualController controller = valueHelper.getController();
if(controller != null) controller.visualRefresh();
} catch (Exception e) {
@@ -586,7 +583,6 @@
boolean isRequiredAttribute(String attributeName) {
String query = getQuery(attributeName);
- ValueHelper valueHelper = new ValueHelper();
AttributeDescriptor d = valueHelper.getAttributeDescriptor(query);
if(d == null) return false; // do not remove unknown attribute? Remove it!
return d.isRequired();
Modified:
trunk/jst/plugins/org.jboss.tools.jst.jsp/src/org/jboss/tools/jst/jsp/outline/ValueHelper.java
===================================================================
---
trunk/jst/plugins/org.jboss.tools.jst.jsp/src/org/jboss/tools/jst/jsp/outline/ValueHelper.java 2008-04-03
15:58:18 UTC (rev 7306)
+++
trunk/jst/plugins/org.jboss.tools.jst.jsp/src/org/jboss/tools/jst/jsp/outline/ValueHelper.java 2008-04-03
18:08:04 UTC (rev 7307)
@@ -16,7 +16,6 @@
import java.util.List;
import java.util.Map;
import java.util.Properties;
-
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
import org.eclipse.jface.text.IDocument;
@@ -65,7 +64,7 @@
import org.w3c.dom.Node;
public class ValueHelper {
- private IEditorInput editorInput = null;
+
private WTPTextJspKbConnector wtpTextJspKbConnector = null;
private boolean isFacelets = false;
@@ -77,9 +76,10 @@
seamPromptingProvider = (IPromptingProvider)o;
}
}
-
- IVisualContext iVisualContext = null;
- WtpKbConnector pageConnector = null;
+ //JBIDE-1983, coused a memmory link
+// IVisualContext iVisualContext = null;
+ private boolean isVisualContextInitialized = false;
+ private WtpKbConnector pageConnector = null;
public ValueHelper() {
boolean b = init();
@@ -96,25 +96,31 @@
}
boolean init() {
- if(iVisualContext != null || pageConnector != null) return true;
+ if(isVisualContextInitialized || pageConnector != null) return true;
IEditorPart editor =
ModelUIPlugin.getDefault().getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();
if(!(editor instanceof JSPMultiPageEditor)) return false;
JSPTextEditor jspEditor = ((JSPMultiPageEditor)editor).getJspEditor();
- //Added By Max Areshkau
- //Fix for JBIDE-788
- iVisualContext = jspEditor.getPageContext();
+ isVisualContextInitialized = true;
- editorInput = jspEditor.getEditorInput();
-
wtpTextJspKbConnector = jspEditor.getWTPTextJspKbConnector();
- if(iVisualContext != null) {
+ if(getIVisualContext() != null) {
updateFacelets();
}
- return iVisualContext != null || pageConnector != null;
+ return getIVisualContext() != null || pageConnector != null;
}
+ private IVisualContext getIVisualContext(){
+
+ IEditorPart editor =
ModelUIPlugin.getDefault().getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();
+ if(!(editor instanceof JSPMultiPageEditor)) return null;
+ JSPTextEditor jspEditor = ((JSPMultiPageEditor)editor).getJspEditor();
+
+ return jspEditor.getPageContext();
+ }
+
+
public ModelElement getInitalInput(String query) {
AttributeDescriptor descriptor = getAttributeDescriptor(query);
if(descriptor == null) return new RootElement("root", new
ArrayList<AttributeValueResource>());
@@ -122,7 +128,7 @@
List<AttributeValueResource> elements = new
ArrayList<AttributeValueResource>();
ModelElement root = new RootElement("root", elements);
for (int i = 0; i < valueDescriptors.length; i++) {
- AttributeValueResource resource =
AttributeValueResourceFactory.getInstance().createResource(editorInput,
wtpTextJspKbConnector, root, valueDescriptors[i].getType());
+ AttributeValueResource resource =
AttributeValueResourceFactory.getInstance().createResource(getEditorInput(),
wtpTextJspKbConnector, root, valueDescriptors[i].getType());
resource.setParams(valueDescriptors[i].getParams());
resource.setQuery(query, this);
elements.add(resource);
@@ -132,7 +138,7 @@
p.put("file", getFile());
List list = seamPromptingProvider.getList(null, "seam.is_seam_project",
null, p);
if(list != null) {
- AttributeValueResource resource =
AttributeValueResourceFactory.getInstance().createResource(editorInput,
wtpTextJspKbConnector, root, "seamVariables");
+ AttributeValueResource resource =
AttributeValueResourceFactory.getInstance().createResource(getEditorInput(),
wtpTextJspKbConnector, root, "seamVariables");
resource.setQuery(query, this);
elements.add(resource);
}
@@ -169,17 +175,20 @@
}
public IEditorInput getEditorInput() {
- return editorInput;
+
+ IEditorPart editor =
ModelUIPlugin.getDefault().getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();
+
+ return editor.getEditorInput();
}
public IFile getFile() {
- if(!(editorInput instanceof IFileEditorInput)) return null;
- return ((IFileEditorInput)editorInput).getFile();
+ if(!(getEditorInput() instanceof IFileEditorInput)) return null;
+ return ((IFileEditorInput)getEditorInput()).getFile();
}
public IProject getProject() {
- if(!(editorInput instanceof IFileEditorInput)) return null;
- IFile file = ((IFileEditorInput)editorInput).getFile();
+ if(!(getEditorInput() instanceof IFileEditorInput)) return null;
+ IFile file = ((IFileEditorInput)getEditorInput()).getFile();
return file == null ? null : file.getProject();
}
@@ -189,6 +198,9 @@
public VpeTaglibManager getTaglibManager() {
init();
+
+ IVisualContext iVisualContext = getIVisualContext();
+
if(iVisualContext!=null && iVisualContext instanceof VpeTaglibManager) {
return (VpeTaglibManager)iVisualContext;
@@ -199,7 +211,7 @@
}
public WtpKbConnector getPageConnector() {
- if(iVisualContext != null) return iVisualContext.getConnector();
+ if(getIVisualContext() != null) return getIVisualContext().getConnector();
return pageConnector;
}
@@ -218,16 +230,15 @@
//Support of StructuredTextEditor
boolean init2() {
- if(iVisualContext != null || pageConnector != null) return true;
+ if(isVisualContextInitialized || pageConnector != null) return true;
IEditorPart editor =
ModelUIPlugin.getDefault().getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();
if(!(editor instanceof StructuredTextEditor)) return false;
StructuredTextEditor jspEditor = ((StructuredTextEditor)editor);
- editorInput = jspEditor.getEditorInput();
- IDocument document = jspEditor.getDocumentProvider().getDocument(editorInput);
+ IDocument document = jspEditor.getDocumentProvider().getDocument(getEditorInput());
if(document == null) return false;
installActivePropmtSupport(jspEditor, document);
getConnector(document);
- return iVisualContext != null || pageConnector != null;
+ return getIVisualContext() != null || pageConnector != null;
}
private void installActivePropmtSupport(StructuredTextEditor jspEditor, IDocument
document) {
@@ -238,10 +249,10 @@
(getContentType(model).toLowerCase().indexOf("jsp") != -1 ||
getContentType(model).toLowerCase().indexOf("html") != -1)) {
clearTextConnectors();
- wtpTextJspKbConnector = (WTPTextJspKbConnector)wtpTextConnectors.get(editorInput);
+ wtpTextJspKbConnector =
(WTPTextJspKbConnector)wtpTextConnectors.get(getEditorInput());
if(wtpTextJspKbConnector == null) {
wtpTextJspKbConnector = new WTPTextJspKbConnector(jspEditor.getEditorInput(),
document, model);
- wtpTextConnectors.put(editorInput, wtpTextJspKbConnector);
+ wtpTextConnectors.put(getEditorInput(), wtpTextJspKbConnector);
}
/// wtpTextJspKbConnector.setTaglibManagerProvider(parentEditor);
}
@@ -315,6 +326,7 @@
}
public void updateFacelets() {
+
VpeTaglibManager tldManager = getTaglibManager();
if(tldManager == null) return;
List<TaglibData> list = tldManager.getTagLibs();
@@ -325,7 +337,7 @@
kbConnector.unregisterAllResources(true);
for(int i = 0; i < list.size(); i++) {
TaglibData data = list.get(i);
- FaceletsHtmlContentAssistProcessor.registerTld(data, kbConnector, document,
editorInput);
+ FaceletsHtmlContentAssistProcessor.registerTld(data, kbConnector, document,
getEditorInput());
isFacelets = isFacelets ||
data.getUri().equals(FaceletsHtmlContentAssistProcessor.faceletUri);
}
if(isFacelets) {