Bug 543991 - Refactor CallHierarchy and associated classes for jdt.ls
- fix CallHierarchyCore to use preferences instead of defaulting
- move some of CallHierarchy logic into CallHierarchyCore
Change-Id: I46ab8874287efad0d89d875afcf4e35d075f93a8
Signed-off-by: Jeff Johnston <jjohnstn@redhat.com>
diff --git a/org.eclipse.jdt.core.manipulation/core extension/org/eclipse/jdt/internal/corext/callhierarchy/CallHierarchyCore.java b/org.eclipse.jdt.core.manipulation/core extension/org/eclipse/jdt/internal/corext/callhierarchy/CallHierarchyCore.java
index a7255cd..5e8c6cf 100644
--- a/org.eclipse.jdt.core.manipulation/core extension/org/eclipse/jdt/internal/corext/callhierarchy/CallHierarchyCore.java
+++ b/org.eclipse.jdt.core.manipulation/core extension/org/eclipse/jdt/internal/corext/callhierarchy/CallHierarchyCore.java
@@ -35,6 +35,7 @@
import org.eclipse.jdt.core.JavaModelException;
import org.eclipse.jdt.core.dom.ASTParser;
import org.eclipse.jdt.core.dom.CompilationUnit;
+import org.eclipse.jdt.core.manipulation.JavaManipulation;
import org.eclipse.jdt.core.search.IJavaSearchScope;
import org.eclipse.jdt.core.search.SearchEngine;
@@ -46,7 +47,13 @@
public class CallHierarchyCore {
- private static final String DEFAULT_IGNORE_FILTERS= ""; //$NON-NLS-1$
+ private static final String PREF_USE_IMPLEMENTORS= "PREF_USE_IMPLEMENTORS"; //$NON-NLS-1$
+ private static final String PREF_USE_FILTERS= "PREF_USE_FILTERS"; //$NON-NLS-1$
+ private static final String PREF_FILTERS_LIST= "PREF_FILTERS_LIST"; //$NON-NLS-1$
+ private static final String PREF_FILTER_TESTCODE= "PREF_FILTER_TESTCODE"; //$NON-NLS-1$
+
+ private String defaultIgnoreFilters= "java.*,javax.*"; //$NON-NLS-1$
+
private static CallHierarchyCore fgInstance;
private IJavaSearchScope fSearchScope;
private StringMatcher[] fFilters;
@@ -60,11 +67,11 @@
}
public boolean isSearchUsingImplementorsEnabled() {
- return true;
+ return Boolean.parseBoolean(JavaManipulation.getPreference(PREF_USE_IMPLEMENTORS, null));
}
public boolean isFilterTestCode() {
- return false;
+ return Boolean.parseBoolean(JavaManipulation.getPreference(PREF_FILTER_TESTCODE, null));
}
public Collection<IJavaElement> getImplementingMethods(IMethod method) {
@@ -195,7 +202,7 @@
}
public boolean isFilterEnabled() {
- return false;
+ return Boolean.parseBoolean(JavaManipulation.getPreference(PREF_USE_FILTERS, null));
}
/**
@@ -203,7 +210,26 @@
* @return returns the filters
*/
public String getFilters() {
- return null;
+ String pref= JavaManipulation.getPreference(PREF_FILTERS_LIST, null);
+ if (pref == null)
+ return ""; //$NON-NLS-1$
+ return pref;
+ }
+
+ /**
+ * Set default ignore filters to use.
+ *
+ * @param defaultIgnoreFilters comma-separated filter string
+ */
+ public void setDefaultIgnoreFilters(String defaultIgnoreFilters) {
+ this.defaultIgnoreFilters= defaultIgnoreFilters;
+ }
+
+ /**
+ * Reset filters variable to null.
+ */
+ public void resetFilters() {
+ fFilters= null;
}
/**
@@ -211,7 +237,7 @@
*
* @return StringMatcher[]
*/
- private StringMatcher[] getIgnoreFilters() {
+ public StringMatcher[] getIgnoreFilters() {
if (fFilters == null) {
String filterString= null;
@@ -219,7 +245,7 @@
filterString= getFilters();
if (filterString == null) {
- filterString= DEFAULT_IGNORE_FILTERS;
+ filterString= defaultIgnoreFilters;
}
}
diff --git a/org.eclipse.jdt.ui/core extension/org/eclipse/jdt/internal/corext/callhierarchy/CallHierarchy.java b/org.eclipse.jdt.ui/core extension/org/eclipse/jdt/internal/corext/callhierarchy/CallHierarchy.java
index 4796966..db2b2d0 100644
--- a/org.eclipse.jdt.ui/core extension/org/eclipse/jdt/internal/corext/callhierarchy/CallHierarchy.java
+++ b/org.eclipse.jdt.ui/core extension/org/eclipse/jdt/internal/corext/callhierarchy/CallHierarchy.java
@@ -17,10 +17,8 @@
*******************************************************************************/
package org.eclipse.jdt.internal.corext.callhierarchy;
-import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
-import java.util.StringTokenizer;
import org.eclipse.jface.preference.IPreferenceStore;
@@ -44,10 +42,8 @@
private static final String PREF_FILTERS_LIST = "PREF_FILTERS_LIST"; //$NON-NLS-1$
private static final String PREF_FILTER_TESTCODE= "PREF_FILTER_TESTCODE"; //$NON-NLS-1$
- private static final String DEFAULT_IGNORE_FILTERS = "java.*,javax.*"; //$NON-NLS-1$
private static CallHierarchy fgInstance;
private CallHierarchyCore fgCallHierarchyCore;
- private StringMatcher[] fFilters;
private CallHierarchy() {
fgCallHierarchyCore = CallHierarchyCore.getDefault();
@@ -156,7 +152,7 @@
}
public void setFilters(String filters) {
- fFilters = null;
+ fgCallHierarchyCore.resetFilters();
IPreferenceStore settings = JavaPlugin.getDefault().getPreferenceStore();
settings.setValue(PREF_FILTERS_LIST, filters);
@@ -168,50 +164,14 @@
* @return StringMatcher[]
*/
private StringMatcher[] getIgnoreFilters() {
- if (fFilters == null) {
- String filterString = null;
-
- if (isFilterEnabled()) {
- filterString = getFilters();
-
- if (filterString == null) {
- filterString = DEFAULT_IGNORE_FILTERS;
- }
- }
-
- if (filterString != null) {
- fFilters = parseList(filterString);
- } else {
- fFilters = null;
- }
- }
-
- return fFilters;
+ return fgCallHierarchyCore.getIgnoreFilters();
}
public static boolean arePossibleInputElements(List<?> elements) {
return CallHierarchyCore.arePossibleInputElements(elements);
}
- /**
- * Parses the comma separated string into an array of {@link StringMatcher} objects.
- *
- * @param listString the string to parse
- * @return an array of {@link StringMatcher} objects
- */
- private static StringMatcher[] parseList(String listString) {
- List<StringMatcher> list = new ArrayList<>(10);
- StringTokenizer tokenizer = new StringTokenizer(listString, ","); //$NON-NLS-1$
-
- while (tokenizer.hasMoreTokens()) {
- String textFilter = tokenizer.nextToken().trim();
- list.add(new StringMatcher(textFilter, false, false));
- }
-
- return list.toArray(new StringMatcher[list.size()]);
- }
-
- static CompilationUnit getCompilationUnitNode(IMember member, boolean resolveBindings) {
+ static CompilationUnit getCompilationUnitNode(IMember member, boolean resolveBindings) {
ITypeRoot typeRoot= member.getTypeRoot();
try {
if (typeRoot.exists() && typeRoot.getBuffer() != null) {