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

## Class ISourceFileImplSupport.NotifyingReconcileOperation

- java.lang.Object
- - org.eclipse.handly.model.impl.support.ISourceFileImplSupport.ReconcileOperation
  - - org.eclipse.handly.model.impl.support.ISourceFileImplSupport.NotifyingReconcileOperation

- Enclosing interface:
    ISourceFileImplSupport

      public static class ISourceFileImplSupport.NotifyingReconcileOperation
      extends ISourceFileImplSupport.ReconcileOperation

  Reconciles a working copy and sends out a delta notification indicating the nature of the change of the working copy since the last time it was reconciled. Uses the notification manager registered in the model context.

  This class or a subclass of this class are not intended to be used by clients for purposes other than extension or instance creation; instances of this class or a subclass of this class are not intended to be used by clients for purposes other than returning from an implementation of `ISourceFileImplSupport.getReconcileOperation_()`.

  See Also:
    `INotificationManager`

- - ### Field Summary

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

      `sourceFile`

  - ### Constructor Summary

    Constructors
    Modifier | Constructor | Description
    --- | --- | ---
    `protected` | `NotifyingReconcileOperation​(ISourceFileImplSupport sourceFile)` | Constructs a notifying reconcile operation for the given source file.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `protected ElementChangeRecorder` | `newChangeRecorder()` | Returns a new instance of element change recorder for this operation.
    `protected void` | `reconcile​(IContext context, org.eclipse.core.runtime.IProgressMonitor monitor)` | Reconciles the working copy according to options specified in the given context.
    `protected boolean` | `shouldNotifyChange​(IContext context)` | Returns whether the delta notification is needed according to options specified in the given context.

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

      `isInitialReconcile, isReconcilingForced, reconcileStructure, shouldReconcileStructure`

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

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

- - ### Constructor Detail

    - #### NotifyingReconcileOperation

          protected NotifyingReconcileOperation​(ISourceFileImplSupport sourceFile)

      Constructs a notifying reconcile operation for the given source file.
      Parameters:
        `sourceFile` - not `null`

  - ### Method Detail

    - #### reconcile

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

      Reconciles the working copy according to options specified in the given context.

      The following context options, if simultaneously present, must be mutually consistent:

      - `ISourceFileImplSupport.SOURCE_AST` - Specifies the AST to use when reconciling. The AST is safe to read in the dynamic context of this method call, but must not be modified.
      - `ISourceFileImplSupport.SOURCE_CONTENTS` - Specifies the source string to use when reconciling.

      At least one of `SOURCE_AST` or `SOURCE_CONTENTS` must have a non-null value in the given context.

      The given context may provide additional data that this method can use, including the following:

      - `ISourceFileImplSupport.SOURCE_SNAPSHOT` - Specifies the source snapshot from which `SOURCE_AST` was created or `SOURCE_CONTENTS` was obtained. The snapshot may expire.

      Subclasses may override this method, but must make sure to call the super implementation.

      This implementation calls `reconcileStructure` if, and only if, `shouldReconcileStructure` returns `true`.

      If `shouldReconcileStructure` returns `true`, this implementation invokes `reconcileStructure`, builds the resulting delta using an element `change recorder`, and sends out a `POST_RECONCILE` event using the notification manager registered in the model context.

      Since 1.1, no delta will be built and no event will be sent by this implementation if `shouldNotifyChange` returns `false`.

      Overrides:
        `reconcile` in class `ISourceFileImplSupport.ReconcileOperation`
      Parameters:
        `context` - the operation context (not `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

    - #### shouldNotifyChange

          protected boolean shouldNotifyChange​(IContext context)

      Returns whether the delta notification is needed according to options specified in the given context. If this method returns `false`, no delta will be built and no event will be sent.

      Note that if you override `shouldReconcileStructure`, you might need to override this method too.

      Parameters:
        `context` - the operation context (not `null`)
      Returns:
        `true` if the delta notification is needed, and `false` otherwise
      Since:
        1.1
      See Also:
        `reconcile(IContext, IProgressMonitor)`, `ISourceFileImplSupport.ReconcileOperation.shouldReconcileStructure(IContext)`

    - #### newChangeRecorder

          protected ElementChangeRecorder newChangeRecorder()

      Returns a new instance of element change recorder for this operation.
      Returns:
        a new instance of element change recorder (never `null`)