diff options
Diffstat (limited to 'org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/containers/ContainerSourceContainer.java')
-rw-r--r-- | org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/containers/ContainerSourceContainer.java | 209 |
1 files changed, 0 insertions, 209 deletions
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/containers/ContainerSourceContainer.java b/org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/containers/ContainerSourceContainer.java deleted file mode 100644 index fc9ea661b..000000000 --- a/org.eclipse.debug.core/core/org/eclipse/debug/core/sourcelookup/containers/ContainerSourceContainer.java +++ /dev/null @@ -1,209 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2003, 2009 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 - * QNX Software Systems - Mikhail Khodjaiants - Bug 80857 - *******************************************************************************/ -package org.eclipse.debug.core.sourcelookup.containers; - -import java.net.URI; -import java.util.ArrayList; -import java.util.List; - -import org.eclipse.core.filesystem.EFS; -import org.eclipse.core.filesystem.IFileStore; -import org.eclipse.core.resources.IContainer; -import org.eclipse.core.resources.IFile; -import org.eclipse.core.resources.IFolder; -import org.eclipse.core.resources.IResource; -import org.eclipse.core.resources.IWorkspaceRoot; -import org.eclipse.core.resources.ResourcesPlugin; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IPath; -import org.eclipse.core.runtime.Path; -import org.eclipse.debug.core.sourcelookup.ISourceContainer; - -/** - * A source container for a container in the workspace. Source elements are searched - * for within this container and optionally nested containers. - * <p> - * Names specified in <code>findSourceElements</code> method can - * be simple or qualified. When a name is qualified, a file will - * be searched for relative to this container, and optionally - * nested containers. - * </p> - * @since 3.2 - * @noextend This class is not intended to be subclassed by clients. - */ -public abstract class ContainerSourceContainer extends CompositeSourceContainer { - - private IContainer fContainer = null; - private boolean fSubfolders = false; - - private URI fRootURI = null; - private IFileStore fRootFile = null; - private IWorkspaceRoot fRoot = null; - - /** - * Constructs a source container on the given workspace container. - * - * @param container the container to search for source in - * @param subfolders whether nested folders should be searched - * for source elements - */ - public ContainerSourceContainer(IContainer container, boolean subfolders) { - fContainer = container; - fSubfolders = subfolders; - fRootURI = fContainer.getLocationURI(); - if (fRootURI != null) { - try { - fRootFile = EFS.getStore(fRootURI); - } catch (CoreException e) { - } - fRoot = ResourcesPlugin.getWorkspace().getRoot(); - } - } - - /** - * Returns the workspace container this source container is - * rooted at. - * - * @return the workspace container this source container is - * rooted at - */ - public IContainer getContainer() { - return fContainer; - } - - /* (non-Javadoc) - * @see org.eclipse.debug.internal.core.sourcelookup.ISourceContainer#findSourceElements(java.lang.String) - */ - public Object[] findSourceElements(String name) throws CoreException { - ArrayList sources = new ArrayList(); - - // An IllegalArgumentException is thrown from the "getFile" method - // if the path created by appending the file name to the container - // path doesn't conform with Eclipse resource restrictions. - // To prevent the interruption of the search procedure we check - // if the path is valid before passing it to "getFile". - if ( validateFile(name) ) { - IFile file = fContainer.getFile(new Path(name)); - if (file.exists()) { - sources.add(file); - } else { - // See bug 82627 - perform case insensitive source lookup - if (fRootURI == null) { - return EMPTY; - } - // See bug 98090 - we need to handle relative path names - IFileStore target = fRootFile.getFileStore(new Path(name)); - if (target.fetchInfo().exists()) { - // We no longer have to account for bug 95832, and URIs take care - // of canonical paths (fix to bug 95679 was removed). - IFile[] files = fRoot.findFilesForLocationURI(target.toURI()); - if (isFindDuplicates() && files.length > 1) { - for (int i = 0; i < files.length; i++) { - sources.add(files[i]); - } - } else if (files.length > 0) { - sources.add(files[0]); - } - } - } - } - - //check sub-folders - if ((isFindDuplicates() && fSubfolders) || (sources.isEmpty() && fSubfolders)) { - ISourceContainer[] containers = getSourceContainers(); - for (int i=0; i < containers.length; i++) { - Object[] objects = containers[i].findSourceElements(name); - if (objects == null || objects.length == 0) { - continue; - } - if (isFindDuplicates()) { - for(int j=0; j < objects.length; j++) - sources.add(objects[j]); - } else { - sources.add(objects[0]); - break; - } - } - } - - if(sources.isEmpty()) - return EMPTY; - return sources.toArray(); - } - - /* (non-Javadoc) - * @see org.eclipse.debug.internal.core.sourcelookup.ISourceContainer#getName() - */ - public String getName() { - return getContainer().getName(); - } - - /* (non-Javadoc) - * @see java.lang.Object#equals(java.lang.Object) - */ - public boolean equals(Object obj) { - if (obj != null && obj instanceof ContainerSourceContainer) { - ContainerSourceContainer loc = (ContainerSourceContainer) obj; - return loc.getContainer().equals(getContainer()); - } - return false; - } - - /* (non-Javadoc) - * @see java.lang.Object#hashCode() - */ - public int hashCode() { - return getContainer().hashCode(); - } - - /* (non-Javadoc) - * @see org.eclipse.debug.internal.core.sourcelookup.ISourceContainer#isComposite() - */ - public boolean isComposite() { - return fSubfolders; - } - - /* (non-Javadoc) - * @see org.eclipse.debug.internal.core.sourcelookup.containers.CompositeSourceContainer#createSourceContainers() - */ - protected ISourceContainer[] createSourceContainers() throws CoreException { - if(fSubfolders) { - IResource[] resources = getContainer().members(); - List list = new ArrayList(resources.length); - for (int i = 0; i < resources.length; i++) { - IResource resource = resources[i]; - if (resource.getType() == IResource.FOLDER) { - list.add(new FolderSourceContainer((IFolder)resource, fSubfolders)); - } - } - ISourceContainer[] containers = (ISourceContainer[]) list.toArray(new ISourceContainer[list.size()]); - for (int i = 0; i < containers.length; i++) { - ISourceContainer container = containers[i]; - container.init(getDirector()); - } - return containers; - } - return new ISourceContainer[0]; - } - - /** - * Validates the given string as a path for a file in this container. - * - * @param name path name - */ - private boolean validateFile(String name) { - IContainer container = getContainer(); - IPath path = container.getFullPath().append(name); - return ResourcesPlugin.getWorkspace().validatePath(path.toOSString(), IResource.FILE).isOK(); - } - -} |