Example usage for org.eclipse.jdt.core.search SearchEngine search

List of usage examples for org.eclipse.jdt.core.search SearchEngine search

Introduction

In this page you can find the example usage for org.eclipse.jdt.core.search SearchEngine search.

Prototype

public void search(SearchPattern pattern, SearchParticipant[] participants, IJavaSearchScope scope,
        SearchRequestor requestor, IProgressMonitor monitor) throws CoreException 

Source Link

Document

Searches for matches of a given search pattern.

Usage

From source file:org.limy.eclipse.code.di.LimyDIUtils.java

License:Open Source License

/**
 * JavaNXC^?[tFCX\?[X?B/*from w w  w. j a v  a 2  s . c  o m*/
 * @param type JavaNX
 * @return C^?[tFCX\?[X
 * @throws IOException I/OO
 * @throws CoreException RAO
 */
public static IResource getInterfaceResource(IType type) throws IOException, CoreException {

    IPath path = type.getPath();
    String fileName = path.removeFileExtension().lastSegment();

    IResource targetResource = null;
    if (fileName.endsWith("Impl")) {
        // NX?Impl?A?O\?[XT
        path = path.removeLastSegments(1);
        path = path.append(fileName.substring(0, fileName.length() - 4) + ".java");

        targetResource = LimyResourceUtils.newFile(path);
    }
    if (targetResource == null || !targetResource.exists()) {
        // implements?\?[XT
        String[] names = type.getSuperInterfaceNames();
        if (names.length > 0) {
            SearchPattern pattern = SearchPattern.createPattern("*" + names[0], IJavaSearchConstants.TYPE,
                    IJavaSearchConstants.DECLARATIONS,
                    SearchPattern.R_PATTERN_MATCH | SearchPattern.R_CASE_SENSITIVE);

            IJavaSearchScope scope = SearchEngine.createHierarchyScope(type);

            SearchEngine searchEngine = new SearchEngine();
            LimySearchRequestor requestor = new LimySearchRequestor();
            searchEngine.search(pattern, new SearchParticipant[] { SearchEngine.getDefaultSearchParticipant() },
                    scope, requestor, null);

            if (requestor.getMatch() != null) {
                targetResource = requestor.getMatch().getResource();
            }
        }
    }

    return targetResource.exists() ? targetResource : null;
}

From source file:org.megatome.frame2.wizards.GlobalForwardWizardPage1.java

License:Open Source License

private boolean validateForwardPath() {
    final String forwardType = getForwardType();
    final String forwardPath = getForwardPath();

    if (forwardType.equals(Frame2Plugin.getString("GlobalForwardWizardPage1.htmlResource_type"))) { //$NON-NLS-1$

        if (forwardPath.indexOf(Frame2Plugin.getString("GlobalForwardWizardPage1.uriPrefix")) != -1) { //$NON-NLS-1$
            return true;
        }/*from   w  ww . j  av a 2s  .  com*/

        final IResource filePath = this.rootProject.findMember(forwardPath);
        if (filePath != null) {
            if (!filePath.exists() || (!(filePath instanceof IFile))) {
                updateStatus(Frame2Plugin.getString("GlobalForwardWizardPage1.missingForwardFile")); //$NON-NLS-1$
                return false;
            }
        } else {
            updateStatus(Frame2Plugin.getString("GlobalForwardWizardPage1.missingForwardFile")); //$NON-NLS-1$
            return false;
        }

    } else if (forwardType.equals(Frame2Plugin.getString("GlobalForwardWizardPage1.xmlResponder_type"))) { //$NON-NLS-1$
        IJavaProject javaProject = JavaCore.create(this.rootProject);

        try {
            IType type = javaProject.findType(forwardPath);
            if (type == null) {
                updateStatus(Frame2Plugin.getString("GlobalForwardWizardPage1.missingResponderFile")); //$NON-NLS-1$
                return false;
            }

            SearchPattern pattern = SearchPattern.createPattern(
                    Frame2Plugin.getString("GlobalForwardWizardPage1.responderClassName"), //$NON-NLS-1$
                    IJavaSearchConstants.TYPE, IJavaSearchConstants.IMPLEMENTORS,
                    SearchPattern.R_EXACT_MATCH | SearchPattern.R_CASE_SENSITIVE);
            IJavaSearchScope scope = SearchEngine.createHierarchyScope(type);

            MatchSearchRequestor requestor = new MatchSearchRequestor();

            SearchEngine searchEngine = new SearchEngine();
            searchEngine.search(pattern, new SearchParticipant[] { SearchEngine.getDefaultSearchParticipant() },
                    scope, requestor, null);

            if (!requestor.hadMatch()) {
                updateStatus(Frame2Plugin.getString("GlobalForwardWizardPage1.notImplementResponderMessage")); //$NON-NLS-1$
                return false;
            }
        } catch (JavaModelException e) {
            updateStatus(Frame2Plugin.getString("GlobalForwardWizardPage1.validateResponderError")); //$NON-NLS-1$
            return false;
        } catch (CoreException e) {
            updateStatus(Frame2Plugin.getString("GlobalForwardWizardPage1.validateResponderError")); //$NON-NLS-1$
            return false;
        }
    }

    return true;
}

From source file:org.megatome.frame2.wizards.NewEventWizardPage1.java

License:Open Source License

private boolean isJaxbEvent(final String classType) {
    IJavaProject javaProject = JavaCore.create(this.rootProject);

    try {/*from w  w  w.  jav  a  2 s . c  o m*/
        IType type = javaProject.findType(classType);
        if (type == null) {
            return false;
        }

        SearchPattern pattern = SearchPattern.createPattern(
                Frame2Plugin.getString("NewEventWizardPage1.JaxbEventBase"), IJavaSearchConstants.TYPE, //$NON-NLS-1$
                IJavaSearchConstants.IMPLEMENTORS,
                SearchPattern.R_EXACT_MATCH | SearchPattern.R_CASE_SENSITIVE);
        IJavaSearchScope scope = SearchEngine.createHierarchyScope(type);

        MatchSearchRequestor requestor = new MatchSearchRequestor();

        SearchEngine searchEngine = new SearchEngine();
        searchEngine.search(pattern, new SearchParticipant[] { SearchEngine.getDefaultSearchParticipant() },
                scope, requestor, null);

        if (!requestor.hadMatch()) {
            return false;
        }
    } catch (JavaModelException e) {
        return false;
    } catch (CoreException e) {
        return false;
    }

    return true;
}

From source file:org.megatome.frame2.wizards.NewEventWizardPage1.java

License:Open Source License

private void findEventClasses(final IJavaProject project, final List<String> classes, final String superClass) {
    try {//from   ww w . ja  v a  2s.  c o  m
        SearchPattern pattern = SearchPattern.createPattern(superClass, IJavaSearchConstants.TYPE,
                IJavaSearchConstants.IMPLEMENTORS,
                SearchPattern.R_EXACT_MATCH | SearchPattern.R_CASE_SENSITIVE);
        IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaElement[] { project });

        SearchRequestor requestor = new ClassSearchRequestor(classes);

        SearchEngine searchEngine = new SearchEngine();
        searchEngine.search(pattern, new SearchParticipant[] { SearchEngine.getDefaultSearchParticipant() },
                scope, requestor, null);

    } catch (JavaModelException e) {
        //return classes;
    } catch (CoreException e) {
        //return classes;
    }
}

From source file:org.oobium.build.console.Eclipse.java

License:Open Source License

public static void openType(String type, final int line) {
    if (type.contains("$")) {
        // handles inner classes
        type = type.substring(0, type.indexOf('$'));
    }//from  w w w .j  a  v  a 2s. c o  m

    SearchPattern pattern = SearchPattern.createPattern(type, IJavaSearchConstants.TYPE,
            IJavaSearchConstants.DECLARATIONS, SearchPattern.R_EXACT_MATCH);
    IJavaSearchScope scope = SearchEngine.createWorkspaceScope();

    SearchRequestor sr = new SearchRequestor() {
        @Override
        public void acceptSearchMatch(SearchMatch match) throws CoreException {
            IResource resource = match.getResource();
            if (resource instanceof IFile) {
                final IFile file = (IFile) match.getResource();
                logger.debug(String.valueOf(match));
                Display.getDefault().asyncExec(new Runnable() {
                    @Override
                    public void run() {
                        open(file, null, line);
                    }
                });
            } else {
                Object element = match.getElement();
                if (element instanceof IType) {
                    final IType itype = (IType) element;
                    Display.getDefault().asyncExec(new Runnable() {
                        @Override
                        public void run() {
                            Object parent = itype.getParent();
                            if (parent instanceof IFile) {
                                open(parent, null, line);
                            }
                            if (parent instanceof IClassFile) {
                                // TODO is there a better way to do this?
                                IEditorInput input = EditorUtility.getEditorInput(itype.getParent());
                                open(input, "org.eclipse.jdt.ui.ClassFileEditor", line);
                            }
                        }
                    });
                }
            }
        }
    };

    SearchEngine engine = new SearchEngine();
    try {
        engine.search(pattern, new SearchParticipant[] { SearchEngine.getDefaultSearchParticipant() }, scope,
                sr, null);
    } catch (CoreException e) {
        e.printStackTrace();
    }
}

From source file:org.spoofax.interpreter.library.ecj.ECJ_search_for_supertype_type_refs.java

License:LGPL

@Override
public boolean call(IContext env, Strategy[] svars, IStrategoTerm[] tvars) throws InterpreterException {

    if (!ECJTools.isIJavaElement(tvars[0]))
        return false;
    if (!Tools.isTermString(tvars[1]))
        return false;

    // TODO: This only works in 3.4, what to do for other versions? 

    // FIXME this method will currently only return exact type matches
    //       it is unclear whether searches for the supertype Foo<Object>
    //       should also allow Foo<Bar> to be returned; for now, it's explicitly
    //       forbidden

    final String className = Tools.asJavaString(tvars[1]);
    SearchPattern sp = SearchPattern.createPattern(className, IJavaSearchConstants.TYPE,
            IJavaSearchConstants.SUPERTYPE_TYPE_REFERENCE,
            SearchPattern.R_EXACT_MATCH | SearchPattern.R_CASE_SENSITIVE);

    try {//from  www.j ava  2 s  . co m
        final IJavaSearchScope ss = SearchEngine
                .createJavaSearchScope(new IJavaElement[] { ECJTools.asIJavaElement(tvars[0]) });

        final Collection<IType> results = new LinkedList<IType>();

        SearchRequestor requestor = new SearchRequestor() {

            @Override
            public void acceptSearchMatch(SearchMatch match) throws CoreException {
                System.out.println(match.getElement() + "/" + match.getClass().toString() + "/"
                        + match.getElement().getClass().toString());
                IType t = (IType) match.getElement();
                System.out.println(t.getFullyQualifiedName());
                for (String s : t.getSuperInterfaceNames())
                    if (s.equals(className)) {
                        results.add(t);
                        return;
                    }
            }

        };

        SearchEngine se = new SearchEngine();

        se.search(sp, new SearchParticipant[] { SearchEngine.getDefaultSearchParticipant() }, ss, requestor,
                null);
        IStrategoTerm[] r = new IStrategoTerm[results.size()];
        int pos = 0;
        for (IType t : results)
            r[pos++] = ECJFactory.wrap(t);
        env.setCurrent(env.getFactory().makeList(r));
    } catch (CoreException e) {
        e.printStackTrace();
        return false;
    }

    return true;
}

From source file:org.spoofax.interpreter.library.ecj.ECJ_search_for_supertype_type_refs_in_hierarchy.java

License:LGPL

@Override
public boolean call(final IContext env, Strategy[] svars, IStrategoTerm[] tvars) throws InterpreterException {

    if (!ECJTools.isIType(tvars[0]))
        return false;
    if (!Tools.isTermString(tvars[1]))
        return false;

    // TODO: This only works in 3.4, what to do for other versions? 

    // FIXME this method will currently only return exact type matches.
    //       it is unclear whether searches for the supertype Foo<Object>
    //       should also allow Foo<Bar> to be returned; for now, it's explicitly
    //       forbidden

    final Strategy acceptor = svars[0];
    final String className = Tools.asJavaString(tvars[1]);
    final SearchPattern sp = SearchPattern.createPattern(className, IJavaSearchConstants.TYPE,
            IJavaSearchConstants.IMPLEMENTORS, //SUPERTYPE_TYPE_REFERENCE, 
            SearchPattern.R_EXACT_MATCH | SearchPattern.R_CASE_SENSITIVE);

    try {/*from  w  w  w  .  ja v a 2 s  . c o m*/
        final IJavaSearchScope ss = SearchEngine.createHierarchyScope(ECJTools.asIType(tvars[0]));
        final Collection<IType> results = new LinkedList<IType>();
        final SearchRequestor requestor = new SearchRequestor() {

            @Override
            public void acceptSearchMatch(SearchMatch match) throws CoreException {
                //System.out.println(match.getElement() + "/" + match.getClass().toString() + "/" + match.getElement().getClass().toString());
                IType t = (IType) match.getElement();
                //System.out.println(" * " + t.getFullyQualifiedName());
                for (String s : t.getSuperInterfaceTypeSignatures()) {
                    IStrategoAppl a = ECJFactory.wrapSignature(s);
                    try {
                        env.setCurrent(a);
                        if (acceptor.evaluate(env)) {
                            results.add(t);
                        }
                    } catch (InterpreterException e) {
                        // FIXME: log
                    }

                }
            }

        };

        final SearchEngine se = new SearchEngine();
        final ECJLibrary ecj = (ECJLibrary) env.getOperatorRegistry(ECJLibrary.REGISTRY_NAME);

        se.search(sp, new SearchParticipant[] { SearchEngine.getDefaultSearchParticipant() }, ss, requestor,
                ecj.getNullProgressMonitor());
        final IStrategoTerm[] r = new IStrategoTerm[results.size()];
        int pos = 0;
        for (IType t : results)
            r[pos++] = ECJFactory.wrap(t);
        env.setCurrent(env.getFactory().makeList(r));
    } catch (CoreException e) {
        e.printStackTrace();
        return false;
    }

    return true;
}

From source file:org.spoofax.interpreter.library.ecj.ECJ_search_for_supertype_type_refs_no_generics.java

License:LGPL

@Override
public boolean call(IContext env, Strategy[] svars, IStrategoTerm[] tvars) throws InterpreterException {

    if (!ECJTools.isIType(tvars[0]))
        return false;
    if (!Tools.isTermString(tvars[1]))
        return false;

    // TODO: This only works in 3.4, what to do for other versions?

    // FIXME this method will currently only return exact type matches.
    //       it is unclear whether searches for the supertype Foo<Object>
    //       should also allow Foo<Bar> to be returned; for now, it's explicitly
    //       forbidden

    final String className = Tools.asJavaString(tvars[1]).replaceAll("*", "[^,]+");
    final SearchPattern sp = SearchPattern.createPattern(className, IJavaSearchConstants.TYPE,
            IJavaSearchConstants.IMPLEMENTORS, //SUPERTYPE_TYPE_REFERENCE,
            SearchPattern.R_EXACT_MATCH | SearchPattern.R_CASE_SENSITIVE);

    try {//from ww  w . j  a v a2  s. co  m
        final IJavaSearchScope ss = SearchEngine.createHierarchyScope(ECJTools.asIType(tvars[0]));
        final Collection<IType> results = new LinkedList<IType>();
        final SearchRequestor requestor = new SearchRequestor() {

            @Override
            public void acceptSearchMatch(SearchMatch match) throws CoreException {
                //System.out.println(match.getElement() + "/" + match.getClass().toString() + "/" + match.getElement().getClass().toString());
                IType t = (IType) match.getElement();
                //System.out.println(" * " + t.getFullyQualifiedName());
                for (String s : t.getSuperInterfaceTypeSignatures()) {
                    final String p = Signature.toString(s);
                    if (p.equals(className)) {
                        results.add(t);
                        return;
                    }
                }
            }

        };

        final SearchEngine se = new SearchEngine();
        final ECJLibrary ecj = (ECJLibrary) env.getOperatorRegistry(ECJLibrary.REGISTRY_NAME);

        se.search(sp, new SearchParticipant[] { SearchEngine.getDefaultSearchParticipant() }, ss, requestor,
                ecj.getNullProgressMonitor());
        final IStrategoTerm[] r = new IStrategoTerm[results.size()];
        int pos = 0;
        for (IType t : results)
            r[pos++] = ECJFactory.wrap(t);
        env.setCurrent(env.getFactory().makeList(r));
    } catch (CoreException e) {
        e.printStackTrace();
        return false;
    }

    return true;
}

From source file:org.spoofax.interpreter.library.ecj.ECJ_search_for_type.java

License:LGPL

@Override
public boolean call(IContext env, Strategy[] svars, IStrategoTerm[] tvars) throws InterpreterException {

    if (!ECJTools.isIJavaElement(tvars[0]))
        return false;
    if (!Tools.isTermString(tvars[1]))
        return false;

    final String className = Tools.asJavaString(tvars[1]);
    SearchPattern sp = SearchPattern.createPattern(className, IJavaSearchConstants.TYPE,
            IJavaSearchConstants.DECLARATIONS, SearchPattern.R_PATTERN_MATCH | SearchPattern.R_CASE_SENSITIVE);
    IJavaSearchScope ss = SearchEngine/*from  w w  w .j a v  a  2  s . c o  m*/
            .createJavaSearchScope(new IJavaElement[] { ECJTools.asIJavaElement(tvars[0]) });

    SearchRequestor requestor = new SearchRequestor() {

        @Override
        public void acceptSearchMatch(SearchMatch match) throws CoreException {
            // TODO Auto-generated method stub
            throw new NotImplementedException();
        }

    };

    SearchEngine se = new SearchEngine();

    try {
        se.search(sp, new SearchParticipant[] { SearchEngine.getDefaultSearchParticipant() }, ss, requestor,
                null);
    } catch (CoreException e) {
        e.printStackTrace();
        return false;
    }

    return true;
}

From source file:org.springframework.ide.eclipse.quickfix.proposals.CreateNewClassQuickFixProposal.java

License:Open Source License

private IPackageFragment findPackageFragment(String packageName) {
    final List<IPackageFragment> results = new ArrayList<IPackageFragment>();

    SearchRequestor collector = new SearchRequestor() {

        @Override// ww  w.  j  a v a2s.  c  o  m
        public void acceptSearchMatch(SearchMatch match) throws CoreException {
            Object element = match.getElement();
            if (element instanceof IPackageFragment) {
                IPackageFragment packageFragment = (IPackageFragment) element;
                if (!packageFragment.isReadOnly()) {
                    results.add(packageFragment);
                }
            }
        }
    };

    SearchEngine engine = new SearchEngine();
    SearchPattern pattern = SearchPattern.createPattern(packageName, IJavaSearchConstants.PACKAGE,
            IJavaSearchConstants.ALL_OCCURRENCES, SearchPattern.R_EXACT_MATCH);
    try {
        engine.search(pattern, new SearchParticipant[] { SearchEngine.getDefaultSearchParticipant() },
                SearchEngine.createWorkspaceScope(), collector, new NullProgressMonitor());
    } catch (CoreException e) {
    }

    if (results.size() > 0) {
        return results.get(0);
    }
    return null;
}