All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.jobrunr.server.runner.BackgroundJobWithIocRunner Maven / Gradle / Ivy

package org.jobrunr.server.runner;

import org.jobrunr.jobs.Job;
import org.jobrunr.jobs.JobDetails;
import org.jobrunr.server.JobActivator;

import static org.jobrunr.utils.reflection.ReflectionUtils.toClass;

public class BackgroundJobWithIocRunner extends AbstractBackgroundJobRunner {

    private final JobActivator jobActivator;

    public BackgroundJobWithIocRunner(JobActivator jobActivator) {
        this.jobActivator = jobActivator;
    }

    @Override
    public boolean supports(Job job) {
        if (jobActivator == null) return false;
        JobDetails jobDetails = job.getJobDetails();
        return !jobDetails.hasStaticFieldName() && jobActivator.activateJob(toClass(jobDetails.getClassName())) != null;
    }

    @Override
    protected BackgroundJobWorker getBackgroundJobWorker(Job job) {
        return new BackgroundForIoCJobLambdaWorker(jobActivator, job);
    }

    protected static class BackgroundForIoCJobLambdaWorker extends BackgroundJobWorker {

        private final JobActivator jobActivator;

        public BackgroundForIoCJobLambdaWorker(JobActivator jobActivator, Job job) {
            super(job);
            this.jobActivator = jobActivator;
        }

        @Override
        protected Object getJobToPerform(Class jobToPerformClass) {
            return jobActivator.activateJob(jobToPerformClass);
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy