org.eclipse.cdt.core

## Class EFSExtensionProvider

- java.lang.Object
- - org.eclipse.cdt.core.EFSExtensionProvider

    public abstract class EFSExtensionProvider
    extends Object

Abstract class providing the basis for supplementary support classes that can extract meaningful information from and provide useful operations on EFS file-systems. This allows for operations that can operate on virtual EFS file-systems (where IFileStores are just links to other IFileStores), or that operate on the physical file backed by an IFileStore, without having to know the implementation details of a given EFS file-system. Provides a default implementation that assumes that URIs for the given file-system map directly to resources in the physical file-system, and that the path component of the URI is a direct representation of the absolute path to the file in the physical file-system. Clients wishing to support a file-system with different behavior should extend this class and override its methods where appropriate. Clients should not typically call methods on this class or its descendants directly. Instead, they should call the appropriate method in FileSystemUtilityManager so that said manager can properly route calls to the proper utility, depending on the file-system. EXPERIMENTAL. This class or interface has been added to CDT 7.0 as part of a work in progress. There is no guarantee that this API will work or that it will remain the same. Please do not use this API without consulting with the CDT team.

Since:
  5.2

### Constructor Summary

Constructors
Constructor and Description
`EFSExtensionProvider()`

### Method Summary

All Methods Instance Methods Concrete Methods
`URI` `append(URI baseURI, String extension)` Creates a new URI with the same components as the baseURI, except that calling getPathFromURI() on the new URI will return a path that has the extension appended to the path returned by baseURI.getPathFromURI() The default implementation assumes that the path component of the URI is used to store the path.
`URI` `createNewURIFromPath(URI locationOnSameFilesystem, String path)` Creates a new URI which clones the contents of the original URI, but with the path replaced by the given absolute path, such that calling getPathFromURI() on the returned URI will return the given path.
`URI` `getLinkedURI(URI locationURI)` In the case of a virtual file-system, where URIs in the given file-system are just soft links in EFS to URIs in other file-systems, returns the URI that this URI links to.
`String` `getMappedPath(URI locationURI)` For file-systems that map the path to a physical file in one file-system (say on a remote machine) to another path (say, on the local machine), this method returns the path that the store maps to.
`String` `getPathFromURI(URI locationURI)` If the EFS store represented by locationURI is backed by a physical file, gets the path corresponding to the underlying file as the operating system on hosting machine would see it.
`boolean` `isVirtual(URI locationURI)` Returns true if the given URI is part of a virtual file-system and thus points to another underlying URI.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Constructor Detail

#### EFSExtensionProvider

    public EFSExtensionProvider()

### Method Detail

#### getPathFromURI

    public String getPathFromURI(URI locationURI)

If the EFS store represented by locationURI is backed by a physical file, gets the path corresponding to the underlying file as the operating system on hosting machine would see it. In the future, it would be better if EFS had an API for this.

Parameters:
  `locationURI` -
Returns:
  String representing the path, or `null` if there is an error or if there is no such physical file.

#### getLinkedURI

    public URI getLinkedURI(URI locationURI)

In the case of a virtual file-system, where URIs in the given file-system are just soft links in EFS to URIs in other file-systems, returns the URI that this URI links to. If the file-system is not virtual, then this method acts as an identity mapping.

Parameters:
  `locationURI` -
Returns:
  A URI corresponding to the linked store, or `null` on error.

#### createNewURIFromPath

    public URI createNewURIFromPath(URI locationOnSameFilesystem,
                                    String path)

Creates a new URI which clones the contents of the original URI, but with the path replaced by the given absolute path, such that calling getPathFromURI() on the returned URI will return the given path. Returns null on error. The default implementation places the path in the path field of the URI, ensuring that there is a leading slash. It also determines whether or not to convert backslashes in the provided path based on whether or not the local operating system's file separator is a backslash, thus ensuring proper behaviour for URIs corresponding to the local file-system.

Parameters:
  `locationOnSameFilesystem` -
  `path` - An absolute path.
Returns:
  URI

#### getMappedPath

    public String getMappedPath(URI locationURI)

For file-systems that map the path to a physical file in one file-system (say on a remote machine) to another path (say, on the local machine), this method returns the path that the store maps to. I.e., it returns the path that the path returned by getPathFromURI(URI locationURI) maps to. If there is no such mapping, then an identity mapping of the paths is assumed. Typically if a file-system maps one file-system to another, it will place the mapped path in the path field of its URIs (which the default implementation assumes), but this is not guaranteed to be so for all file-system implementations.

Returns:
  String representing the path, or `null` on error.

#### isVirtual

    public boolean isVirtual(URI locationURI)

Returns true if the given URI is part of a virtual file-system and thus points to another underlying URI. Returns false otherwise. By default, file-systems are assumed to be non-virtual.

Parameters:
  `locationURI` -
Returns:
  boolean

#### append

    public URI append(URI baseURI,
                      String extension)

Creates a new URI with the same components as the baseURI, except that calling getPathFromURI() on the new URI will return a path that has the extension appended to the path returned by baseURI.getPathFromURI() The default implementation assumes that the path component of the URI is used to store the path.

Parameters:
  `baseURI` -
  `extension` -
Returns:
  the new URI, or `null` on error.