Example usage for org.eclipse.jdt.core IRegion getElements

List of usage examples for org.eclipse.jdt.core IRegion getElements

Introduction

In this page you can find the example usage for org.eclipse.jdt.core IRegion getElements.

Prototype

IJavaElement[] getElements();

Source Link

Document

Returns the top level elements in this region.

Usage

From source file:org.grails.ide.eclipse.core.junit.Grails20AwareTestFinder.java

License:Open Source License

private void searchForTests(IJavaElement element, final Set result, IProgressMonitor pm) throws CoreException {
    //Loosely based on a copy of org.eclipse.jdt.internal.junit.launcher.JUnit4TestFinder.findTestsInContainer(IJavaElement, Set, IProgressMonitor)
    //Modifed to search just for Grails test classes marked by @TestFor annotations
    try {/*from w  w w  . ja v a 2  s .com*/
        pm.beginTask(JUnitMessages.JUnit4TestFinder_searching_description, 4);

        IRegion region = CoreTestSearchEngine.getRegion(element);

        IJavaSearchScope scope = SearchEngine.createJavaSearchScope(region.getElements(),
                IJavaSearchScope.SOURCES);
        int matchRule = SearchPattern.R_EXACT_MATCH | SearchPattern.R_CASE_SENSITIVE;
        SearchPattern testForPattern = SearchPattern.createPattern(TEST_FOR_ANNOT_NAME,
                IJavaSearchConstants.ANNOTATION_TYPE, IJavaSearchConstants.ANNOTATION_TYPE_REFERENCE,
                matchRule);
        SearchPattern testPattern = SearchPattern.createPattern("*Tests", IJavaSearchConstants.TYPE,
                IJavaSearchConstants.DECLARATIONS, matchRule);

        SearchPattern theSearchPattern = SearchPattern.createOrPattern(testForPattern, testPattern);
        SearchParticipant[] searchParticipants = new SearchParticipant[] {
                SearchEngine.getDefaultSearchParticipant() };

        SearchRequestor requestor = new SearchRequestor() {
            @Override
            public void acceptSearchMatch(SearchMatch match) throws CoreException {
                if (match.getAccuracy() == SearchMatch.A_ACCURATE && !match.isInsideDocComment()) {
                    Object element = match.getElement();
                    if (element instanceof IType && isGrail20Test((IType) element)) {
                        result.add(element);
                    }
                }
            }
        };
        new SearchEngine().search(theSearchPattern, searchParticipants, scope, requestor,
                new SubProgressMonitor(pm, 2));
    } finally {
        pm.done();
    }
}