diff options
Diffstat (limited to 'bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/util/FacetModuleCoreSupport.java')
-rw-r--r-- | bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/util/FacetModuleCoreSupport.java | 229 |
1 files changed, 0 insertions, 229 deletions
diff --git a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/util/FacetModuleCoreSupport.java b/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/util/FacetModuleCoreSupport.java deleted file mode 100644 index 775d9b1a61..0000000000 --- a/bundles/org.eclipse.jst.jsp.core/src/org/eclipse/jst/jsp/core/internal/util/FacetModuleCoreSupport.java +++ /dev/null @@ -1,229 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2007 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 - *******************************************************************************/ -package org.eclipse.jst.jsp.core.internal.util; - -import org.eclipse.core.filebuffers.FileBuffers; -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.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; - -/** - * This class encapsulates any used Module Core and Facets APIs along with - * fallbacks for use on non-compliant projects and when those services are not - * available at runtime. - * - * Because ModuleCore API calls can result in locks needing to be acquired, - * none of these methods should be called while other thread locks have - * already been acquired. - */ -public final class FacetModuleCoreSupport { - static final boolean _dump_NCDFE = false; - private static final String WEB_INF = "WEB-INF"; //$NON-NLS-1$ - private static final IPath WEB_INF_PATH = new Path(WEB_INF); - - /** - * @param project - * @return the computed IPath to the "root" of the web contents, either from facet knowledge or hueristics, or null if one can not be determined - */ - public static IPath computeWebContentRootPath(IPath path) { - IPath root = null; - try { - root = FacetModuleCoreSupportDelegate.getWebContentRootPath(ResourcesPlugin.getWorkspace().getRoot().getProject(path.segment(0))); - } - catch (NoClassDefFoundError e) { - if (_dump_NCDFE) - e.printStackTrace(); - } - if(root == null) { - /* - * https://bugs.eclipse.org/bugs/show_bug.cgi?id=213245 - * - * NPE in JSPTaglibDirectiveContentAssistProcessor with - * non-faceted project - */ - root = getLocalRoot(path); - } - return root; - } - - /** - * @param project - * @return -1 if the project does not have the JST Web facet, the version - * number of it otherwise - * @throws org.eclipse.core.runtime.CoreException - */ - public static float getDynamicWebProjectVersion(IProject project) { - // In the absence of any facet information, assume the highest level - float version = 2.5f; - try { - version = FacetModuleCoreSupportDelegate.getDynamicWebProjectVersion(project); - } - catch (NoClassDefFoundError e) { - if (_dump_NCDFE) - e.printStackTrace(); - } - return version; - } - - /** - * @param project - * @return the IPath to the "root" of the web contents - */ - public static IPath getWebContentRootPath(IProject project) { - if (project == null) - return null; - - IPath path = null; - try { - path = FacetModuleCoreSupportDelegate.getWebContentRootPath(project); - } - catch (NoClassDefFoundError e) { - if (_dump_NCDFE) - e.printStackTrace(); - } - return path; - } - - public static IPath getRuntimePath(IPath path) { - IPath result = null; - try { - result = FacetModuleCoreSupportDelegate.getRuntimePath(path); - } - catch (NoClassDefFoundError e) { - if (_dump_NCDFE) - e.printStackTrace(); - } - if (result == null) { - IPath root = getLocalRoot(path); - result = path.removeFirstSegments(root.segmentCount()).makeAbsolute(); - } - return result; - } - - /** - * @param project - * @return - * @throws CoreException - */ - public static boolean isDynamicWebProject(IProject project) { - if (project == null) - return false; - - try { - return FacetModuleCoreSupportDelegate.isDynamicWebProject(project); - } - catch (NoClassDefFoundError e) { - if (_dump_NCDFE) - e.printStackTrace(); - } - return true; - } - - /** - * @param basePath - - * the full path to a resource within the workspace - * @param reference - - * the reference string to resolve - * @return - the full path within the workspace that corresponds to the - * given reference according to the virtual pathing support - */ - public static IPath resolve(IPath basePath, String reference) { - IPath resolvedPath = null; - try { - resolvedPath = FacetModuleCoreSupportDelegate.resolve(basePath, reference); - } - catch (NoClassDefFoundError e) { - if (_dump_NCDFE) - e.printStackTrace(); - } - - if (resolvedPath == null) { - IPath rootPath = getLocalRoot(basePath); - if (reference.startsWith(Path.ROOT.toString())) { - resolvedPath = rootPath.append(reference); - } - else { - resolvedPath = basePath.removeLastSegments(1).append(reference); - } - } - - return resolvedPath; - } - - /** - * @param basePath - * @return the applicable Web context root path, if one exists - */ - private static IPath getLocalRoot(IPath basePath) { - IWorkspaceRoot workspaceRoot = ResourcesPlugin.getWorkspace().getRoot(); - - // existing workspace resources - this is the 93% case - IResource file = FileBuffers.getWorkspaceFileAtLocation(basePath); - - // Try the base path as a folder first - if (file == null && basePath.segmentCount() > 1) { - file = workspaceRoot.getFolder(basePath); - } - // If not a folder, then try base path as a file - if (file != null && !file.exists() && basePath.segmentCount() > 1) { - file = workspaceRoot.getFile(basePath); - } - - if (file == null && basePath.segmentCount() == 1) { - file = workspaceRoot.getProject(basePath.segment(0)); - } - - if (file == null) { - /* - * https://bugs.eclipse.org/bugs/show_bug.cgi?id=116529 - * - * This method produces a less accurate result, but doesn't - * require that the file exist yet. - */ - IFile[] files = ResourcesPlugin.getWorkspace().getRoot().findFilesForLocation(basePath); - if (files.length > 0) - file = files[0]; - } - - while (file != null) { - /** - * Treat any parent folder with a WEB-INF subfolder as a web-app - * root - */ - IContainer folder = null; - if ((file.getType() & IResource.FOLDER) != 0) { - folder = (IContainer) file; - } - else { - folder = file.getParent(); - } - // getFolder on a workspace root must use a full path, skip - if (folder != null && (folder.getType() & IResource.ROOT) == 0) { - IFolder webinf = folder.getFolder(WEB_INF_PATH); - if (webinf != null && webinf.exists()) { - return folder.getFullPath(); - } - } - file = file.getParent(); - } - - return basePath.uptoSegment(1); - } - - -} |