List of usage examples for org.eclipse.jdt.core.search SearchEngine search
public void search(SearchPattern pattern, SearchParticipant[] participants, IJavaSearchScope scope, SearchRequestor requestor, IProgressMonitor monitor) throws CoreException
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; }