Package org.eclipse.handly.model.impl

## Interface IWorkingCopyCallback

- All Known Implementing Classes:
    `DefaultWorkingCopyCallback`, `WorkingCopyCallback`, `XtextWorkingCopyCallback`

      public interface IWorkingCopyCallback

  Receives notifications related to the lifecycle of a working copy and intercepts calls related to reconciling of the working copy.
  See Also:
    `ISourceFileImplExtension.WORKING_COPY_CALLBACK`

- - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `boolean` | `needsReconciling()` | Returns whether the working copy needs reconciling, i.e., its buffer has been modified since the last time it was reconciled.
    `void` | `onDispose()` | Informs this callback that the working copy has been disposed.
    `void` | `onInit​(IWorkingCopyInfo info)` | Informs this callback about the working copy it will work on.
    `void` | `reconcile​(IContext context, org.eclipse.core.runtime.IProgressMonitor monitor)` | Reconciles the working copy.

- - ### Method Detail

    - #### onInit

          void onInit​(IWorkingCopyInfo info)
               throws org.eclipse.core.runtime.CoreException

      Informs this callback about the working copy it will work on. This method is called before any other method and marks the start of the callback's lifecycle.

      Clients should not call this method (the model implementation calls it at appropriate times).

      Parameters:
        `info` - the working copy info (never `null`)
      Throws:
        `org.eclipse.core.runtime.CoreException` - if this callback was not initialized successfully

    - #### onDispose

          void onDispose()

      Informs this callback that the working copy has been disposed. This is the last method called on the callback and marks the end of the callback's lifecycle.

      Clients should not call this method (the model implementation calls it at appropriate times).

    - #### needsReconciling

          boolean needsReconciling()

      Returns whether the working copy needs reconciling, i.e., its buffer has been modified since the last time it was reconciled.

      Clients should not call this method (the model implementation calls it at appropriate times).

      Returns:
        `true` if the working copy needs reconciling, and `false` otherwise

    - #### reconcile

          void reconcile​(IContext context,
                         org.eclipse.core.runtime.IProgressMonitor monitor)
                  throws org.eclipse.core.runtime.CoreException

      Reconciles the working copy.

      Clients should not call this method (the model implementation calls it at appropriate times).

      Implementations are encouraged to support the following standard options, which may be specified in the given context:

      - `FORCE_RECONCILING` - Indicates whether reconciling has to be performed even if the working copy buffer has not been modified since the last time the working copy was reconciled.

      An implementation of this method is supposed to invoke the working copy's `reconcile strategy` by calling its `reconcile` method with an appropriately augmented context while providing the necessary synchronization guarantees.

      Parameters:
        `context` - the operation context (never `null`)
        `monitor` - a progress monitor, or `null` if progress reporting is not desired. The caller must not rely on `IProgressMonitor.done()` having been called by the receiver
      Throws:
        `org.eclipse.core.runtime.CoreException` - if the working copy could not be reconciled
        `org.eclipse.core.runtime.OperationCanceledException` - if this method is canceled