Class WorkspaceModifyOperation

  • All Implemented Interfaces:
    IRunnableWithProgress, IThreadListener
    Direct Known Subclasses:
    ImportOperation, WorkspaceModifyDelegatingOperation

    public abstract class WorkspaceModifyOperation
    extends Object
    implements IRunnableWithProgress, IThreadListener
    An operation which potentially makes changes to the workspace. All resource modification should be performed using this operation. The primary consequence of using this operation is that events which typically occur as a result of workspace changes (such as the firing of resource deltas, performance of autobuilds, etc.) are generally deferred until the outermost operation has successfully completed. The platform may still decide to broadcast periodic resource change notifications during the scope of the operation if the operation runs for a long time or another thread modifies the workspace concurrently.

    If a scheduling rule is provided, the operation will obtain that scheduling rule for the duration of its execute method. If no scheduling rule is provided, the operation will obtain a scheduling rule that locks the entire workspace for the duration of the operation.

    Subclasses must implement execute to do the work of the operation.

    See Also:
    ISchedulingRule, IWorkspace.run(ICoreRunnable, IProgressMonitor)
    • Constructor Detail

      • WorkspaceModifyOperation

        protected WorkspaceModifyOperation()
        Creates a new operation.
      • WorkspaceModifyOperation

        protected WorkspaceModifyOperation​(ISchedulingRule rule)
        Creates a new operation that will run using the provided scheduling rule.
        Parameters:
        rule - The ISchedulingRule to use or null.
        Since:
        3.0
    • Method Detail

      • execute

        protected abstract void execute​(IProgressMonitor monitor)
                                 throws CoreException,
                                        InvocationTargetException,
                                        InterruptedException
        Performs the steps that are to be treated as a single logical workspace change.

        Subclasses must implement this method.

        Parameters:
        monitor - the progress monitor to use to display progress and field user requests to cancel
        Throws:
        CoreException - if the operation fails due to a CoreException
        InvocationTargetException - if the operation fails due to an exception other than CoreException
        InterruptedException - if the operation detects a request to cancel, using IProgressMonitor.isCanceled(), it should exit by throwing InterruptedException. It is also possible to throw OperationCanceledException, which gets mapped to InterruptedException by the run method.
      • threadChange

        public void threadChange​(Thread thread)
        Description copied from interface: IThreadListener
        Notification that a thread change is occurring.
        Specified by:
        threadChange in interface IThreadListener
        Parameters:
        thread - The new thread
      • getRule

        public ISchedulingRule getRule()
        The scheduling rule. Should not be modified.
        Returns:
        the scheduling rule, or null.
        Since:
        3.4