From b0b5a432ac44b66ba9eece1d776ae16b0b075330 Mon Sep 17 00:00:00 2001 From: Cheng Wang <107727158+chengw-netflix@users.noreply.github.com> Date: Mon, 24 Apr 2023 09:31:36 -0700 Subject: [PATCH] Change the interface of PriamScheduler (#1049) Change the interface of PriamScheduler --- .../com/netflix/priam/scheduler/GuiceJobFactory.java | 9 ++++++--- .../com/netflix/priam/scheduler/PriamJobFactory.java | 10 ++++++++++ .../com/netflix/priam/scheduler/PriamScheduler.java | 10 +++++----- 3 files changed, 21 insertions(+), 8 deletions(-) create mode 100644 priam/src/main/java/com/netflix/priam/scheduler/PriamJobFactory.java diff --git a/priam/src/main/java/com/netflix/priam/scheduler/GuiceJobFactory.java b/priam/src/main/java/com/netflix/priam/scheduler/GuiceJobFactory.java index 06041b308..6fd259dca 100644 --- a/priam/src/main/java/com/netflix/priam/scheduler/GuiceJobFactory.java +++ b/priam/src/main/java/com/netflix/priam/scheduler/GuiceJobFactory.java @@ -22,10 +22,9 @@ import org.quartz.JobDetail; import org.quartz.Scheduler; import org.quartz.SchedulerException; -import org.quartz.spi.JobFactory; import org.quartz.spi.TriggerFiredBundle; -public class GuiceJobFactory implements JobFactory { +public class GuiceJobFactory implements PriamJobFactory { public final Injector guice; @Inject @@ -36,7 +35,11 @@ public GuiceJobFactory(Injector guice) { @Override public Job newJob(TriggerFiredBundle bundle, Scheduler scheduler) throws SchedulerException { JobDetail jobDetail = bundle.getJobDetail(); - Class jobClass = jobDetail.getJobClass(); + return newJob((Class) jobDetail.getJobClass()); + } + + @Override + public Job newJob(Class jobClass) { Job job = (Job) guice.getInstance(jobClass); guice.injectMembers(job); return job; diff --git a/priam/src/main/java/com/netflix/priam/scheduler/PriamJobFactory.java b/priam/src/main/java/com/netflix/priam/scheduler/PriamJobFactory.java new file mode 100644 index 000000000..ad3a0b982 --- /dev/null +++ b/priam/src/main/java/com/netflix/priam/scheduler/PriamJobFactory.java @@ -0,0 +1,10 @@ +package com.netflix.priam.scheduler; + +import com.google.inject.ImplementedBy; +import org.quartz.Job; +import org.quartz.spi.JobFactory; + +@ImplementedBy(GuiceJobFactory.class) +public interface PriamJobFactory extends JobFactory { + Job newJob(Class jobClass); +} diff --git a/priam/src/main/java/com/netflix/priam/scheduler/PriamScheduler.java b/priam/src/main/java/com/netflix/priam/scheduler/PriamScheduler.java index 573f3a2fc..f8165bcb2 100644 --- a/priam/src/main/java/com/netflix/priam/scheduler/PriamScheduler.java +++ b/priam/src/main/java/com/netflix/priam/scheduler/PriamScheduler.java @@ -29,15 +29,15 @@ public class PriamScheduler { private static final Logger logger = LoggerFactory.getLogger(PriamScheduler.class); private final Scheduler scheduler; - private final GuiceJobFactory jobFactory; + private final PriamJobFactory jobProvider; private final Sleeper sleeper; @Inject - public PriamScheduler(SchedulerFactory factory, GuiceJobFactory jobFactory, Sleeper sleeper) { + public PriamScheduler(SchedulerFactory factory, PriamJobFactory jobProvider, Sleeper sleeper) { try { this.scheduler = factory.getScheduler(); - this.scheduler.setJobFactory(jobFactory); - this.jobFactory = jobFactory; + this.scheduler.setJobFactory(jobProvider); + this.jobProvider = jobProvider; } catch (SchedulerException e) { throw new RuntimeException(e); } @@ -100,7 +100,7 @@ public void addTaskWithDelay( } public void runTaskNow(Class taskclass) throws Exception { - jobFactory.guice.getInstance(taskclass).execute(null); + jobProvider.newJob(taskclass).execute(null); } public void deleteTask(String name) throws SchedulerException {