Class AbstractDebugCommand

    • Constructor Detail

      • AbstractDebugCommand

        public AbstractDebugCommand()
    • Method Detail

      • execute

        public boolean execute​(IDebugCommandRequest request)
        Description copied from interface: IDebugCommandHandler
        Executes this command on the elements specified in the given request reporting status to the given request and returns whether this handler should remain enabled while the command is executing.

        Implementations must be non-blocking and may respond asynchronously to the given request. Errors can reported by setting an appropriate status on the given request. A request can be canceled by this handler or the caller. A null status is equivalent to an OK status. When a request is complete, has encountered an error, or canceled, implementations must call done() on the given collector.

        Handlers are expected to poll the request (using isCanceled) periodically and abort at their earliest convenience calling done() on the request.

        Specified by:
        execute in interface IDebugCommandHandler
        Parameters:
        request - specifies elements to operate on and collects execution status
        Returns:
        whether this handler remains enabled while command is executing
      • isRemainEnabled

        protected boolean isRemainEnabled​(IDebugCommandRequest request)
        Returns whether this command should remain enabled after starting execution of the specified request.
        Parameters:
        request - the request being executed
        Returns:
        whether to remain enabled while executing the request
      • canExecute

        public void canExecute​(IEnabledStateRequest request)
        Description copied from interface: IDebugCommandHandler
        Determines whether this handler can execute on the elements specified in the given request by reporting enabled state to the request.

        Implementations must be non-blocking and may respond asynchronously to the given request. Errors can reported by setting an appropriate status on the given request. A request can be canceled by this handler or caller. A null status is equivalent to an OK status. When a request succeeds, fails, or is canceled, implementations must call done() on the given request.

        Clients are expected to poll the request (using isCanceled) periodically and abort at their earliest convenience calling done() on the request.

        Specified by:
        canExecute in interface IDebugCommandHandler
        Parameters:
        request - specifies elements to operate on and collects enabled state
      • getEnabledStateTaskName

        protected String getEnabledStateTaskName()
        Returns the name to use for a job and progress monitor task names when performing an IEnabledStateRequest.
        Returns:
        task name
      • getExecuteTaskName

        protected String getExecuteTaskName()
        Returns the name to use for jobs and progress monitor task names when executing an IDebugCommandRequest.
        Returns:
        task name
      • doExecute

        protected abstract void doExecute​(Object[] targets,
                                          IProgressMonitor monitor,
                                          IRequest request)
                                   throws CoreException
        Executes this command synchronously on the specified targets, reporting progress. This method is called by a job. If an exception is thrown, the calling job will set the associated status on the request object. The calling job also calls #done() on the request object after this method is called, and sets a cancel status on the progress monitor if the request is canceled.

        Handlers must override this method.

        Parameters:
        targets - objects to perform this command on
        monitor - progress monitor
        request - can be used to cancel this command
        Throws:
        CoreException - if this handler fails to perform the request
      • isExecutable

        protected abstract boolean isExecutable​(Object[] targets,
                                                IProgressMonitor monitor,
                                                IEnabledStateRequest request)
                                         throws CoreException
        Returns whether this command is executable on the specified targets, reporting progress. This method is called by a job. If an exception is thrown, the calling job will set the associated status on the request object and report that this command is not enabled. The calling job also calls #done() on the request object after this method is called, and sets a cancel status on the progress monitor if the request is canceled. Enabled state is set to false if the request is canceled.

        Handlers must override this method.

        Parameters:
        targets - objects to check command enabled state for
        monitor - progress monitor
        request - can be used to cancel this update request
        Returns:
        whether this command can be executed for the given targets
        Throws:
        CoreException - if a problem is encountered
      • getAdapter

        protected Object getAdapter​(Object element,
                                    Class<?> type)
        Convenience method to return an adapter of the specified type for the given object or null if none.
        Parameters:
        element - element to retrieve adapter for
        type - adapter type
        Returns:
        adapter or null
      • getEnabledStateSchedulingRule

        protected ISchedulingRule getEnabledStateSchedulingRule​(IDebugCommandRequest request)
        Returns a scheduling rule for this command's IEnabledStateRequest update job or null if none. By default a rule is created to serialize jobs on the first element in the request.

        Clients may override this method as required.

        Parameters:
        request - request that a scheduling rule is required for
        Returns:
        scheduling rule or null
      • getExecuteSchedulingRule

        protected ISchedulingRule getExecuteSchedulingRule​(IDebugCommandRequest request)
        Returns a scheduling rule for this command's IDebugCommandRequest execute job or null if none. By default, execution jobs have no scheduling rule.

        Clients may override this method as required.

        Parameters:
        request - request that a scheduling rule is required for
        Returns:
        scheduling rule or null
      • getEnabledStateJobFamily

        protected Object getEnabledStateJobFamily​(IDebugCommandRequest request)
        Returns the job family for the this command's IEnabledStateRequest update job or null if none. The default implementation returns null.

        Clients may override this method as required.

        Parameters:
        request - request the job family is required for
        Returns:
        job family object or null if none
      • getExecuteJobFamily

        protected Object getExecuteJobFamily​(IDebugCommandRequest request)
        Returns the job family for the this command's IDebugCommandRequest execute job or null if none. The default implementation returns null.

        Clients may override this method as required.

        Parameters:
        request - request the job family is required for
        Returns:
        job family object or null if none