public AnalysisResultFuture run() {
        try {
            // the injection manager is job scoped
            final InjectionManager injectionManager = _configuration.getEnvironment().getInjectionManagerFactory()
                    .getInjectionManager(_configuration, _job);

            final LifeCycleHelper rowProcessingLifeCycleHelper =
                    new LifeCycleHelper(injectionManager, _includeNonDistributedTasks);

            final RowProcessingPublishers publishers =
                    new RowProcessingPublishers(_job, _analysisListener, _errorAware, _taskRunner,
                            rowProcessingLifeCycleHelper);

            final AnalysisJobMetrics analysisJobMetrics = publishers.getAnalysisJobMetrics();

            // A task listener that will register either succesfull executions
            // or unexpected errors (which will be delegated to the
            // errorListener)
            final JobCompletionTaskListener jobCompletionTaskListener =
                    new JobCompletionTaskListener(analysisJobMetrics, _analysisListener, 1);

            _analysisListener.jobBegin(_job, analysisJobMetrics);

            validateSingleTableInput(_job);

            // at this point we are done validating the job, it will run.
            scheduleRowProcessing(publishers, rowProcessingLifeCycleHelper, jobCompletionTaskListener,
                    analysisJobMetrics);

            return new AnalysisResultFutureImpl(_resultQueue, jobCompletionTaskListener, _errorAware);
        } catch (final RuntimeException e) {
            _analysisListener.errorUnknown(_job, e);
            throw e;
        }

    }
public AnalysisResultFuture run ( ) { try { final InjectionManager injectionManager = _configuration . getEnvironment ( ) . getInjectionManagerFactory ( ) . getInjectionManager ( _configuration , _job ) ; final LifeCycleHelper rowProcessingLifeCycleHelper = new LifeCycleHelper ( injectionManager , _includeNonDistributedTasks ) ; final RowProcessingPublishers publishers = new RowProcessingPublishers ( _job , _analysisListener , _errorAware , _taskRunner , rowProcessingLifeCycleHelper ) ; final AnalysisJobMetrics analysisJobMetrics = publishers . getAnalysisJobMetrics ( ) ; final JobCompletionTaskListener jobCompletionTaskListener = new JobCompletionTaskListener ( analysisJobMetrics , _analysisListener , 1 ) ; _analysisListener . jobBegin ( _job , analysisJobMetrics ) ; validateSingleTableInput ( _job ) ; scheduleRowProcessing ( publishers , rowProcessingLifeCycleHelper , jobCompletionTaskListener , analysisJobMetrics ) ; return new AnalysisResultFutureImpl ( _resultQueue , jobCompletionTaskListener , _errorAware ) ; } catch ( final RuntimeException e ) { _analysisListener . errorUnknown ( _job , e ) ; throw e ; } }
Runs the job

@return