List of usage examples for org.eclipse.jdt.core.search IJavaSearchConstants DECLARATIONS
int DECLARATIONS
To view the source code for org.eclipse.jdt.core.search IJavaSearchConstants DECLARATIONS.
Click Source Link
From source file:net.hillsdon.testlink.model.impl.Searcher.java
License:Open Source License
public Set<IResource> search(final String typeName) throws CoreException { SearchEngine searchEngine = new SearchEngine(); IJavaSearchScope scope = SearchEngine.createWorkspaceScope(); ResourceCollector results = new ResourceCollector(); SearchPattern pattern = SearchPattern.createPattern(typeName, IJavaSearchConstants.TYPE, IJavaSearchConstants.DECLARATIONS, SearchPattern.R_PATTERN_MATCH); searchEngine.search(pattern, new SearchParticipant[] { SearchEngine.getDefaultSearchParticipant() }, scope, results, new NullProgressMonitor()); return results.getCollectedPaths(); }
From source file:net.sourceforge.metrics.ui.dependencies.TangleAnalyzer.java
License:Open Source License
/** * @param packages/*from w w w . j ava 2 s . c o m*/ * @return */ private void getDependencies(List<IJavaElement> packages) { try { SearchEngine searchEngine = new SearchEngine(); // fill in the packageName->{IType}* map by getting all type // declarations in scope IJavaElement[] packs = packages.toArray(new IJavaElement[] {}); IJavaSearchScope scope = SearchEngine.createJavaSearchScope(packs); SearchPattern pattern = SearchPattern.createPattern("*", IJavaSearchConstants.TYPE, IJavaSearchConstants.DECLARATIONS, SearchPattern.R_PATTERN_MATCH); TypeCollector c = new TypeCollector(result); monitor.subTask("Collecting types in packages"); searchEngine.search(pattern, new SearchParticipant[] { SearchEngine.getDefaultSearchParticipant() }, scope, c, monitor); if (monitor.isCanceled()) { return; } // get all type references to these types. // Have to do multiple searches to get proper relationship :-( Set<String> typesInScope = result.keySet(); monitor.worked(400); monitor.subTask("Collecting type dependencies"); int scale = 500 / typesInScope.size(); for (Object element : typesInScope) { if (monitor.isCanceled()) { return; } String handle = (String) element; IJavaElement type = JavaCore.create(handle); searchEngine.searchDeclarationsOfReferencedTypes(type, new RefCollector(result.get(handle), typesInScope, type), monitor); monitor.worked(scale); } } catch (CoreException e) { e.printStackTrace(); } }
From source file:net.sourceforge.metrics.ui.dependencies.TangleAnalyzer.java
License:Open Source License
/** * @param packageNames/*ww w.j a v a 2s . c om*/ * @return */ private List<IJavaElement> getPackageFragments(List<String> packageNames) { monitor.subTask("Finding Packages in tangle"); SearchEngine searchEngine = new SearchEngine(); IJavaSearchScope scope = SearchEngine.createWorkspaceScope(); SearchPattern pattern = SearchPattern.createPattern("*", IJavaSearchConstants.PACKAGE, IJavaSearchConstants.DECLARATIONS, SearchPattern.R_PATTERN_MATCH); PackageCollector c = new PackageCollector(packageNames); try { searchEngine.search(pattern, new SearchParticipant[] { SearchEngine.getDefaultSearchParticipant() }, scope, c, monitor); monitor.worked(100); return c.getResult(); } catch (CoreException e) { e.printStackTrace(); return new ArrayList<IJavaElement>(); } }
From source file:nz.ac.massey.cs.care.refactoring.executers.IntroduceFactoryRefactoring.java
License:Open Source License
private IType findNonPrimaryType(String fullyQualifiedName, IProgressMonitor pm, RefactoringStatus status) throws JavaModelException { SearchPattern p = SearchPattern.createPattern(fullyQualifiedName, IJavaSearchConstants.TYPE, IJavaSearchConstants.DECLARATIONS, SearchUtils.GENERICS_AGNOSTIC_MATCH_RULE); final RefactoringSearchEngine2 engine = new RefactoringSearchEngine2(p); engine.setFiltering(true, true);/*ww w . j av a 2 s. c o m*/ engine.setScope(RefactoringScopeFactory.create(fCtorBinding.getJavaElement().getJavaProject())); engine.setStatus(status); engine.searchPattern(new SubProgressMonitor(pm, 1)); SearchResultGroup[] groups = (SearchResultGroup[]) engine.getResults(); if (groups.length != 0) { for (int i = 0; i < groups.length; i++) { SearchMatch[] matches = groups[i].getSearchResults(); for (int j = 0; j < matches.length; j++) { if (matches[j].getAccuracy() == SearchMatch.A_ACCURATE) return (IType) matches[j].getElement(); } } } return null; }
From source file:org.codehaus.groovy.eclipse.core.search.SyntheticAccessorSearchRequestor.java
License:Apache License
public void findSyntheticMatches(IJavaElement element, int limitTo, SearchParticipant[] participants, IJavaSearchScope scope, ISearchRequestor uiRequestor, IProgressMonitor monitor) throws CoreException { if (!isInteresting(element)) { return;//ww w . jav a 2 s .c om } // the declaration is synthetic, so OK to ignore if (limitTo == IJavaSearchConstants.DECLARATIONS) { return; } SearchPattern pattern = createPattern(element); if (pattern == null) { return; } Requestor requestor = new Requestor(uiRequestor); SearchEngine engine = new SearchEngine(); engine.search(pattern, participants, scope, requestor, monitor); }
From source file:org.eclim.plugin.jdt.command.complete.CompletionProposalCollector.java
License:Open Source License
public void completionFailure(IProblem problem) { ICompilationUnit src = getCompilationUnit(); IJavaProject javaProject = src.getJavaProject(); IProject project = javaProject.getProject(); // undefined type or attempting to complete static members of an unimported // type// w ww . j a va 2s. com if (problem.getID() == IProblem.UndefinedType || problem.getID() == IProblem.UnresolvedVariable) { try { SearchPattern pattern = SearchPattern.createPattern(problem.getArguments()[0], IJavaSearchConstants.TYPE, IJavaSearchConstants.DECLARATIONS, SearchPattern.R_EXACT_MATCH | SearchPattern.R_CASE_SENSITIVE); IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaElement[] { javaProject }); SearchRequestor requestor = new SearchRequestor(); SearchEngine engine = new SearchEngine(); SearchParticipant[] participants = new SearchParticipant[] { SearchEngine.getDefaultSearchParticipant() }; engine.search(pattern, participants, scope, requestor, null); if (requestor.getMatches().size() > 0) { imports = new ArrayList<String>(); for (SearchMatch match : requestor.getMatches()) { if (match.getAccuracy() != SearchMatch.A_ACCURATE) { continue; } IJavaElement element = (IJavaElement) match.getElement(); String name = null; switch (element.getElementType()) { case IJavaElement.TYPE: IType type = (IType) element; if (Flags.isPublic(type.getFlags())) { name = type.getFullyQualifiedName(); } break; case IJavaElement.METHOD: case IJavaElement.FIELD: name = ((IType) element.getParent()).getFullyQualifiedName() + '.' + element.getElementName(); break; } if (name != null) { name = name.replace('$', '.'); if (!ImportUtils.isImportExcluded(project, name)) { imports.add(name); } } } } } catch (Exception e) { throw new RuntimeException(e); } } IResource resource = src.getResource(); String relativeName = resource.getProjectRelativePath().toString(); if (new String(problem.getOriginatingFileName()).endsWith(relativeName)) { String filename = resource.getLocation().toString(); // ignore the problem if a temp file is being used and the problem is that // the type needs to be defined in its own file. if (problem.getID() == IProblem.PublicClassMustMatchFileName && filename.indexOf("__eclim_temp_") != -1) { return; } FileOffsets offsets = FileOffsets.compile(filename); int[] lineColumn = offsets.offsetToLineColumn(problem.getSourceStart()); error = new Error(problem.getMessage(), filename.replace("__eclim_temp_", ""), lineColumn[0], lineColumn[1], problem.isWarning()); } }
From source file:org.eclim.plugin.jdt.command.launching.JavaCommand.java
License:Open Source License
private String findMainClass(IJavaProject javaProject) throws Exception { ArrayList<IJavaElement> srcs = new ArrayList<IJavaElement>(); for (IClasspathEntry entry : javaProject.getResolvedClasspath(true)) { if (entry.getEntryKind() == IClasspathEntry.CPE_SOURCE) { for (IPackageFragmentRoot root : javaProject.findPackageFragmentRoots(entry)) { srcs.add(root);//w ww . j a v a 2 s .c om } } } final ArrayList<IMethod> methods = new ArrayList<IMethod>(); int context = IJavaSearchConstants.DECLARATIONS; int type = IJavaSearchConstants.METHOD; int matchType = SearchPattern.R_EXACT_MATCH | SearchPattern.R_CASE_SENSITIVE; IJavaSearchScope scope = SearchEngine.createJavaSearchScope(srcs.toArray(new IJavaElement[srcs.size()])); SearchPattern pattern = SearchPattern.createPattern("main(String[])", type, context, matchType); SearchRequestor requestor = new SearchRequestor() { public void acceptSearchMatch(SearchMatch match) { if (match.getAccuracy() != SearchMatch.A_ACCURATE) { return; } try { IMethod method = (IMethod) match.getElement(); String[] params = method.getParameterTypes(); if (params.length != 1) { return; } if (!Signature.SIG_VOID.equals(method.getReturnType())) { return; } int flags = method.getFlags(); if (!Flags.isPublic(flags) || !Flags.isStatic(flags)) { return; } methods.add(method); } catch (JavaModelException e) { // ignore } } }; SearchEngine engine = new SearchEngine(); SearchParticipant[] participants = new SearchParticipant[] { SearchEngine.getDefaultSearchParticipant() }; engine.search(pattern, participants, scope, requestor, null); // if we found only 1 result, we can use it. if (methods.size() == 1) { IMethod method = methods.get(0); ICompilationUnit cu = method.getCompilationUnit(); IPackageDeclaration[] packages = cu.getPackageDeclarations(); if (packages != null && packages.length > 0) { return packages[0].getElementName() + "." + cu.getElementName(); } return cu.getElementName(); } return null; }
From source file:org.eclim.plugin.jdt.command.search.SearchCommand.java
License:Open Source License
/** * Executes the search.//from w w w . j a v a 2s. com * * @param commandLine The command line for the search. * @return The search results. */ public List<SearchMatch> executeSearch(CommandLine commandLine) throws Exception { int context = -1; if (commandLine.hasOption(Options.CONTEXT_OPTION)) { context = getContext(commandLine.getValue(Options.CONTEXT_OPTION)); } String project = commandLine.getValue(Options.NAME_OPTION); String scope = commandLine.getValue(Options.SCOPE_OPTION); String file = commandLine.getValue(Options.FILE_OPTION); String offset = commandLine.getValue(Options.OFFSET_OPTION); String length = commandLine.getValue(Options.LENGTH_OPTION); String pat = commandLine.getValue(Options.PATTERN_OPTION); SearchPattern pattern = null; IJavaProject javaProject = project != null ? JavaUtils.getJavaProject(project) : null; SearchRequestor requestor = new SearchRequestor(); // element search if (file != null && offset != null && length != null) { int charOffset = getOffset(commandLine); IJavaElement element = getElement(javaProject, file, charOffset, Integer.parseInt(length)); if (element != null) { // user requested a contextual search. if (context == -1) { context = getElementContextualContext(element); // jdt search doesn't support implementors for method searches, so // switch to declarations. } else if (context == IJavaSearchConstants.IMPLEMENTORS && element.getElementType() == IJavaElement.METHOD) { context = IJavaSearchConstants.DECLARATIONS; requestor = new ImplementorsSearchRequestor(); } pattern = SearchPattern.createPattern(element, context); } // pattern search } else if (pat != null) { if (context == -1) { context = IJavaSearchConstants.DECLARATIONS; } int matchType = SearchPattern.R_EXACT_MATCH; // wild card character supplied, use pattern matching. if (pat.indexOf('*') != -1 || pat.indexOf('?') != -1) { matchType = SearchPattern.R_PATTERN_MATCH; // all upper case, add camel case support. } else if (pat.equals(pat.toUpperCase())) { matchType |= SearchPattern.R_CAMELCASE_MATCH; } boolean caseSensitive = !commandLine.hasOption(Options.CASE_INSENSITIVE_OPTION); if (caseSensitive) { matchType |= SearchPattern.R_CASE_SENSITIVE; } int type = getType(commandLine.getValue(Options.TYPE_OPTION)); // jdt search doesn't support implementors for method searches, so switch // to declarations. if (type == IJavaSearchConstants.METHOD && context == IJavaSearchConstants.IMPLEMENTORS) { context = IJavaSearchConstants.DECLARATIONS; requestor = new ImplementorsSearchRequestor(); } // hack for inner classes Matcher matcher = INNER_CLASS.matcher(pat); if (matcher.matches()) { // pattern search doesn't support org.test.Type$Inner or // org.test.Type.Inner, so convert it to org.test.*Inner, then filter // the results. pattern = SearchPattern.createPattern(matcher.replaceFirst("$1*$3"), type, context, matchType); Pattern toMatch = Pattern.compile(pat.replace(".", "\\.").replace("$", "\\$").replace("(", "\\(") .replace(")", "\\)").replace("*", ".*").replace("?", ".")); List<SearchMatch> matches = search(pattern, getScope(scope, javaProject)); Iterator<SearchMatch> iterator = matches.iterator(); while (iterator.hasNext()) { SearchMatch match = iterator.next(); String name = JavaUtils.getFullyQualifiedName((IJavaElement) match.getElement()).replace("#", "."); if (!toMatch.matcher(name).matches()) { iterator.remove(); } } return matches; } pattern = SearchPattern.createPattern(pat, type, context, matchType); // bad search request } else { throw new IllegalArgumentException(Services.getMessage("java_search.indeterminate")); } List<SearchMatch> matches = search(pattern, getScope(scope, javaProject), requestor); return matches; }
From source file:org.eclim.plugin.jdt.command.search.SearchCommand.java
License:Open Source License
/** * Determines the appropriate context to used base on the elements context. * * @param element The IJavaElement./*from w w w . ja v a2 s . co m*/ * @return The int context */ protected int getElementContextualContext(IJavaElement element) { Class<?> theClass = element.getClass(); // type / field / method declaration if (theClass.equals(org.eclipse.jdt.internal.core.SourceType.class) || theClass.equals(org.eclipse.jdt.internal.core.SourceField.class) || theClass.equals(org.eclipse.jdt.internal.core.SourceMethod.class)) { return IJavaSearchConstants.REFERENCES; } return IJavaSearchConstants.DECLARATIONS; }
From source file:org.eclim.plugin.jdt.command.search.SearchCommand.java
License:Open Source License
/** * Translates the string context to the int equivalent. * * @param context The String context./* ww w .ja va 2s.c o m*/ * @return The int context */ protected int getContext(String context) { if (CONTEXT_ALL.equals(context)) { return IJavaSearchConstants.ALL_OCCURRENCES; } else if (CONTEXT_IMPLEMENTORS.equals(context)) { return IJavaSearchConstants.IMPLEMENTORS; } else if (CONTEXT_REFERENCES.equals(context)) { return IJavaSearchConstants.REFERENCES; } return IJavaSearchConstants.DECLARATIONS; }