Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
Copyright (c) 2000, 2011 IBM Corporation and others. All rights reserved. This program and the accompanying materials are made available under the terms of the Eclipse Public License v1.0 which accompanies this distribution, and is available at http://www.eclipse.org/legal/epl-v10.html Contributors: IBM Corporation - initial API and implementation Nikolay Botev - Bug 348507 /
 
 package org.eclipse.jdt.internal.core.search;
 
 import java.util.Set;
 
 import  org.eclipse.core.resources.IFolder;
 import  org.eclipse.core.resources.IResource;
 import  org.eclipse.core.runtime.IPath;
 import  org.eclipse.core.runtime.Path;
A Java-specific scope for searching the entire workspace. The scope can be configured to not search binaries. By default, binaries are included.
 
 public class JavaWorkspaceScope extends AbstractJavaSearchScope {
 
 	private IPath[] enclosingPaths = null;
 
 public JavaWorkspaceScope() {
 	// As nothing is stored in the JavaWorkspaceScope now, no initialization is longer needed
 }
 
 public boolean encloses(IJavaElement element) {
 	/*A workspace scope encloses all java elements (this assumes that the index selector
 	 * and thus enclosingProjectAndJars() returns indexes on the classpath only and that these
 	 * indexes are consistent.)
 	 * NOTE: Returning true gains 20% of a hierarchy build on Object
 	 */
 	return true;
 }
 public boolean encloses(String resourcePathString) {
 	/*A workspace scope encloses all resources (this assumes that the index selector
 	 * and thus enclosingProjectAndJars() returns indexes on the classpath only and that these
 	 * indexes are consistent.)
 	 * NOTE: Returning true gains 20% of a hierarchy build on Object
 	 */
 	return true;
 }
 /* (non-Javadoc)
  * @see org.eclipse.jdt.core.search.IJavaSearchScope#enclosingProjectsAndJars()
  */
 public IPath[] enclosingProjectsAndJars() {
 	IPath[] result = this.;
 	if (result != null) {
 		return result;
 	}
 	long start = . ? System.currentTimeMillis() : -1;
 	try {
 		IJavaProject[] projects = JavaModelManager.getJavaModelManager().getJavaModel().getJavaProjects();
 		// use a linked set to preserve the order during search: see bug 348507
 		Set paths = new LinkedHashSet(projects.length * 2);
 		for (int i = 0, length = projects.lengthi < lengthi++) {
 			JavaProject javaProject = (JavaProjectprojects[i];
 
 			// Add project full path
 			IPath projectPath = javaProject.getProject().getFullPath();
 			paths.add(projectPath);
 		}
 
 		// add the project source paths first in a separate loop above
 		// to ensure source files always get higher precedence during search.
 		// see bug 348507
 
 		for (int i = 0, length = projects.lengthi < lengthi++) {
 			JavaProject javaProject = (JavaProjectprojects[i];
 
 			// Add project libraries paths
 			IClasspathEntry[] entries = javaProject.getResolvedClasspath();
 			for (int j = 0, eLength = entries.lengthj < eLengthj++) {
 				IClasspathEntry entry = entries[j];
 				if (entry.getEntryKind() == .) {
 					IPath path = entry.getPath();
 					Object target = JavaModel.getTarget(pathfalse/*don't check existence*/);
					if (target instanceof IFolder) // case of an external folder
						path = ((IFolder) target).getFullPath();
					paths.add(entry.getPath());
				}
			}
		}
		result = new IPath[paths.size()];
		paths.toArray(result);
		return this. = result;
catch (JavaModelException e) {
		Util.log(e"Exception while computing workspace scope's enclosing projects and jars"); //$NON-NLS-1$
		return new IPath[0];
finally {
			long time = System.currentTimeMillis() - start;
			int length = result == null ? 0 : result.length;
			Util.verbose("JavaWorkspaceScope.enclosingProjectsAndJars: "+length+" paths computed in "+time+"ms."); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
		}
	}
public boolean equals(Object o) {
  return o == this// use the singleton pattern
public AccessRuleSet getAccessRuleSet(String relativePathString containerPath) {
	// Do not consider access rules on workspace scope
	return null;
public int hashCode() {

See also:
AbstractJavaSearchScope.packageFragmentRoot(String, int, String)
public IPackageFragmentRoot packageFragmentRoot(String resourcePathStringint jarSeparatorIndexString jarPath) {
	HashMap rootInfos = JavaModelManager.getDeltaState().;
	DeltaProcessor.RootInfo rootInfo = null;
	if (jarPath != null) {
		IPath path = new Path(jarPath);
		rootInfo = (DeltaProcessor.RootInforootInfos.get(path);
else {
		IPath path = new Path(resourcePathString);
		if (ExternalFoldersManager.isInternalPathForExternalFolder(path)) {
			IResource resource = JavaModel.getWorkspaceTarget(path.uptoSegment(2/*linked folders for external folders are always of size 2*/));
			if (resource != null)
				rootInfo = (DeltaProcessor.RootInforootInfos.get(resource.getLocation());
else {
			rootInfo = (DeltaProcessor.RootInforootInfos.get(path);
			while (rootInfo == null && path.segmentCount() > 0) {
				path = path.removeLastSegments(1);
				rootInfo = (DeltaProcessor.RootInforootInfos.get(path);
			}
		}
	}
	if (rootInfo == null)
		return null;
	return rootInfo.getPackageFragmentRoot(null/*no resource hint*/);
public void processDelta(IJavaElementDelta deltaint eventType) {
	if (this. == nullreturn;
	IJavaElement element = delta.getElement();
	switch (element.getElementType()) {
			IJavaElementDelta[] children = delta.getAffectedChildren();
			for (int i = 0, length = children.lengthi < lengthi++) {
				IJavaElementDelta child = children[i];
				processDelta(childeventType);
			}
			break;
			int kind = delta.getKind();
			switch (kind) {
					this. = null;
					break;
					int flags = delta.getFlags();
					if ((flags & .) != 0
							|| (flags & .) != 0) {
						this. = null;
else {
						children = delta.getAffectedChildren();
						for (int i = 0, length = children.lengthi < lengthi++) {
							IJavaElementDelta child = children[i];
							processDelta(childeventType);
						}
					}
					break;
			}
			break;
			kind = delta.getKind();
			switch (kind) {
					this. = null;
					break;
					int flags = delta.getFlags();
						this. = null;
					}
					break;
			}
			break;
	}
public String toString() {
	StringBuffer result = new StringBuffer("JavaWorkspaceScope on "); //$NON-NLS-1$
	IPath[] paths = enclosingProjectsAndJars();
	int length = paths == null ? 0 : paths.length;
	if (length == 0) {
		result.append("[empty scope]"); //$NON-NLS-1$
else {
		result.append("["); //$NON-NLS-1$
		for (int i = 0; i < lengthi++) {
			result.append("\n\t"); //$NON-NLS-1$
			result.append(paths[i]);
		}
		result.append("\n]"); //$NON-NLS-1$
	}
	return result.toString();
New to GrepCode? Check out our FAQ X