Help on JDT search engine to find the method reference in a project [message #639443] |
Tue, 16 November 2010 15:04 |
alex Messages: 6 Registered: September 2010 |
Junior Member |
|
|
Hi all,
I want to create a Java console program to find the method reference with JDT search engine. The code is like below:
-------------------------------------------------------
import java.util.ArrayList;
import java.util.List;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.jdt.core.IMethod;
import org.eclipse.jdt.core.search.IJavaSearchConstants;
import org.eclipse.jdt.core.search.IJavaSearchScope;
import org.eclipse.jdt.core.search.SearchEngine;
import org.eclipse.jdt.core.search.SearchMatch;
import org.eclipse.jdt.core.search.SearchParticipant;
import org.eclipse.jdt.core.search.SearchPattern;
import org.eclipse.jdt.core.search.SearchRequestor;
public class Test
{
private void testSearchEngine() throws CoreException{
// search pattern
String pattern = "StudentImpl.getName() void";
SearchPattern searchPattern =
SearchPattern.createPattern(pattern,
IJavaSearchConstants.METHOD,
IJavaSearchConstants.REFERENCES,
SearchPattern.R_EXACT_MATCH);
// search scope
IJavaSearchScope scope = SearchEngine.createWorkspaceScope();
// search requestor
final List<IMethod> methodList = new ArrayList<IMethod>();
SearchRequestor requestor = new SearchRequestor() {
public void acceptSearchMatch (SearchMatch match)
{
Object element = match.getElement();
if (match.getElement() instanceof IMethod) {
methodList.add((IMethod)element);
}
}
};
// search engine
SearchEngine searchEngine = new SearchEngine();
searchEngine.search(searchPattern,
new SearchParticipant[] {SearchEngine.getDefaultSearchParticipant() },
scope,
requestor,
new NullProgressMonitor());
System.out.println("-- founded reference: " + methodList.size());
}
/**
* @param args
* @throws CoreException
*/
public static void main (String[] args) throws CoreException
{
Test test = new Test();
test.testSearchEngine();
}
}
--------------------------------------------------
But when I run this Java console program, it throws a NPE as below:
Exception in thread "main" java.lang.NullPointerException
at org.eclipse.jdt.internal.core.JavaModelManager.getInfo(JavaM odelManager.java:1322)
at org.eclipse.jdt.internal.core.JavaElement.getElementInfo(Jav aElement.java:247)
at org.eclipse.jdt.internal.core.JavaElement.getElementInfo(Jav aElement.java:235)
at org.eclipse.jdt.internal.core.JavaElement.getChildren(JavaEl ement.java:190)
at org.eclipse.jdt.internal.core.JavaElement.getChildrenOfType( JavaElement.java:204)
at org.eclipse.jdt.internal.core.JavaModel.getJavaProjects(Java Model.java:215)
at org.eclipse.jdt.internal.core.search.JavaWorkspaceScope.init ialize(JavaWorkspaceScope.java:81)
at org.eclipse.jdt.internal.core.search.JavaSearchScope.<init>(JavaSearchScope.java:61)
at org.eclipse.jdt.internal.core.search.JavaSearchScope.<init>(JavaSearchScope.java:57)
at org.eclipse.jdt.internal.core.search.JavaWorkspaceScope.<init >(JavaWorkspaceScope.java:29)
at org.eclipse.jdt.internal.core.JavaModelManager.getWorkspaceS cope(JavaModelManager.java:1729)
at org.eclipse.jdt.internal.core.search.BasicSearchEngine.creat eWorkspaceScope(BasicSearchEngine.java:155)
at org.eclipse.jdt.core.search.SearchEngine.createWorkspaceScop e(SearchEngine.java:397)
at Test.testSearchEngine(Test.java:30)
at Test.main(Test.java:61)
------------------------------------------------------------ ----------------------
So my question is:
(1) Can we use JDT search engine for writing a java console program?
(2) If we can, how to handle the above issues?
thanks in advance.
-Alexander
|
|
|
|
|
|
|
|
Re: Help on JDT search engine to find the method reference in a project [message #642009 is a reply to message #641344] |
Mon, 29 November 2010 14:27 |
alex Messages: 6 Registered: September 2010 |
Junior Member |
|
|
I just created one Eclipse plugin, and created one HelloWorld test program, it does work well.
But when I run the below code, the result is empty.
package com.ppm.helloworld;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.jdt.core.IMethod;
import org.eclipse.jdt.core.search.IJavaSearchConstants;
import org.eclipse.jdt.core.search.IJavaSearchScope;
import org.eclipse.jdt.core.search.SearchEngine;
import org.eclipse.jdt.core.search.SearchMatch;
import org.eclipse.jdt.core.search.SearchParticipant;
import org.eclipse.jdt.core.search.SearchPattern;
import org.eclipse.jdt.core.search.SearchRequestor;
public class TestSearchEngine {
public void testSearchEngine() throws CoreException{
// search pattern
String pattern = "com.ppm.helloworld.sample.StudentImpl.getName() void";
SearchPattern searchPattern =
SearchPattern.createPattern(pattern,
IJavaSearchConstants.METHOD,
IJavaSearchConstants.REFERENCES,
SearchPattern.R_EXACT_MATCH);
// search scope
IJavaSearchScope scope = SearchEngine.createWorkspaceScope();
// search requestor
final List<IMethod> methodList = new ArrayList<IMethod>();
SearchRequestor requestor = new SearchRequestor() {
public void acceptSearchMatch (SearchMatch match)
{
Object element = match.getElement();
if (match.getElement() instanceof IMethod) {
methodList.add((IMethod)element);
}
}
};
// search engine
SearchEngine searchEngine = new SearchEngine();
searchEngine.search(searchPattern,
new SearchParticipant[] {SearchEngine.getDefaultSearchParticipant() },
scope,
requestor,
new NullProgressMonitor());
System.out.println("-- founded reference: " + methodList.size());
}
}
--------------------------------------------------
By the way, class com.ppm.helloworld.sample.StudentImpl is in the same project with the above search class.
Any hints?
thanks
Alexander
|
|
|
|
Powered by
FUDForum. Page generated in 0.03680 seconds