public @CheckForNull CauseOfBlockage getCauseOfBlockage(BuildableItem item) {
            Node node = getNode();
            if (node == null) {
                return CauseOfBlockage.fromMessage(Messages._Queue_node_has_been_removed_from_configuration(executor.getOwner().getDisplayName()));
            }
            CauseOfBlockage reason = node.canTake(item);
            if (reason != null) {
                return reason;
            }
            for (QueueTaskDispatcher d : QueueTaskDispatcher.all()) {
                reason = d.canTake(node, item);
                if (reason != null) {
                    return reason;
                }
            }
            // inlining isAvailable:
            if (workUnit != null) { // unlikely in practice (should not have even found this executor if so)
                return CauseOfBlockage.fromMessage(Messages._Queue_executor_slot_already_in_use());
            }
            if (executor.getOwner().isOffline()) {
                return new CauseOfBlockage.BecauseNodeIsOffline(node);
            }
            if (!executor.getOwner().isAcceptingTasks()) { // Node.canTake (above) does not consider RetentionStrategy.isAcceptingTasks
                return new CauseOfBlockage.BecauseNodeIsNotAcceptingTasks(node);
            }
            return null;
        }
public @ CheckForNull CauseOfBlockage getCauseOfBlockage ( BuildableItem item ) { Node node = getNode ( ) ; if ( node == null ) { return CauseOfBlockage . fromMessage ( Messages . _Queue_node_has_been_removed_from_configuration ( executor . getOwner ( ) . getDisplayName ( ) ) ) ; } CauseOfBlockage reason = node . canTake ( item ) ; if ( reason != null ) { return reason ; } for ( QueueTaskDispatcher d : QueueTaskDispatcher . all ( ) ) { reason = d . canTake ( node , item ) ; if ( reason != null ) { return reason ; } } if ( workUnit != null ) { return CauseOfBlockage . fromMessage ( Messages . _Queue_executor_slot_already_in_use ( ) ) ; } if ( executor . getOwner ( ) . isOffline ( ) ) { return new CauseOfBlockage . BecauseNodeIsOffline ( node ) ; } if ( ! executor . getOwner ( ) . isAcceptingTasks ( ) ) { return new CauseOfBlockage . BecauseNodeIsNotAcceptingTasks ( node ) ; } return null ; }
Checks whether the {@link Executor} represented by this object is capable of executing the given task.
@return a reason why it cannot, or null if it could
@since 2.37