Package org.eclipse.handly.model.impl.support

## Class BaseSourceFile

- java.lang.Object
- - org.eclipse.core.runtime.PlatformObject
  - - org.eclipse.handly.model.impl.support.Element
    - - org.eclipse.handly.model.impl.support.SourceFile
      - - org.eclipse.handly.model.impl.support.BaseSourceFile

- All Implemented Interfaces:
    `org.eclipse.core.runtime.IAdaptable`, `IElement`, `IElementImpl`, `IElementImplExtension`, `ISourceElementImpl`, `ISourceFileImpl`, `ISourceFileImplExtension`, `IElementImplSupport`, `IModelManager.Provider`, `ISourceElementImplSupport`, `ISourceFileImplSupport`, `ISourceElement`, `ISourceFile`

      public abstract class BaseSourceFile
      extends SourceFile

  Provides a skeletal implementation of `ISourceFileImplExtension` for source files that can have an underlying file in the workspace or outside the workspace. This class is just an implementation convenience. Clients might as well implement a source file by extending `SourceFile` or implementing ("mixing in") `ISourceFileImplSupport` directly if extending this class is not possible/desirable for some reason.
  Since:
    1.3
  See Also:
    `WorkspaceSourceFile`, `FsSourceFile`

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from interface org.eclipse.handly.model.impl.IElementImplExtension

      `IElementImplExtension.CloseHint`

    - ### Nested classes/interfaces inherited from interface org.eclipse.handly.model.impl.support.ISourceFileImplSupport

      `ISourceFileImplSupport.NotifyingReconcileOperation, ISourceFileImplSupport.ReconcileOperation`

  - ### Field Summary

    - ### Fields inherited from interface org.eclipse.handly.model.impl.IElementImplExtension

      `CLOSE_HINT, FORCE_OPEN`

    - ### Fields inherited from interface org.eclipse.handly.model.impl.support.IElementImplSupport

      `NEW_ELEMENTS, NO_BODY`

    - ### Fields inherited from interface org.eclipse.handly.model.impl.ISourceFileImplExtension

      `WORKING_COPY_BUFFER, WORKING_COPY_CALLBACK, WORKING_COPY_CONTEXT`

    - ### Fields inherited from interface org.eclipse.handly.model.impl.support.ISourceFileImplSupport

      `SOURCE_AST, SOURCE_CONTENTS, SOURCE_SNAPSHOT`

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `BaseSourceFile​(IElement parent, java.lang.String name)` | Constructs a handle for a source file with the given parent element and the given name.
    `BaseSourceFile​(IElement parent, java.net.URI locationUri)` | Constructs a handle for a source file with the given parent element and the given file system location URI.
    `BaseSourceFile​(IElement parent, org.eclipse.core.resources.IFile file)` | Constructs a handle for a source file with the given parent element and the given underlying `IFile`.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `org.eclipse.core.resources.IFile` | `getFile_()` | Returns the underlying `IFile`, or `null` if this source file has no underlying file in the workspace.
    `java.lang.Object` | `getFileObject_()` | Returns the underlying file object, if any.
    `java.net.URI` | `getLocationUri_()` | Returns a file system location for this element.
    `org.eclipse.core.resources.IResource` | `getResource_()` | Returns the innermost resource enclosing this element, or `null` if this element is not enclosed in a workspace resource.

    - ### Methods inherited from class org.eclipse.handly.model.impl.support.Element

      `equals, getName_, getParent_, hashCode, toString`

    - ### Methods inherited from class org.eclipse.core.runtime.PlatformObject

      `getAdapter`

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

      `clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

    - ### Methods inherited from interface org.eclipse.handly.model.IElement

      `equals, hashCode`

    - ### Methods inherited from interface org.eclipse.handly.model.impl.IElementImpl

      `equalsAndSameParentChain_, fetchChildren_, fetchChildrenOfType_, getChildrenOfType_, getHandleMemento_, getName_, getParent_, getRoot_, toDisplayString_`

    - ### Methods inherited from interface org.eclipse.handly.model.impl.IElementImplExtension

      `close_, getBody_, getBody_, getChildren_`

    - ### Methods inherited from interface org.eclipse.handly.model.impl.support.IElementImplSupport

      `canEqual_, exists_, findBody_, getChildrenFromBody_, getElementManager_, getModel_, isOpenable_, newDoesNotExistException_, open_, peekAtBody_, remove_, removing_, toString_, toStringAncestors_, toStringBody_, toStringChildren_`

    - ### Methods inherited from interface org.eclipse.handly.model.impl.support.IModelManager.Provider

      `getModelManager_`

    - ### Methods inherited from interface org.eclipse.handly.model.impl.support.ISourceElementImplSupport

      `getSourceElementAt_, getSourceElementAt_, getSourceElementInfo_`

    - ### Methods inherited from interface org.eclipse.handly.model.impl.ISourceFileImpl

      `getFileStore_`

    - ### Methods inherited from interface org.eclipse.handly.model.impl.support.ISourceFileImplSupport

      `acquireExistingWorkingCopy_, becomeWorkingCopy_, buildSourceStructure_, buildStructure_, close_, defaultEquals_, defaultHashCode_, fileExists_, getBuffer_, getFileBuffer_, getFileSnapshotProvider_, getReconcileOperation_, getWorkingCopyContext_, isWorkingCopy_, needsReconciling_, newWorkingCopyContext_, openParent_, reconcile_, releaseWorkingCopy_, toStringName_, validateExistence_, workingCopyModeChanged_`

- - ### Constructor Detail

    - #### BaseSourceFile

          public BaseSourceFile​(IElement parent,
                                org.eclipse.core.resources.IFile file)

      Constructs a handle for a source file with the given parent element and the given underlying `IFile`.
      Parameters:
        `parent` - the parent of the element, or `null` if the element has no parent
        `file` - the underlying `IFile` (not `null`)

    - #### BaseSourceFile

          public BaseSourceFile​(IElement parent,
                                java.net.URI locationUri)

      Constructs a handle for a source file with the given parent element and the given file system location URI. The URI must be suitable to passing to `EFS.getStore(URI)`. This constructor is intended to be used for source files that have an underlying `IFileStore` outside the workspace.
      Parameters:
        `parent` - the parent of the element, or `null` if the element has no parent
        `locationUri` - a file system location URI (not `null`)

    - #### BaseSourceFile

          public BaseSourceFile​(IElement parent,
                                java.lang.String name)

      Constructs a handle for a source file with the given parent element and the given name. This constructor is intended to be used for source files that have no underlying file object.
      Parameters:
        `parent` - the parent of the element, or `null` if the element has no parent
        `name` - the name of the element, or `null` if the element has no name
      See Also:
        `SourceFile(IElement, String)`

  - ### Method Detail

    - #### getFileObject_

          public java.lang.Object getFileObject_()

      Description copied from interface: `ISourceFileImplSupport`
      Returns the underlying file object, if any. The relationship between a source file and its underlying file object does not change.

      This implementation returns the underlying `IFile`, if any. If there is no underlying `IFile`, this implementation returns the corresponding `IFileStore` (if any), on the assumption that the relationship between this source file and the file store does not change.

      Returns:
        the underlying file object, or `null` if none
      See Also:
        `ISourceFileImpl.getFile_()`, `ISourceFileImpl.getFileStore_()`

    - #### getResource_

          public org.eclipse.core.resources.IResource getResource_()

      Description copied from interface: `IElementImpl`
      Returns the innermost resource enclosing this element, or `null` if this element is not enclosed in a workspace resource. This is a handle-only method.

      Note that it is safe to call this method and test the return value for `null` even when `org.eclipse.core.resources` bundle is not available.

      Since 1.3, this method is no longer abstract. The default implementation always returns `null`.

      Returns:
        the innermost resource enclosing this element, or `null` if this element is not enclosed in a workspace resource

    - #### getFile_

          public org.eclipse.core.resources.IFile getFile_()

      Description copied from interface: `ISourceFileImpl`
      Returns the underlying `IFile`, or `null` if this source file has no underlying file in the workspace. This is a handle-only method.

      This method returns the same value as `IElementImpl.getResource_()`, but saves a downcast.

      Returns:
        the underlying `IFile`, or `null` if this source file has no underlying file in the workspace

    - #### getLocationUri_

          public java.net.URI getLocationUri_()

      Description copied from interface: `IElementImpl`
      Returns a file system location for this element. The resulting URI is suitable to passing to `EFS.getStore(URI)`. Returns `null` if no location can be determined.
      Returns:
        a file system location for this element, or `null` if no location can be determined