|
Eclipse JDT 2.1 |
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object | +--org.eclipse.jdt.core.search.SearchEngine
A SearchEngine
searches for java elements following a search pattern.
The search can be limited to a search scope.
Various search patterns can be created using the factory methods
createSearchPattern(String, int, int, boolean)
, createSearchPattern(IJavaElement, int)
,
createOrSearchPattern(ISearchPattern, ISearchPattern)
.
For example, one can search for references to a method in the hierarchy of a type, or one can search for the declarations of types starting with "Abstract" in a project.
This class may be instantiated; it is not intended to be subclassed.
Field Summary | |
static boolean |
VERBOSE
For tracing purpose. |
Constructor Summary | |
SearchEngine()
Creates a new search engine. |
|
SearchEngine(IWorkingCopy[] workingCopies)
Creates a new search engine with a list of working copies that will take precedence over their original compilation units in the subsequent search operations. |
Method Summary | |
static IJavaSearchScope |
createHierarchyScope(IType type)
Returns a java search scope limited to the hierarchy of the given type. |
static IJavaSearchScope |
createJavaSearchScope(IJavaElement[] elements)
Returns a java search scope limited to the given java elements. |
static IJavaSearchScope |
createJavaSearchScope(IJavaElement[] elements,
boolean includeReferencedProjects)
Returns a java search scope limited to the given java elements. |
static IJavaSearchScope |
createJavaSearchScope(IResource[] resources)
Deprecated. Use createJavaSearchScope(IJavaElement[]) instead |
static ISearchPattern |
createOrSearchPattern(ISearchPattern leftPattern,
ISearchPattern rightPattern)
Returns a search pattern that combines the given two patterns into a "or" pattern. |
static ISearchPattern |
createSearchPattern(IJavaElement element,
int limitTo)
Returns a search pattern based on a given Java element. |
static ISearchPattern |
createSearchPattern(String stringPattern,
int searchFor,
int limitTo,
boolean isCaseSensitive)
Returns a search pattern based on a given string pattern. |
static IJavaSearchScope |
createWorkspaceScope()
Returns a java search scope with the workspace as the only limit. |
void |
search(IWorkspace workspace,
IJavaElement element,
int limitTo,
IJavaSearchScope scope,
IJavaSearchResultCollector resultCollector)
Searches for the given Java element. |
void |
search(IWorkspace workspace,
ISearchPattern searchPattern,
IJavaSearchScope scope,
IJavaSearchResultCollector resultCollector)
Searches for matches of a given search pattern. |
void |
search(IWorkspace workspace,
String patternString,
int searchFor,
int limitTo,
IJavaSearchScope scope,
IJavaSearchResultCollector resultCollector)
Searches for the Java element determined by the given signature. |
void |
searchAllTypeNames(IWorkspace workspace,
char[] packageName,
char[] typeName,
int matchMode,
boolean isCaseSensitive,
int searchFor,
IJavaSearchScope scope,
ITypeNameRequestor nameRequestor,
int waitingPolicy,
IProgressMonitor progressMonitor)
Searches for all top-level types and member types in the given scope. |
void |
searchDeclarationsOfAccessedFields(IWorkspace workspace,
IJavaElement enclosingElement,
IJavaSearchResultCollector resultCollector)
Searches for all declarations of the fields accessed in the given element. |
void |
searchDeclarationsOfReferencedTypes(IWorkspace workspace,
IJavaElement enclosingElement,
IJavaSearchResultCollector resultCollector)
Searches for all declarations of the types referenced in the given element. |
void |
searchDeclarationsOfSentMessages(IWorkspace workspace,
IJavaElement enclosingElement,
IJavaSearchResultCollector resultCollector)
Searches for all declarations of the methods invoked in the given element. |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
public static boolean VERBOSE
Constructor Detail |
public SearchEngine()
public SearchEngine(IWorkingCopy[] workingCopies)
Note that passing an empty working copy will be as if the original compilation unit had been deleted.
workingCopies
- the working copies that take precedence over their original compilation unitsMethod Detail |
public static IJavaSearchScope createHierarchyScope(IType type) throws JavaModelException
type
- the focus of the hierarchy scopeJavaModelException
- if the hierarchy could not be computed on the given typepublic static IJavaSearchScope createJavaSearchScope(IResource[] resources)
Resources must not overlap, for example, one cannot include a folder and its children.
resources
- the resources the scope is limited topublic static IJavaSearchScope createJavaSearchScope(IJavaElement[] elements)
If an element is an IJavaProject, then the project's source folders, its jars (external and internal) and its referenced projects (with their source folders and jars, recursively) will be included. If an element is an IPackageFragmentRoot, then only the package fragments of this package fragment root will be included. If an element is an IPackageFragment, then only the compilation unit and class files of this package fragment will be included. Subpackages will NOT be included.
In other words, this is equivalent to using SearchEngine.createJavaSearchScope(elements, true).
elements
- the java elements the scope is limited topublic static IJavaSearchScope createJavaSearchScope(IJavaElement[] elements, boolean includeReferencedProjects)
elements
- the java elements the scope is limited toincludeReferencedProjects
- a flag indicating if referenced projects must be
recursively includedpublic static ISearchPattern createOrSearchPattern(ISearchPattern leftPattern, ISearchPattern rightPattern)
leftPattern
- the left patternrightPattern
- the right patternpublic static ISearchPattern createSearchPattern(String stringPattern, int searchFor, int limitTo, boolean isCaseSensitive)
Object
:
createSearchPattern("Object", TYPE, REFERENCES, false);
Object()
constructor:
createSearchPattern("java.lang.Object()", CONSTRUCTOR, REFERENCES, true);
java.lang.Runnable
:
createSearchPattern("java.lang.Runnable", TYPE, IMPLEMENTORS, true);
stringPattern
- the given patternsearchFor
- determines the nature of the searched elements
IJavaSearchConstants.CLASS
: only look for classesIJavaSearchConstants.INTERFACE
: only look for interfacesIJavaSearchConstants.TYPE
: look for both classes and interfacesIJavaSearchConstants.FIELD
: look for fieldsIJavaSearchConstants.METHOD
: look for methodsIJavaSearchConstants.CONSTRUCTOR
: look for constructorsIJavaSearchConstants.PACKAGE
: look for packageslimitTo
- determines the nature of the expected matches
IJavaSearchConstants.DECLARATIONS
: will search declarations matching with the corresponding
element. In case the element is a method, declarations of matching methods in subtypes will also
be found, allowing to find declarations of abstract methods, etc.IJavaSearchConstants.REFERENCES
: will search references to the given element.IJavaSearchConstants.ALL_OCCURRENCES
: will search for either declarations or references as specified
above.IJavaSearchConstants.IMPLEMENTORS
: for interface, will find all types which implements a given interface.isCaseSensitive
- indicates whether the search is case sensitive or not.null
if the string pattern is ill-formed.public static ISearchPattern createSearchPattern(IJavaElement element, int limitTo)
element
- the java element the search pattern is based onlimitTo
- determines the nature of the expected matches
IJavaSearchConstants.DECLARATIONS
: will search declarations matching with the corresponding
element. In case the element is a method, declarations of matching methods in subtypes will also
be found, allowing to find declarations of abstract methods, etc.IJavaSearchConstants.REFERENCES
: will search references to the given element.IJavaSearchConstants.ALL_OCCURRENCES
: will search for either declarations or references as specified
above.IJavaSearchConstants.IMPLEMENTORS
: for interface, will find all types which implements a given interface.null
if the given element is ill-formedpublic static IJavaSearchScope createWorkspaceScope()
public void search(IWorkspace workspace, String patternString, int searchFor, int limitTo, IJavaSearchScope scope, IJavaSearchResultCollector resultCollector) throws JavaModelException
search(ws, "run()", METHOD,REFERENCES, col)
searches for all references to the method run
.
Note that by default the pattern will be case insensitive. For specifying case s
sensitive search, use search(workspace, createSearchPattern(patternString, searchFor, limitTo, true), scope, resultCollector);
workspace
- the workspacepattern
- the pattern to be searched forsearchFor
- a hint what kind of Java element the string pattern represents.
Look into IJavaSearchConstants
for valid valueslimitTo
- one of the following values:
IJavaSearchConstants.DECLARATIONS
: search
for declarations only IJavaSearchConstants.REFERENCES
: search
for all references IJavaSearchConstants.ALL_OCCURENCES
: search
for both declarations and all references IJavaSearchConstants.IMPLEMENTORS
: search for
all implementors of an interface; the value is only valid if
the Java element represents an interfacescope
- the search result has to be limited to the given scoperesultCollector
- a callback object to which each match is reportedJavaModelException
- if the search failed. Reasons include:
public void search(IWorkspace workspace, IJavaElement element, int limitTo, IJavaSearchScope scope, IJavaSearchResultCollector resultCollector) throws JavaModelException
workspace
- the workspaceelement
- the Java element to be searched forlimitTo
- one of the following values:
IJavaSearchConstants.DECLARATIONS
: search
for declarations only IJavaSearchConstants.REFERENCES
: search
for all references IJavaSearchConstants.ALL_OCCURENCES
: search
for both declarations and all references IJavaSearchConstants.IMPLEMENTORS
: search for
all implementors of an interface; the value is only valid if
the Java element represents an interfacescope
- the search result has to be limited to the given scoperesultCollector
- a callback object to which each match is reportedJavaModelException
- if the search failed. Reasons include:
public void search(IWorkspace workspace, ISearchPattern searchPattern, IJavaSearchScope scope, IJavaSearchResultCollector resultCollector) throws JavaModelException
workspace
- the workspacesearchPattern
- the pattern to be searched forscope
- the search result has to be limited to the given scoperesultCollector
- a callback object to which each match is reportedJavaModelException
- if the search failed. Reasons include:
public void searchAllTypeNames(IWorkspace workspace, char[] packageName, char[] typeName, int matchMode, boolean isCaseSensitive, int searchFor, IJavaSearchScope scope, ITypeNameRequestor nameRequestor, int waitingPolicy, IProgressMonitor progressMonitor) throws JavaModelException
workspace
- the workspace to search inpackageName
- the full name of the package of the searched types, or a prefix for this
package, or a wild-carded string for this package.typeName
- the dot-separated qualified name of the searched type (the qualification include
the enclosing types if the searched type is a member type), or a prefix
for this type, or a wild-carded string for this type.matchMode
- one of
IJavaSearchConstants.EXACT_MATCH
if the package name and type name are the full names
of the searched types.IJavaSearchConstants.PREFIX_MATCH
if the package name and type name are prefixes of the names
of the searched types.IJavaSearchConstants.PATTERN_MATCH
if the package name and type name contain wild-cards.isCaseSensitive
- whether the search should be case sensitivesearchFor
- one of
IJavaSearchConstants.CLASS
if searching for classes onlyIJavaSearchConstants.INTERFACE
if searching for interfaces onlyIJavaSearchConstants.TYPE
if searching for both classes and interfacesscope
- the scope to search innameRequestor
- the requestor that collects the results of the searchwaitingPolicy
- one of
IJavaSearchConstants.FORCE_IMMEDIATE_SEARCH
if the search should start immediatelyIJavaSearchConstants.CANCEL_IF_NOT_READY_TO_SEARCH
if the search should be cancelled if the
underlying indexer has not finished indexing the workspaceIJavaSearchConstants.WAIT_UNTIL_READY_TO_SEARCH
if the search should wait for the
underlying indexer to finish indexing the workspaceprogressMonitor
- the progress monitor to report progress to, or null
if no progress
monitor is providedJavaModelException
- if the search failed. Reasons include:
public void searchDeclarationsOfAccessedFields(IWorkspace workspace, IJavaElement enclosingElement, IJavaSearchResultCollector resultCollector) throws JavaModelException
Consider the following code:
then searching for declarations of accessed fields in method
class A {
int field1;
}
class B extends A {
String value;
}
class X {
void test() {
B b = new B();
System.out.println(b.value + b.field1);
};
}
X.test()
would collect the fields
B.value
and A.field1
.
workspace
- the workspaceenclosingElement
- the method, type, or compilation unit to be searched inresultCollector
- a callback object to which each match is reportedJavaModelException
- if the search failed. Reasons include:
public void searchDeclarationsOfReferencedTypes(IWorkspace workspace, IJavaElement enclosingElement, IJavaSearchResultCollector resultCollector) throws JavaModelException
Consider the following code:
then searching for declarations of referenced types in method
class A {
}
class B extends A {
}
interface I {
int VALUE = 0;
}
class X {
void test() {
B b = new B();
this.foo(b, I.VALUE);
};
}
X.test()
would collect the class B
and the interface I
.
workspace
- the workspaceenclosingElement
- the method, type, or compilation unit to be searched inresultCollector
- a callback object to which each match is reportedJavaModelException
- if the search failed. Reasons include:
public void searchDeclarationsOfSentMessages(IWorkspace workspace, IJavaElement enclosingElement, IJavaSearchResultCollector resultCollector) throws JavaModelException
Consider the following code:
then searching for declarations of sent messages in method
class A {
void foo() {};
void bar() {};
}
class B extends A {
void foo() {};
}
class X {
void test() {
A a = new B();
a.foo();
B b = (B)a;
b.bar();
};
}
X.test()
would collect the methods
A.foo()
, B.foo()
, and A.bar()
.
workspace
- the workspaceenclosingElement
- the method, type, or compilation unit to be searched inresultCollector
- a callback object to which each match is reportedJavaModelException
- if the search failed. Reasons include:
|
Eclipse JDT 2.1 |
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |