diff options
Diffstat (limited to 'common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/SimpleJavaResourceLocator.java')
-rw-r--r-- | common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/SimpleJavaResourceLocator.java | 216 |
1 files changed, 0 insertions, 216 deletions
diff --git a/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/SimpleJavaResourceLocator.java b/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/SimpleJavaResourceLocator.java deleted file mode 100644 index a409df8da8..0000000000 --- a/common/plugins/org.eclipse.jpt.common.core/src/org/eclipse/jpt/common/core/internal/resource/SimpleJavaResourceLocator.java +++ /dev/null @@ -1,216 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2010, 2012 Oracle. 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: - * Oracle - initial API and implementation - *******************************************************************************/ -package org.eclipse.jpt.common.core.internal.resource; - -import org.eclipse.core.resources.IContainer; -import org.eclipse.core.resources.IFile; -import org.eclipse.core.resources.IFolder; -import org.eclipse.core.resources.IProject; -import org.eclipse.core.runtime.IPath; -import org.eclipse.core.runtime.Path; -import org.eclipse.jdt.core.IJavaProject; -import org.eclipse.jdt.core.IPackageFragmentRoot; -import org.eclipse.jdt.core.JavaCore; -import org.eclipse.jdt.core.JavaModelException; -import org.eclipse.jpt.common.core.JptCommonCorePlugin; -import org.eclipse.jpt.common.core.internal.utility.PlatformTools; -import org.eclipse.jpt.common.core.resource.ResourceLocator; -import org.eclipse.jpt.common.utility.Filter; -import org.eclipse.jpt.common.utility.internal.Transformer; -import org.eclipse.jpt.common.utility.internal.iterables.ArrayIterable; -import org.eclipse.jpt.common.utility.internal.iterables.FilteringIterable; -import org.eclipse.jpt.common.utility.internal.iterables.TransformationIterable; -import org.eclipse.jst.j2ee.internal.J2EEConstants; - -public class SimpleJavaResourceLocator - implements ResourceLocator -{ - protected static final IPath META_INF_PATH = new Path(J2EEConstants.META_INF); - - /** - * Return whether the specified container is either:<ul> - * <li>on the corresponding Java project's classpath; or - * <li>in the non-Java resources, but not in the project output location - * </ul> - */ - public boolean resourceLocationIsValid(IProject project, IContainer container) { - try { - return this.resourceLocationIsValid_(project, container); - } catch (JavaModelException ex) { - JptCommonCorePlugin.log(ex); - // happens if the Java project does not exist - return false; - } - } - - protected boolean resourceLocationIsValid_(IProject project, IContainer container) throws JavaModelException { - IJavaProject javaProject = this.getJavaProject(project); - if (javaProject.isOnClasspath(container)) { - return true; - } - - IPath outputPath = javaProject.getOutputLocation(); - IPath containerPath = container.getFullPath(); - if (container.equals(project) && outputPath.isPrefixOf(containerPath)) { - return true; - } - - if (outputPath.isPrefixOf(containerPath)) { - return false; - } - for (Object resource : javaProject.getNonJavaResources()) { - if (resource instanceof IFolder) { - IFolder folder = (IFolder) resource; - if (folder.getFullPath().isPrefixOf(containerPath)) { - return true; - } - } - } - - return false; - } - - /** - * Return the default resource location for the specified project:<ul> - * <li>the first package fragment root (source folder) <code>META-INF</code> - * folder if it exists; or - * <li>the project rooted <code>META-INF</code> folder if it exists; or - * <li>the non-existent <code>META-INF</code> folder in the first package - * fragment root (source folder) - * </ul> - */ - public IContainer getDefaultResourceLocation(IProject project) { - try { - return this.getDefaultResourceLocation_(project); - } catch (Exception ex) { - JptCommonCorePlugin.log(ex); - // happens if the Java project does not exist or there is a problem with the - // Java resources - return null; - } - } - - protected IContainer getDefaultResourceLocation_(IProject project) throws JavaModelException { - IContainer defaultLocation = null; - for (IContainer sourceFolder : this.getSourceFolders(project)) { - IFolder metaInfFolder = sourceFolder.getFolder(META_INF_PATH); - if (metaInfFolder.exists()) { - return metaInfFolder; - } - if (defaultLocation == null) { - // save the first one, to use if none found - defaultLocation = metaInfFolder; - } - } - IFolder metaInfFolder = project.getFolder(META_INF_PATH); - if (metaInfFolder.exists()) { - return metaInfFolder; - } - return defaultLocation; - } - - public IPath getResourcePath(IProject project, IPath runtimePath) { - try { - return this.getResourcePath_(project, runtimePath); - } catch (Exception ex) { - JptCommonCorePlugin.log(ex); - return null; - } - } - - protected IPath getResourcePath_(IProject project, IPath runtimePath) throws JavaModelException { - IPath defaultResourcePath = null; - for (IContainer sourceFolder : this.getSourceFolders(project)) { - IPath resourcePath = sourceFolder.getFullPath().append(runtimePath); - IFile file = project.getWorkspace().getRoot().getFile(resourcePath); - if (file.exists()) { - return file.getFullPath(); - } - if (defaultResourcePath == null) { - // save the first one, to use if none found - defaultResourcePath = resourcePath; - } - } - return defaultResourcePath; - } - - public IPath getRuntimePath(IProject project, IPath resourcePath) { - try { - return this.getRuntimePath_(project, resourcePath); - } catch (Exception ex) { - JptCommonCorePlugin.log(ex); - return resourcePath.makeRelativeTo(project.getFullPath()); - } - } - - protected IPath getRuntimePath_(IProject project, IPath resourcePath) throws JavaModelException { - IFile file = PlatformTools.getFile(resourcePath); - for (IContainer sourceFolder : this.getSourceFolders(project)) { - if (sourceFolder.contains(file)) { - return resourcePath.makeRelativeTo(sourceFolder.getFullPath()); - } - } - return resourcePath.makeRelativeTo(project.getFullPath()); - } - - protected Iterable<IContainer> getSourceFolders(IProject project) throws JavaModelException { - return new TransformationIterable<IPackageFragmentRoot, IContainer>(this.getSourcePackageFragmentRoots(project), ROOT_CONTAINER_TRANSFORMER); - } - - protected static final Transformer<IPackageFragmentRoot, IContainer> ROOT_CONTAINER_TRANSFORMER = new RootContainerTransformer(); - - protected static class RootContainerTransformer - implements Transformer<IPackageFragmentRoot, IContainer> - { - public IContainer transform(IPackageFragmentRoot pfr) { - try { - return this.transform_(pfr); - } catch (JavaModelException ex) { - throw new RuntimeException(ex); - } - } - protected IContainer transform_(IPackageFragmentRoot pfr) throws JavaModelException { - return (IContainer) pfr.getUnderlyingResource(); - } - } - - protected Iterable<IPackageFragmentRoot> getSourcePackageFragmentRoots(IProject project) throws JavaModelException { - return new FilteringIterable<IPackageFragmentRoot>(this.getPackageFragmentRoots(project), SOURCE_ROOT_FILTER); - } - - protected static final Filter<IPackageFragmentRoot> SOURCE_ROOT_FILTER = new SourceRootFilter(); - - protected static class SourceRootFilter - implements Filter<IPackageFragmentRoot> - { - public boolean accept(IPackageFragmentRoot pfr) { - try { - return this.accept_(pfr); - } catch (JavaModelException ex) { - throw new RuntimeException(ex); - } - } - protected boolean accept_(IPackageFragmentRoot pfr) throws JavaModelException { - return pfr.getKind() == IPackageFragmentRoot.K_SOURCE; - } - } - - protected Iterable<IPackageFragmentRoot> getPackageFragmentRoots(IProject project) throws JavaModelException { - return new ArrayIterable<IPackageFragmentRoot>(this.getPackageFragmentRootsArray(project)); - } - - protected IPackageFragmentRoot[] getPackageFragmentRootsArray(IProject project) throws JavaModelException { - return this.getJavaProject(project).getPackageFragmentRoots(); - } - - protected IJavaProject getJavaProject(IProject project) { - return JavaCore.create(project); - } -} |