Copyright (c) 2000, 2010 IBM Corporation and others. This program and the accompanying materials are made available under the terms of the Eclipse Public License 2.0 which accompanies this distribution, and is available at https://www.eclipse.org/legal/epl-2.0/ SPDX-License-Identifier: EPL-2.0 Contributors: IBM Corporation - initial API and implementation
/******************************************************************************* * Copyright (c) 2000, 2010 IBM Corporation and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 * which accompanies this distribution, and is available at * https://www.eclipse.org/legal/epl-2.0/ * * SPDX-License-Identifier: EPL-2.0 * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/
package org.eclipse.core.filebuffers; import java.io.File; import java.net.URI; import org.osgi.framework.Bundle; import org.eclipse.core.filesystem.EFS; import org.eclipse.core.filesystem.IFileStore; import org.eclipse.core.internal.filebuffers.FileBuffersPlugin; import org.eclipse.core.internal.filebuffers.ResourceTextFileBufferManager; import org.eclipse.core.internal.filebuffers.TextFileBufferManager; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.Platform; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IWorkspaceRoot; import org.eclipse.core.resources.ResourcesPlugin;
Facade for the file buffers plug-in. Provides access to the text file buffer manager and helper methods for location handling. This facade is available independent from the activation status of the file buffers plug-in.

This class must not be used by clients that do not want to require org.eclipse.core.resources. Use ITextFileBufferManager.DEFAULT to get the default text file buffer manager.

Since:3.0
@noinstantiateThis class is not intended to be instantiated by clients.
/** * Facade for the file buffers plug-in. Provides access to the text file buffer * manager and helper methods for location handling. This facade is available * independent from the activation status of the file buffers plug-in. * <p> * This class must not be used by clients that do not want to require * <code>org.eclipse.core.resources</code>. Use <code>ITextFileBufferManager.DEFAULT</code> * to get the default text file buffer manager. * </p> * * @since 3.0 * @noinstantiate This class is not intended to be instantiated by clients. */
public final class FileBuffers {
The workspace root.
Since:3.3
/** * The workspace root. * @since 3.3 */
private static final IWorkspaceRoot WORKSPACE_ROOT= ResourcesPlugin.getWorkspace().getRoot();
Cannot be instantiated.
/** * Cannot be instantiated. */
private FileBuffers() { }
File buffer plug-in ID (value "org.eclipse.core.filebuffers").
Since:3.3.
/** * File buffer plug-in ID * (value <code>"org.eclipse.core.filebuffers"</code>). * * @since 3.3. */
public static final String PLUGIN_ID= FileBuffersPlugin.PLUGIN_ID;
Returns the text file buffer manager. May return null if the file buffers plug-in is not active. This is, for example, the case when the method is called on plug-in shutdown.

Use ITextFileBufferManager.DEFAULT to get the default text file buffer manager if you do not want to depend on org.eclipse.core.resources.

Returns:the text file buffer manager or null
/** * Returns the text file buffer manager. May return <code>null</code> if * the file buffers plug-in is not active. This is, for example, the * case when the method is called on plug-in shutdown. * <p> * Use <code>ITextFileBufferManager.DEFAULT</code> to get the default text * file buffer manager if you do not want to depend on * <code>org.eclipse.core.resources</code>. * </p> * * @return the text file buffer manager or <code>null</code> */
public static ITextFileBufferManager getTextFileBufferManager() { FileBuffersPlugin plugin= FileBuffersPlugin.getDefault(); return plugin != null ? plugin.getFileBufferManager() : null; }
Creates and returns an unshared text file buffer manager.
Returns:the text file buffer manager or null
Since:3.4
/** * Creates and returns an <em>unshared</em> text file buffer manager. * * @return the text file buffer manager or <code>null</code> * @since 3.4 */
public static ITextFileBufferManager createTextFileBufferManager() { Bundle resourcesBundle= Platform.getBundle("org.eclipse.core.resources"); //$NON-NLS-1$ if (resourcesBundle != null) return new ResourceTextFileBufferManager(); return new TextFileBufferManager(); }
Returns the workspace file at the given location if such a file exists.
Params:
  • location – the location
Returns:the workspace file at the location or null if no such file exists or if the location is not a valid location
/** * Returns the workspace file at the given location if such a file exists. * * @param location the location * @return the workspace file at the location or <code>null</code> if no such file exists or if * the location is not a valid location */
public static IFile getWorkspaceFileAtLocation(IPath location) { return getWorkspaceFileAtLocation(location, false); }
Returns the workspace file at the given location if such a file exists.
Params:
  • location – the location
  • isNormalized – true if the given location is already normalized
Returns:the workspace file at the location or null if no such file exists or if the location is not a valid location
Since:3.3
/** * Returns the workspace file at the given location if such a file exists. * * @param location the location * @param isNormalized <code>true</code> if the given location is already normalized * @return the workspace file at the location or <code>null</code> if no such file exists or if * the location is not a valid location * @since 3.3 */
public static IFile getWorkspaceFileAtLocation(IPath location, boolean isNormalized) { IPath normalized; if (isNormalized) normalized= location; else normalized= normalizeLocation(location); if (normalized.segmentCount() >= 2) { // @see IContainer#getFile for the required number of segments IFile file= WORKSPACE_ROOT.getFile(normalized); if (file != null && file.exists()) return file; } return null; }
Returns the normalized form of the given path or location.

The normalized form is defined as follows:

  • Existing Workspace Files: For a path or location for which there exists a workspace file, the normalized form is that file's workspace relative, absolute path as returned by IFile.getFullPath().
  • Non-existing Workspace Files: For a path to a non-existing workspace file, the normalized form is the absolute form of the path.
  • External Files: For a location for which there exists no workspace file, the normalized form is the absolute form of the location.
Params:
  • pathOrLocation – the path or location to be normalized
Returns:the normalized form of pathOrLocation
/** * Returns the normalized form of the given path or location. * <p> * The normalized form is defined as follows: * </p> * <ul> * <li><b>Existing Workspace Files:</b> For a path or location for * which there * {@link org.eclipse.core.resources.IContainer#exists(org.eclipse.core.runtime.IPath) exists} * a workspace file, the normalized form is that file's workspace * relative, absolute path as returned by * {@link IFile#getFullPath()}.</li> * <li><b>Non-existing Workspace Files:</b> For a path to a * non-existing workspace file, the normalized form is the * {@link IPath#makeAbsolute() absolute} form of the path.</li> * <li><b>External Files:</b> For a location for which there * exists no workspace file, the normalized form is the * {@link IPath#makeAbsolute() absolute} form of the location.</li> * </ul> * * @param pathOrLocation the path or location to be normalized * @return the normalized form of <code>pathOrLocation</code> */
public static IPath normalizeLocation(IPath pathOrLocation) { // existing workspace resources - this is the 93% case if (WORKSPACE_ROOT.exists(pathOrLocation)) return pathOrLocation.makeAbsolute(); IFile file= WORKSPACE_ROOT.getFileForLocation(pathOrLocation); // existing workspace resources referenced by their file system path // files that do not exist (including non-accessible files) do not pass if (file != null && file.exists()) return file.getFullPath(); // non-existing resources and external files return pathOrLocation.makeAbsolute(); }
Returns the file in the local file system for the given location.

The location is either a full path of a workspace resource or an absolute path in the local file system.

Params:
  • location – the location
Returns:the IFileStore in the local file system for the given location
Since:3.2
/** * Returns the file in the local file system for the given location. * <p> * The location is either a full path of a workspace resource or an * absolute path in the local file system. * </p> * * @param location the location * @return the {@link IFileStore} in the local file system for the given location * @since 3.2 */
public static IFileStore getFileStoreAtLocation(IPath location) { if (location == null) return null; IFile file= getWorkspaceFileAtLocation(location); try { if (file != null) { URI uri= file.getLocationURI(); if (uri == null) return null; return EFS.getStore(uri); } } catch (CoreException e) { //fall through and assume it is a local file } return EFS.getLocalFileSystem().getStore(location); }
Returns the file in the local file system for the given location.

The location is either a full path of a workspace resource or an absolute path in the local file system.

Params:
  • location – the location
Returns:the File in the local file system for the given location
Deprecated:As of 3.2, replaced by getFileStoreAtLocation(IPath)
/** * Returns the file in the local file system for the given location. * <p> * The location is either a full path of a workspace resource or an * absolute path in the local file system. * </p> * * @param location the location * @return the {@link File} in the local file system for the given location * @deprecated As of 3.2, replaced by {@link #getFileStoreAtLocation(IPath)} */
@Deprecated public static File getSystemFileAtLocation(IPath location) { IFileStore store= getFileStoreAtLocation(location); if (store != null) { try { return store.toLocalFile(EFS.NONE, null); } catch (CoreException e) { return null; } } return null; } }